Remember these 3 tips to make the most out of Andrew Ng’s ML Programming Assignments
Nod if this sounds familiar: you watched a lecture from Andrew Ng’s famous course on Machine Learning, did the quizzes and scored a thrilling 100%, but when you sat down to do the programming assignment, you have no idea how to start writing your code.
This was exactly what happened to me when I was solving my first programming assignment. Now that I came all the way through to week 6, I got this urge to write an article for people who are facing the same. This will be my first Medium article, and I’m hoping that it helps everyone who reads it in some way.
After thinking back on how I figured out and solved my situation, these 3 points came out:
- Being fluent in the theoretical part, and taking notes
Machine Learning by Andrew Ng wasn’t my first online course, and perhaps not your first one either. One mistake I did during my first few online courses was that I never wrote anything down. Frankly, it was hard to spot the drawbacks of this strategy because most of the online courses I did were somewhat code-intensive (e.g., Computer Science in Python, by MIT and the famous CS50 course taught by David J. Malan). So the most effort I put was to code along with the teachers, and not really write down any concepts.
Doing so, after a few weeks I hardly remembered the minute concepts. The more complex the technical aspect was, the faster I lost track of it. There was a simple solution — write and look.
There isn’t much to be said here. Writing and reviewing will help digest and inculcate the concepts, making you fluent in the technical details. Only after the theoretical part is ingrained, can we move forward and extract that information to apply in problems.
2. Know the tools better, but know the logic best
In this stage, my mistake was to assume that I don’t have enough knowledge about the Octave programming language used in this course whenever I was stuck somewhere. But that wasn’t really the case.
On an honest introspection, it was clear that I was making Octave an scapegoat. I asked myself, “if my computer could talk in my own language instead of Octave, what will I say for this task?” Unsurprisingly, I didn’t know the answer to that either. Why? Because not knowing Octave wasn’t the problem, it was not knowing WHAT to do in Octave.
Solution: when you’re stuck, ask yourself what you need to code. If you know what you have to do but can’t get it right, just search up ‘how to do this in Octave’. If you can’t put your finger on what you have to do, the problem is with your conceptual understanding, not syntax.
3. Resist distractions and temptations
Distractions: obsessing about parts of assignment that aren’t the main focus. For example, don’t spend time learning the ins and outs of advanced optimizers like fmincg or fminunc when it’s clearly implemented for you in almost every programming exercise. Respect your time.
Temptations: I’m ashamed to admit this, but looking up hints is like my hobby. I’m working on it, but my earlier days on LeetCode are the legacy of upsolving solutions (I’ve stopped now, I swear).
How to stop getting distracted and looking up solutions then? Well, this is what I did: whenever I started obsessing or feeling stupid and wanting to just look it up, I asked myself, “What do I want to become after this course?”
For me, the answer was “someone who actually knows ML, not someone who can just say “oh I completed this Coursera course”. I wanted my knowledge to be visible from my expertise in ML, not because I claim that I’ve completed so and so courses. If honest expertise is what you want, honest effort is what you have to give in.