Summer is here and in the spirit of this season of activity, I’m picking up where I left off in my 6.00x Intro to Computer Science and Programming series through MIT’s MOOC on edX. I completed the course two months ago (I followed their regular weekly scheduled assignments as bonus motivation to stay on track) so here is my look back at the last five weeks of the course, and my thoughts on the experience in general for those of you considering or on the fence about signing up yourselves.
Weeks 5-8 covered key programming topics such as:
- Efficiency and Orders of Growth
- Memory and Search
- Classes and Object Oriented Programming
A constant in all introductory programming classes, I wasn’t surprised when I found myself working my way through various sorting algorithms to find the most efficient and the worst case scenarios for sorting a list of elements. (#TeamBubbleSort) Object Oriented Programming was introduced through the example of a university student database with different Classes of students that were similar, but also established shared attributes with one another.
As I previously mentioned, I found the mid-term quiz after week 4 to be challenging but fair, and the final exam straddled a similar line. Although my biggest gripe once again was the issue of confusing wording used in some of the instructions. I died a little inside when I came across the True/False questions on the final simply because of the way some statements were worded in that annoyingly ambiguous way that True/False questions tend to be. It’s enough to make you wonder if the answer shouldn’t be, “it depends”. (Spoiler: that’s never an answer choice.) I’m exaggerating slightly, but it’s a level of confusion that I felt could have been avoided, and I’m a bit surprised these weren’t made more explicitly clear, especially given edX’s very international audience of students.
The final also saw the return of the dreaded “word association” questions with instructions asking you to select the appropriate answer that “matched” a given item. Unfortunately, again, they didn’t just use the term “word association”, which would have made it much clearer. I actually wish these questions were made either clearer (“choose the correct definition of the concept listed”) or more open code-based, so that it really tested the hard concepts and/or practicality of implementation in actual code.
While all exams were auto checked by feeding your submitted answers and code into a back-end checker, I did appreciate that there was partial credit given to the open code questions, depending on how many test cases you passed in the course’s back-end checker.
I do, however, wish there was a more creative assignment or project for students to dig into as a supplement to the final. After all, a great joy of programming is being able to plan, code, and ultimately create something that was born out of your own imagination and experiences.
Break it Down: 6.00x vs CS50x
While I admittedly enjoyed the course structure of 6.00x much more than Harvard’s comparable CS50x offering I took last year, I did feel there were some aspects to note that both courses excelled at.
- + Very, very well organized
- + Python is a great beginner-friendly programming language
- – Confusing wording on several questions in exams
- + Felt more like a class environment with long form videos of the actual lecture hall
- +/- Problem sets were a bit more difficult and ramped up quicker than 6.00x’s pace (Good if you like a challenge, not so good if you’re a struggling first-timer.)
- + Final project assignment: much cooler and more creative than simply taking a final exam online!
If I could do it again, I probably would prefer to take 6.00x before CS50x because I think Python is a more intuitive and forgiving language than C, and the organized structure of the course lends more to teaching beginners. But if you’re thinking about diving into one of these MOOCs in the fall or looking to learn something over the summer, both are very solid offerings for all computer science learners.
Final Thoughts on 6.00x
Overall, 6.00x was well worth the time and effort I put into it, with lectures broken out into easily digestible snippets of video to explain each concept, and built-in browser finger exercises throughout that reinforced each lesson along the way. I really appreciated the way discussion threads were organized within the environment of each lecture/exercise you were currently working on. It was incredibly easy to find help on exactly the right point, and it’s a key reason I attribute 6.00x with being one of the most well organized MOOCs I’ve ever taken.