a review of Coursera's Machine Learning course
I recently finished Andrew Ng’s Machine Learning course at Coursera and thought a review of it would be a great way to kick-start this blog.
So the course runs for about 10 weeks, where each week there are 1-2 topics to study in the form of video lectures, review questions and a programming assignment. They estimate 5 to 7 hours of work each week which I thought was quite accurate. Regarding prerequisites, I think basic knowledge of Linear Algebra, Calculus and software development is a great thing to have but not absolutely necessary.
lectures
Each week an average of 6 videos of 8-12 min are released. I thought releasing the topics one at a time instead of everything from the start helps setting a pace and prevents binge watching, which is good because it lets all that information sink in. And the fact that each video is short and to the point makes it very easy to digest.
I found the lectures, as a whole, well structured since they start with a simple concept and keep building on that concept to form bigger and more complex concepts. I liked Andrew’s teaching style because it felt very practical. He constantly uses examples to describe a problem and how a certain concept can solve that problem. That’s a constant reminder why you’re learning all this and how useful it will be in the end. I found myself pausing the videos a couple of times making parallels between a particular problem/solution to my own side project ideas.
review questions
After watching the video lectures for the week, the next step is to answer 5 multiple choice review questions. These were a good learning tool because they weren’t always easy and sometimes made me go back and rewatch the lecture to make sure I understood the concepts. Also, after submitting the answers you get the score together with an explanation why each option is correct/wrong so you can quickly understand why your answer was wrong. You can repeat these review questions over and over again until you hit the perfect score, however, questions change between attempts. My only issue with the review questions is that they could be more extensive. 5 questions is not that much…
programming assignment
After the video lectures and the review questions, there’s the programming assignment which will take up most of your time in this course. The idea is to take the concepts learned that week and apply them to real world examples. Octave, an open source language similar to Matlab, is the chosen language to implement these exercises.
Each week you’re given a set of Octave files, some with already implemented functions to help you, and others that you’ll have to implement yourself. You’re also given an exercise guide which describes what you have to do. After you implement them, you submit your answer through Octave and it tells you if it’s right or wrong.
To me, these exercises were just about filling empty spaces with equations in Octave and getting the syntax right. I think too much is already implemented for you and the guides baby feed you by telling you step by step what to implement. I spent more time getting Octave’s syntax right than figuring out the exercise. Because of this, the course’s online forum was a great help because someone would always post unit tests which, for me, are invaluable. There’s also tips from other students on how to improve the implementation in Octave.
conclusion
Overall, it’s a great course! It definitely doesn’t replace a university level course on the subject but it doesn’t try to either. It’s a gentle introduction to a complex topic and it gives the foundations to later explore it deeper. Personally, I would have enjoyed a bigger focus on practice with more challenging programming exercises. More figuring stuff out. But I guess a compromise is needed between how challenging the programming exercise is and how much effort per week you need to dedicate to the course.
I guess the TL:DR is “do it!”