os-utilities in OS & Utilities Channel,
Written by: Miguel Esquirol on Jul 5 2011, 2:04pm

Teach yourself to program

We are entering the summer, the perfect time to improve yourself, you could go running or swimming, you could learn a new foreign language or perhaps you could learn to program. Self-learning is not as hard as it sounds, and it’s much easier than self-learning Spanish or French. There are really wonderful sources to start learning these new languages, understanding the concept behind programming and giving it a try with some interesting problems.

Basic Programming



To learn a new programming language, it’s much easier if you already know the concepts because you can start learning the new structures in no time. If you have never programmed before, the best you can do is start with some basic concepts that every language will use, like Variables and Operators.

  • Programming Concepts : This is a brief tutorial for new programmers from the City University of New York. It gives you a nice range of basic examples, with specific expressions in different languages.
  • Learn to Code: From Lifehacker, this is the collection of several basic courses with a wide range or concepts. From Variables to Functions and Arrays.
  • Introducing to Computer Science and Programming: More professional and traditional looking. These are the MIT undergrad courses with Video Lectures and Transcripts.
  • Land of Code Quiz: In this site you'll find many different courses, but this Quiz will be a good starting point to see how you are right now.


Learning a Language


Whether you already know some programming languages or you are moving forward, you should choose a language to work with. There are many languages, some of them are really complicated and others are quite simple to learn, you should give several different languages a try or choose according to what you need. There is an interesting discussion on which language programs you should learn.

  • HTML: This is not a software language but a Web Language, together with PHP and Javascript, this language will let you create websites from scratch and help you understand how a website actually works. This language is really simple to learn and quite useful.
  • Python: Is a high-level language and seems to be the most interesting to learn because you can start doing real work quite quickly. The language has a syntax that is clean and easy-to-understand.
  • Ruby: This is a dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write, and is considered one of the simplest languages to learn.
  • C++: Is a low-level and powerful language. It is the star of language programs and normally is the one used in universities to teach students.
  • Java: This program is one of the widely used object-oriented programming languages. Java applications run on Windows, Mac OS X, Linux, and Solaris, and many other operating systems. It’s the most predominant and popular general purpose programming language and most of the biggest companies use it as their main programming language.

You have to remember that like any language, a computer language can be quite complex for beginners, but if you organize the content and start learning bit by bit it will become simpler, and once you have learned one, the next one will be much easier.

Learning HTML

Via Cyanide and Happiness

HTML is quite a simple language that doesn't use variables or operations. You only need to start programming a text editor and a browser. After you know the basic instructions on HTML you should also learn CSS, the language that tells your browser, what the content is going to look like.

  • W3 Schoolhas one of the simplest tutorials to learn HTML. It goes from the simplest web page to the most advanced topics. It also has CSS XML and Javascript tutorials.
  • HTML Dog has a nice tutorial with best practices. It also teaches CSS for beginners
  • Your HTML Source is a simple manual to start creating your own site.
  • Writing HTML is a tutorial that exists in many languages (including French and Spanish) and even comes in a handy PDF download.
  • HTML5 Tutorial: For the next step in HTML evolution we also have a nice HTML5 tutorial that starts with the more basic and goes to the more complex content.


Learning Python

via XKCD

Being a high-level software language, this may look a little more challenging than learning HTML, but it can be done. This is perhaps the best language to start with.



Via Why's Poignant guide to Ruby

  • Ruby in Twenty Minutes is a tutorial that claims you'll be “speakin” in Ruby after half an hour. Of course you won't be able to do everything, but it’s a nice starting point to this pretty language.
  • Ruby Tutorial: Another nice and short tutorial, with a lot of examples.
  • Try Ruby: In this site you can try Ruby in your own browser, very basic but handy to have around.
  • Programming Ruby: This tutorial is intend to see a pragmatic programmer's Guide. For an early version, it’s a good start.
  • Ruby on Rails is a basic and advanced course.
  • More Tutorials according to the author, these are the best 12 Ruby on Rails Tutorials.
  • Why's (Poignant Guide to Ruby) Exactly what it says, with the above comic in it.

Learning C++


  • Getting Started with C/C++ is a cut to the chase tutorial.
  • Programming Tutorials has a nice collection of tutorials organized by levels with quizzes to pass levels.
  • C plus plus is a collection of tutorials that explain the C++ language from its basics to the newest features of ANSI-C++.
  • XoaX.net features an incredible collection of videos to learn C++.
  • Video Tutorials features many interesting YouTube channels to learn the language.
  • Thinking in C++ is a Free Electronic Book Volume 1 & Volume 2


Learning Java

Via: Geek and Pole


Via: Dilbert

No matter what the language you are learning, there will be one point when you want to start facing some real problems to use your new skills. Project Euler is a series of challenging mathematical/computer programming problems that will require more than just mathematical insights to solve.