I took CS50 in 2019 on Edx. It was unlike any other course I had taken previously. I was amazed by the quality of education they are providing for free. My college classes felt like a scam in comparison (a topic for another time). Here are some of the reasons why I think CS50 is awesome.
David and the team
tell me why you don't like David J. Malan & i'll tell you why i don't like you
Just kidding. But seriously, his teaching style is very unique and can't be described in words. It sparks the joy and curiosity of learning in me. He is very enthusiastic even while explaining hard concepts like pointers, tries, etc. There's equal focus on why instead of just what and how.
Getting the fundamentals right
The course starts with Scratch (see the pun?) which introduces basic concepts like variables, conditionals, loops, etc. Then we learn the low level C programming language. We are introduced to rubber duck debugging. Then comes Algorithms, Python and finally a taste of web development (well 3 different tracks to choose from nowadays). The point I want to make is that our fundamentals become very strong in the process. We understand that something that looks complex is just an abstraction. One instance I can think of is a problem set requiring us to implement a hash table (I won't spoil it for you).
Production quality
Each lecture is not less than a short movie. That classroom looks like an opera theatre. There's a whole team just for recording purpose. It feels like we are sitting in the classroom instead of our home.
Challenging but fun problem sets
The problems aren't typical MCQs or subjective questions. We need to write code and apply the concepts we learnt in the lecture. A part of our grade is dedicated towards maintaining code style (style50). They try to create a relatable story around each problem. There will be lot of Googling, head scratching and aha moments too. There are often two versions of some problems, one for people who are more comfortable and one for less comfortable. We can also refer to walk through videos for tips if we are stuck somewhere.
The community and ecosystem
There are CS50 groups on all the major social network platforms. The discord channel in particular helped me a lot and I made some good friends too. I feel there's been efforts to reduce the friction from student's side. They provide an online IDE with terminal support so that everyone is on the same environment and students don't need to go through the headache of installing anything locally on their machines. Also a lot of things are automated like the submission and grading. There's a whole site to see our grades and progress.
Constant evolution
Since a new version comes out every year the course material is constantly evolving and they keep adding new problem sets too. So no matter when you enroll it won't feel outdated or absolute. They have also started taking live webinars on various topics recently.
Closing thoughts
Did I mention about other CS50 courses on topics like game development, web development, artificial intelligence, etc? Have you taken CS50? How was your experience? I would love to hear them in the comments below!