In the last three months of the last year I had the pleasure of taking part in an online machine learning course, taught by prof. Andrew Ng of the Stanford University. The course is already over, so it might seem old news, but next edition should start any time now. If the topic of machine learning seems interesting to you in any way I can really recommend it.

As I mentioned, the course is a public version of the Stanford CS229A course, also taught by prof. Ng. The course consists of 18 chapters distributed among 10 weeks. Each chapter contains 1,5 h worth of lectures in short parts, a set of graded review questions and usually a graded programming exercise. The course gives you comprehensive information about techniques practically used in machine learning, allowing the “graduates” to really use the knowledge in their own projects.

That’s what I knew before I started the course, but afterwards, despite my high expectations I was surprised by its high quality.

## The technical side

The e-learning platform, as well as the prepared course materials are top notch – clear and well planned video lectures (with the controls to speed up the replay speed if you get things fast) and their print-ready counterparts. The well-designed review questions and the automatic programming exercise grading system made the course pure pleasure for me.

## The knowledge

The course was desinged so that as many people as possible can benefit from it. You need basic linear algebra knowledge to understand most of the concepts, so the course provided one review lecture. Similarly, the equations the following problems were based upon (i.e. logistic regression) were explained in a way approachable by people with little mathematical background, but at the same time it was in-depth enough to satisfy the nimble-mined folk’s curiosity. At the same time prof. Ng made sure you understood and got the feeling for the covered topics – which is an advantage in my book.

## Octave

The language you use to solve programming exercises is GNU Octave – a scripting language designed for numerical computations. I haven’t had the opportunity to use it before, but Octave is a language you learn to love fast – it is convenient and fun to use, especially for matrix computations and 2D and 3D plotting. Each programming exercise consisted of a script that solved a real-life problem (like hand-written symbols recognition) step by step using the building blocks filled in by the student.

Octave using gnuplot to draw pretty nifty 3D plots

All in all – I really recommend the course: a nice peace of interesting and practical knowledge. If you want to take full advantage of it (watch all the lectures, answer all the review questions and write the programming exercises), it might take a couple of hours weekly, but I’m sure it’s time well spent. The next “semester” should start within a month, but I don’t know the exact date.

I guess the only disadvantage of the course is that the mailing system and the certificate system don’t handle the polish characters very well: