MIT 6.00.1x Review

My grade for MIT 6.00.1x

I just finished auditing MIT’s 6.00.1x (Introduction to Computer Science and Programming Using Python) on EdX. This is the first MOOC that I even reached til the end, let alone passed! Please note that this course is fully accessible: you can get your codes for all the problem sets and exams graded for free; you only have to pay ($49, less if you are granted EdX’s financial assistance) if you want to obtain a verified certificate after passing the course.

Below are my three observations after taking the class, including what I think is good, what can be improved, and tips on getting the most out of the class:

1. You should buy the accompanying textbook

The course comes with a textbook that can be bought as hard copy or in e-book form. This helped me a lot when I was confused about a certain topic during a lecture — which was very often — and was too exasperated to keep rewinding the same ol’ video. A deep reading through the relevant section in the book was more than enough to clear up my confusion, and gave me ample time to think about the concepts (especially when I tried to followed the code on the page). Without the book, I highly doubt I would have completed the course.

The course textbook

2. The algorithms were not as scary as I’d thought they would be

I was so scared going to the lessons on algorithm because I’d always thought they were too hard for me to understand. However, if you actually follow through the codes for those algorithms in the book or in the lecture slides and make ample notes on them (as seen below when I destroyed my textbook with highlights and annotations), you’d soon start to get their logic. I was pleasantly surprised to discover that I could implement the sorting algorithms (selection sort, merge sort) even before seeing the code, just by listening or reading the pseudocode. This is a testament on how the previous lessons in the course really gave me a strong foundation to start implementing new programs.

Me trying to figure out sorting algorithms

3. This class could be better with some data science applications

As this is a prerequisite class for MIT’s 6.00.2x (Introduction to Computational Thinking and Data Science, now open!), I wish there’d be more data science applications of the concepts taught in class, given that many people who take the class are interested in learning programming for that purpose.

Granted, the items covered here are quite basic, but I think there are better ways to learn about classes and inheritance than spending a whole lesson with a hackneyed Person-Student-MITPerson-Undergrad/Grad-class example. I’m really interested on how classes could be used to model data science problems, and I think with more relevant examples I might be able to appreciate more the powers of object-oriented programming (for now I’m still not quite sure when or how I should use them).

Snoozeville -.-

Further resources:

Here are the additional resources that I used for the class that really helped me understand those concepts that I still did not quite get after the lectures:

  1. Other Python beginner books: I recommend Python Crash Course, as I’d finished that book first before taking this class. You can just skim the first 11 chapters which cover Python basics. I also discovered there’s also a Python book within the Head First series (for those unfamiliar, the Head First books use a highly visual and engaging style to teach various topics). The latter seems to assume a little more background knowledge, so it would be quite useful for someone who’s more familiar with programming.
  2. For algorithms, I highly recommend Grokking Algorithm. I adore this book, especially the cute illustrations ❤ After reading the first 5 chapters of the book, which cover run-time analysis, sorting algorithms, and hash table, it was so much smoother for me to absorb the course lectures on those topics. As the course textbook can sometimes be terse, this book is a wonderful companion to it.
  3. Finally, nothing beats getting a pen and paper (it shocks me how much paper I’ve used for this class!) to draw out the concepts covered in the class and explain to yourself how it works; for example, how a certain function mutates a list passed onto it. This also applies when you’re working on the exams and problem sets: it brought me great pleasure to see the ideas I’d written and reasoned out on paper get turned into code that then worked.

A few weeks after writing this review, I’d also finished MIT 6.00.2x. You can check out my review of that course here.