This was CS50x
When roaming around for Computer Science courses on the web you’re bound to notice the buzz surrounding the HarvardX course, ‘CS50 — Introduction to Computer Science’. With the online learning community raving about this course, I was curious to see what the fuss was about. Not having a clear conception of what makes a solid learning platform for CS, I was probing to give this course a shot yet at the back of my mind telling myself, ‘let’s see how many weeks I last’ as is the case with many online courses I undertake. Honestly, that’s probably not the greatest attitude on my behalf and I must confess that I actually enrolled in the course in December 2018 but never actually made it past problem set 3. So, I decided to start fresh when the coronavirus locked us up indoors in March. With all the time in the world, this was the perfect excuse to set up the man-cave for some epic keyboard warrior sessions, devoting 80 + hours to complete the course in the space of two months.
CS50 is a great venture for computer science majors and non-majors alike, whether you simply want to gain some fresh insights into the discipline or pursue it as an end. Not only are you learning some fascinating concepts about the art of CS but are constantly entertained by a Rockstar of a Professor, David Malan who’s unconditional energy projects out to learners around the world. You could argue that he really has mastered the art of teaching and brings back some excitement surrounding the education sector. Each week is comprised of a two hour lecture which were honestly more entertaining than the movies on my Netflix feed. (maybe I just have a bad taste in films) The two hours fly buy and the experience is a vast contrast to the times when I used to skip lectures at Uni fearing that if I attended, I would dose off, which is immensely disrespectful towards the lecturer. Although, from the outset, you might think you could play a two hour lecture on x2 speed (exactly what I did instead of attending lectures at Uni) there’s no reason to do so in CS50 and you will feel more than often obliged to re-visit certain segments for reinforcing the concept whilst reliving the thrill of the delivery. Although the course is delivered through a traditional university lecture-like environment, this was anything but a similar experience where the lectures are fast-paced, full of energy and student involvement. The mix of theory and practical examples as well as short humorous segments involving the students are optimally used in the 2-hour frame to keep you at the edge of your seats.
Each week’s lecture is accompanied by a cluster of short videos to reinforce certain concepts before it’s all on you to dive into the unknown realms of the challenges that await. These challenges reflect the content being taught during the week and are in the format of problem set assignments. The first week allows you to get a taste of the thinking that accompanies problems in the real world whereby you utilise Scratch, a block-based visual programming interface to familiarise yourself with some algorithmic concepts. You are then introduced to the low-level programming language C, which is utilised for the first few weeks. The progression is steady, whereby you start off compiling a program to replicate the scene from a Mario game to applying Instagram-like filters to images by altering the values of pixels. (I definitely appreciate filters a lot more after being exposed to the complexities associated with altering an image) Thereafter, the biggest challenge of C awaits, whereby you’re tasked with creating a spellchecker that can efficiently iterate through large text documents for spelling errors. In my opinion, it was the most difficult problem set and honestly made me want to throw in the towel, but after days of dialogue with my figurative rubber duck and chipping away with baby steps it was also probably the most rewarding problem set. Within the space of a few weeks you go from printing out “hello, world” to really getting low-level where you’re introduced to dynamic memory allocation, pointers, nodes and hash tables, all which were concepts that made me feel like I was in hell. For someone with a low aptitude for CS this definitely felt like the deep end and I was pretty close to drowning. Although the speller problem set was difficult, with hours and hours of conceptualising, it was nevertheless very rewarding once completed. Just when you think it’s getting scary, you’re welcomed with a breath of fresh air by exploring the new language introduced, Python, where you are tasked with completing every assignment you had previously done in C. All of a sudden life gets so much easier, and you feel like a gun for a short amount of time before starting to appreciate the intricacies of what’s actually going on inside a computer on a low-level with C. From here on the course is building up towards a final project which can be in the direction of a web app, mobile app or a game development. The choice is yours! Check out my Final Project below, a simple web interface showing live stats of COVID -19:
It’s definitely a challenging journey, where at times you feel like there’s no direction towards a solution, but the beauty of the course is that it teaches you to be comfortable in uncomfortable situations rather than spoon feeding you a solution. Towards the tail end of the course you realise it’s completely fine not to completely grasp what’s going on and accept that it might take hours and hours of iterating through search forums and documentation to arrive at a solution, but that’s the beauty of it. The extensive and legendary CS50 community also came to my rescue on multiple occasions through forums such as Stack Overflow and the Facebook group allowing me to bounce off ideas and overcome roadblocks.
A lot of us including myself have been quite fed-up with the lethargic efforts of a lot of colleges and universities to transition to online-learning for the semester and I’d hate for people to miss out on the benefits of online-learning or have a misconception about it because of having a bad experience to what they are exposed to now. In my opinion CS50 sets a benchmark for an online learning model — one that is robust in structure and free of charge compared to the monumental fees for traditional higher education courses. For me this is the epitome of a successful online course, challenging, yet rewarding and I would recommend to anyone trying to learn something new and along the way building some fun projects of their own. This was CS50!