CS50 by Harvard University, which you can take for free on EDx (don’t bother paying for the certificate) is by far the best Computer Science course I have ever taken, and probably my favorite course period.

In case you haven’t heard of CS50 before, it is more than a course. This website has called it “a cultural touchstone, a lifestyle, a spectacle” & the instructor Professor David J. Malan has essentially a cult following. there is even a full subreddit dedicated to this course. And after taking this course, it is easy to see why.

I left the course excited to learn more, and genuinely sad that it was over. No other course has ever made me feel that way.
So let me explain why.

This is CS50 — The Best Free Course to Learn Computer Science

CS50 describes itself as “an introduction to the intellectual enterprises of computer science and the art of programming”. It is a beginner college-level course on the fundamentals of Computer Science & programming for people with little or no experience. Two-thirds of CS50 students have never taken CS before.

This isn’t to be mistaken to mean that CS50 is easy, far from it. It is very challenging but in a very rewarding way. More on that in a moment.
The course teaches you how to “think algorithmically and solve problems efficiently”. Topics include abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web programming.

Languages include C, Python, and SQL plus HTML, CSS, and JavaScript. The course website states that problem sets are “inspired by the arts, humanities, social sciences, and sciences”. The course culminates in a final project where you will apply everything you have learned (which is a lot, btw!).

Personally, I built an International Tax Calculator app.

CS50 is VERY HARD. And that’s a good thing.

Every week of CS50 has a lecture, a few supplementary videos, and a series of problem sets (a smaller ‘lab’ and a more comprehensive ‘problem set’). At first glance, this may seem like not a lot of material for what is supposed to take a full week. While it may not take a full week if you are able to focus on this every day for a few hours (I did around 2–3 ‘weeks’ per week), expect to spend a lot of time on the assignments, because CS50 does not hold your hand all that much. However, this is by design.

The techniques you are expected to use in the problem sets are all, of course, related to what you learned that week. But don’t expect instructions like “implement a function X by first doing this, and then that”.

The instructions are more in the tune of “implement a function X that accomplishes Y”. And then it is up to you to figure out how to come up with the actual code.

On so many occasions, I had no clue where to even start. I googled a lot. But this is all by design (the course directly admits this). Here’s why:

Computer Science is hard. Programming is hard. That said, CS50 does move at an extremely fast pace. But I argue that this is a good thing precisely because it makes you get used to the fact that solving coding problems in the real world is hard, and you will often have to find solutions using Google & do your research yourself, even when you may have no idea where to start. Even experienced developers do this (or so I hear).

So embrace the challenge. If you don’t enjoy problem-solving like this, then it may actually be that programming isn’t for you, because this is what it is all about in the real world.

So, why is CS50 so great?

I really think CS50 is more than a course and should be a model for the entire education industry. Professor David J. Malan, as well as instructors Doug Lloyd & Brian Yu present the course in an enthusiastic & energetic style that makes it impossible to not get excited about the subject. Given I am used to lecturers who look like they are bored to death themselves, the style of CS50 is extremely refreshing.

The lectures are really something different. The team has put an insane amount of effort into creating unique ways to present the subjects, that make the materials stick much better compared to the boring Powerpoint presentations I’m used to from my own college days.

Of course, Malan & CS50 benefit from the gigantic budget of Harvard University which allows their elaborate presentations to be created in the first place, but regardless, this course really is a first-class learning experience like no other.

Conclusion

So please go take this course right now. Go embrace the struggle, because you will come out the other end much smarter. At least watch the first lecture, it’s free, and you have nothing to lose. The first week alone will teach you so much about how computers actually work. If you don’t finish the lecture hungry & excited to learn more about the wonderful field of computer science, then you don’t have to finish it. But I think you’ll want to finish it.

I have never recommended anything more & I am forever thankful to this course for kicking my a** and igniting in me a spark to learn everything there is about the wonderful field that is computer science!

For more from me check out my Youtube channel, the Internet-Made Coder. My channel documents my life as a Self-Taught Software Engineer as well as my journey of self-teaching Computer Science & Programming. I also make funny (at least I think they are ;)) videos around CS, software engineering, and more.