As the smoke clears on CS50x, Harvard’s online Intro to Computer Science course that I’ve taken through edX for the better part of 3 months now, I thought it’d make sense to reflect on my experience with the class.
When I say I spent 3 months on the course, I should mention that the semester really started on October 15, 2012 and ends today, April 15, 2013. But the course doesn’t actually have a hard end date, because all the content lives online – the lectures, video segments, assignments, etc. – so CS50x really is something that you can complete on your own schedule.
Why is there an “end” date then? For anyone taking the class online, that’s the date that you must have completed the course requirements by if you want edX’s electronic certificate of completion. If you don’t care for the certificate, you can absolutely work on and complete the course content at your own pace. Since I started the course late, I used the end date and certificate as a little extra mental motivation every day to find time even with my day job to watch the lectures and complete the courseware.
CS50x boasts that you don’t need any prior programming experience for the course, and they in fact, make it a point to show you just how many of your peers demonstrate that lack of experience through a reassuring pie chart on the first day of lecture. I’d taken a couple of basic CS classes in high school, but that was many years ago and CS50x focused on a language I wasn’t familiar with, C. I indeed fell right into that larger, more inexperienced section of the day 1 pie chart.
CS50x Course Load
The CS50x syllabus contained 8 problem sets (homework assignments on steroids, basically), 2 quizzes, and a final project. The problem sets focused on some interesting concepts such as cryptography, forensics, gaming, and web programming. While I found that the problem sets brought on their own frustrating set of challenges, I think the course did quite well in adapting relevant themes in each one.
For example, I distinctly remember playing a game of Scramble on my smart phone literally minutes before reading the assignment for Problem Set 3 – to program and implement the game…Scramble. Another interesting moment in the course, and one that really put the worldwide reach of the class into perspective, was during the forensics problem set where we had to solve a mystery of which television show character committed a murder by electronically cleaning up an incriminating photo. Turns out that a lot of people couldn’t recognize the character even after they had done all the programming work to reveal the picture and were staring right at them…simply because that particular show never aired in their home countries. Oops.
The community and sense of connection between not only the 120,000 students worldwide taking the course online, but the hundreds sitting in Harvard’s Sanders Theatre, really defined the experience for me. The level of support available from other students via CS50 Discuss, the course’s online forum, who were facing the same late night challenges (and sharing the same successes!) was a huge determining factor in what made this class so appealing to me. In the words of the immortal Jerry Springer, “take care of yourself, and each other.”
Overall I’m very glad I took the course, and I can see why it has become so popular over the years on the Harvard campus. It’s an incredibly unique class, and I’m also glad I heeded the advice to “not give up after the Call Me Maybe parody on day 1.” I definitely plan to take another edX course in the future – perhaps MIT’s intro to CS/programming class is next, which focuses on using the Python language. (See my CS50x final project programmed in Python here)
So…why did I take this course, when I had such a late start and had to balance a full-time job in a field that isn’t even directly applicable to computer science?
Because learning is cool.