Dienstag, 28. Mai 2013

Introductory programming courses: an overview

I' ve been taking some free online computer science courses for beginners lately. I guess acquiring some programming skills are an advantage even if you do things completely unrelated to it for living. First, it can help you structure your thinking. Second, it can help you outsource some repetitive tasks you perform to a program :) Third, it can just be a lot of fun. So I think more people could be interested in taking such courses, so I prepared a short overview of what I have seen so far. 

So...


Taking Learn to Program: The Fundamentals is how I got into this whole activity. This course teaches basic programming concepts using a programming language called Python. The instructors explain everything so clearly that it is impossible to not understand what is going on - that's exactly what you need when you are a beginner! There is also a follow-up course by the same authors after you finish the first one. The follow-up course is also quite nice, but I find it could have been larger and could have included more excercises.


If you are into interactive stuff, there is another great course. It also uses Python and teaches some key concepts of interactive programming. The assignments for this course include buiding a game "rock, paper, scissors, lizard, Spock", pong and asteroids. And believe me, this course is very entertaining :) As for its suitability for beginners: I guess, it is suitable, but I am glad I have some previous experience, as sometimes even I have to struggle with the assignments :)

This course is probably useful if you want to get some practice with Python. They teach you how to build a web crawler similar to the one Google uses. Some jokes there are awkward but there are some great excercises and topics. And at some point Sergey Brin makes a guest appearance and tells the students to not give up the course :) At the moment I started a follow-up course and I am totally enjoying it. It is targeted at people with initial programming experience.

As for other programming languages other than Python, I find CS50 from Harvard quite good (there are basics of several languages covered there). Although constantly hearing "This is CS50!" might be annoying, they've got quite a nice balance between studying and entertainment.

If you want to earn a certificate for taking a course, all the courses I listed before are not usable right now, as they started a few weeks ago or ended already. Then you might consider a few courses starting soon:

- Introduction to Systematic Program Design (they use some fake language in the beginning and then switch to   Python, Matlab and Javascript).
- Creative Programming for Digital Media and Mobile Apps (will use a dialect of Java called Processing)

If you have taken one of these courses and want to discuss them, I would be happy to do it. And if you know other good online courses on programming, I would be glad to hear about them!