So I did it. I just finished literally the world’s most popular Computer Science course in the world, Harvard’s CS50, “An introduction to the intellectual enterprises of computer science and the art of programming.

Wanna know what I think about it? Keep reading.

CS50 is a free course distributed on edX, a non-profit open online course provider founded by Harvard and MIT that offer’s courses from the world’s most renown educational institutions.

So what’s the catch? Is it really free?

Yes, absolutely.

You have an option of paying $149 to get a verifiable certificate, but you will be able to complete the course and have access to all the same learning material whether or not you pay for this certificate.

So what do I think of it?

It is awesome. It’s composed of 10 “Weeks,” two special lectures, and one final project.

The Weeks typically have “Labs” (which they introduced in 2021) where you collaborate with a classmate (but I did all the labs myself). The real learning though happens in the problem sets.

Don’t think though that the course will take 10 weeks long, unless you devote a large chunk of your time each day really crunching down. But if you have a job or regular classes and other life “distractions” on the side.

This is because of the time it will take you to solve the problem sets. It can take weeks to solve a single problem of the problem sets. Very painful weekssss.

In Harvard though, it seems that the course is really given out over a semester.

In real life though, one “week” can really stretch to more than one week. It would be more appropriate to think of it as ten chapters.

In fact for me it took me two years. I started in July 2019 and I ended on October 2021. But the advantage of this is I was able to see how the course changed over two years. I also was able to redo and take apart the course and lectures and problem sets more than once.

Where am I coming from? I’ve done a lot of dabbling into web dev on the side for the past couple of year. Took lots of courses here and there. I decided that I better take a basic ComSci course before diving into to hardcore web dev, as I felt my lack of formal basic ComSci training always put me at a disadvantage.

But, around two thirds of all people who take CS50 have never taken a ComSci course before. So You can take it.

Ok. Let’s start with a week by week breakdown.

Week 0 – Scratch

Computer scientists often start counting from zero. So you start with “Week 0.”

My highschool had Computer Science classes so I was able to whiz through this. I was thanking

In this week, you go through the most basic foundations of Computer Science.

You go through stuff like binary, bytes, pseudocode, what an algorithm is, and other “you-gotta-know-this-stuff” kinda stuff.

The take away is that Computer Science is about problem solving, and you use abstractions (stuff other human before you built), built upon abstractions, built upon abstraction.

You don’t have to master the concepts there, but you gotta know what they are, lest other ComSci people see you as an ape.

Ah! The march of civilization!

At the end, they introduce MIT-developed Scratch, a program designed to help kids learn how to program. As a final challenge, you have to make a game in Scratch.

My advice for Week 0 – Scratch

Listen, but don’t obsess over it. Get the problem set (building a game in Scratch) done as soon as you can.

There’s no need to become an expert in Scratch, as you won’t be able to use in anywhere except in the concept of a learning tool. You’ll get plenty of practice on the Com Sci concepts later in the course.

Week 1 – C Programming Language

Data types, loops, operators, conditional statements, other really bare bones stuff.

All of this is done in the C Programming Language, the granddaddy of most programming languages today.

I was still able to apply a lot of what I learned from highs chool from back in the 90’s.

It felt so good that I was able to whiz I wanted to contact my high school teacher and thank him. The only problem is that I only knew his first name. I even forgot what language we were learning (was it COBOL?), but it just shows, the concepts you learn in basic Com Sci carry over.

At the end, you write simple programs in C.

Simple that is, if you can wrap your head around the syntax (kind of like the computer language’s grammar) and the concepts.

Like in the next couple of weeks, you have a choice to get the “Less Comfortable” or “More Comfortable” versions of the problem sets. “Less Comfortable” being for those who uhmm… are less comfortable with this computer stuff.

I’d usually get the “More Comfortable” ones, since I really wanted to learn, but there were times I had to do the “Less Comfortable” ones first.

My advice for Week 1 – C Programming

Don’t think you are learning cryptic symbols and all. You will use all this basic stuff in the future.

Embrace the pain.

It become less and less painful in the future.

No shame is getting “Less Comfortable” versions.

Week 2 – Arrays

Arrays! Arrays! Arrays! Ah, I still was able to use a lot of what I learned from my high school Computer Science classes.

You also start getting into variables and scope, and functions.

I told myself, this stuff my high school Computer Science teacher taught me 20 years ago or so was still useful. Of only I had know. I guess I always wanted to study programming and stuff, but we didn’t have a computer at home or reference materials.

By this time, you’re getting the hang of C.

Once you get a grasp of arrays and the other concepts they teach, you can charge through this “Week” as well.

My advice for Week 2 – Arrays

This hurts. But not as painful as what’s about to come. Enjoy it while it lasts. (Evil laugh.)

Week 3 – Algorithms

And it hits you like a train. Mental acrobatics.

Algorithms, really these are just a set of instructions. Now, writing those instructions is the hard part.

You’ll get a super tiny, itsy-bitsy, glimpse of the crazy stuff real computer scientists think about (as compared to what their more cow-boyish cousins the web developers do.)

You get to look at different search and sort functions. You’ll also be introduced into recursion, probably one of the most mind-bending things you encounter if you are new to it.

(I think the advantages of all my high school computer classes ended around at this part, recursion.)

Not to mention you’ll be struggling with the syntax of C.

If your aim is to build cool stuff, like an awesome web app or website, a lot of what you’ll learn in this the lectures is already stuff that happens under the hood. Like if you were learning how to drive a car, this would be like an introduction on what an engine is.

You’ll probably realize at this point that Computer Science really is thinking about how to solve problems.

You’ll realize, it’s really all about how well you think.

For me, the highlight of the entire course was writing a program that implements the Tideman electoral method in C.

Pain. Weeks of pain.

But once you solve it.

Beautiful.

My advice for Week 3 – Algorithms

While the lectures are digestible, it’s the problem sets that will eat your brain.

This time you won’t be able to just sweep through this Week like how you might have swept through others.

Take some time to focus and think.

Don’t be obsessed by one way of solving the problem sets. Be prepared to kill your favorite mental children.

If needed, get out a pen and paper, or a white board, and clear your mind and write things down.

Week 4 – Memory

Together with Week 3 – Algorithms, Week 4 – Memory is one of the more difficult ones.

If Week 3 was learning about how to do logical somersaults and contortions, this would be more like ripping off the crash mats, and looking at all the hard concrete, pipes and wires that you were practicing on.

Or following the driving a car analogy, you start examining the engine of your car in this Week.

Stuff really starts getting technical with dynamic memory allocation, call stacks, pointers and custom types.

Week 4 goes deeper under the hood you’ll go in the course.

A lot of what you’ll learn in Week 4 is already taken care of in the modern programming languages and platforms we mortals use. And this already starts giving you a tidbit of taste of the dark arts of what those sorcerers we call computer scientists start doing.

The problem sets “Filter” and “Recover” might be a but tough, but you’ll come out with them having a better idea what a computer file really, really is.

However, I think it’s good you get taste of what these dark arts of the computer scientists are, so you will appreciate what they do (this stuff is cheese-whiz easy stuff for them, but brain overloading stuff for us mortals). This way you when you are going too far into the shadowy realm of the computer scientist once you start your journey to a normal mortal’s life as a web developer.

My advice for Week 4 – Memory

My brain felt like it grappled and was strangled to near half-death by blackbelt judo fighters. I had a hard time since I could not catch up with fluency in the C Programming Language syntax.

Keep a watchful of the C syntax you have to know and the key concepts you have to understand, for without correct C syntax you shall perish. RIP to your hopes and dreams of finishing CS50 if thou shall not heed my device.

Week 5 – Data Structures

When you think you’ve gotten deep enough under the hood, Week 5 takes you deeper under the hood.

This time, not only will you look at the concrete, pipes and wires, but you’ll get a brief introduction of how they are all connected to each other.

I’m talking about data-structures, singly-linked lists, hash tables, tries and other neat stuff.

I struggled a bit with the problem set of Week 5, and in fact I was not able to get a near perfect or perfect score in the problem of the problem set, called “Speller.” (Not that I’m bragging, but you’ll probably seek a perfect or near perfect score when you do your problem sets, since each problem in the problem sets usually has to be solved in its entirety.)

I did get a passing grade in 2020 for it and hurdled Week 5.

(For some reason when I resubmitted my solution in 2021 for kicks, the solution was not accepted anymore. Of course, I still have the evil urge to return to the problem set to figure out what went wrong, but in the end I snuffed this evil flame, as I felt that data structures just went a bit too deep into the technical details. In modern programming languages us amateur web developer mortals use, data structures are taken care of under the hood.)

Don’t think though that Week 5 is useless. On the contrary it’s tough but good stuff. Think of it that you’re learning an important concept that drives of the whole machine. If you were learning to drive, it would be like learning the flow of the flows through the engine.

The hash table and the singly-linked list made you realize that when you see a magician makes a puff of smoke, “Hey, it’s not magic. It’s chemistry.”

My advice for Week 5 – Data Structures

Just hang on… There’s a light at the end of the tunnel.

Week 6 – Python

After Week 3, 4, 5, you’ll probably be shell-shocked.

Then, Week 6 comes in, and suddenly the sky will fill with butterflies and rainbows, and angels will sing.

You’ll be rewriting your programming from the previous problems sets in Python. You’ll be doing other new programs, but after the problem sets of Week 3, 4, 5, you probably won’t find them too hard.

I started CS50 around 2019, they were still teaching PHP for Week 6. In 2020, they changed this into Python.

Python started become popular in universities, since it was easy for scientists to write their programs in them. And, it’s pretty getting the be new go-to language for learning programming.

My advice for Week 6 – Python

Python is what you call a C based language (just like with JavaScript, PHP, Java, and other uber popular computer languages). Just go with the flow, let what you learned in C apply in Python.

Week 7 – SQL

This one is pretty fun. I did an SQL course some years back before this, and I’m not sure if that contributed to my catching on to the lessons pretty easily.

You’ll be working with relational databases, and while the concept doesn’t come naturally at the start, once you get the hang of it, you’ll be able to thrive.

For newbies, this is where you’ll might get excited since you can start building som real stuff with persistent data. You’ll

The problem set is pretty fun. It’s something you can break into little pieces and work through step-by-step.

My advice for Week 7 – SQL

I remember when I was first learned SQL some years back before CS50, I got stuck and I didn’t realize all I had to do was just enter the semicolon “;” and end the statement. Remember that the computer doesn’t have feelings, so don’t worry about committing mistakes.

Week 8 – HTML, CSS, JavaScript

HTML, CSS, and JavaScript are usually the starting point of most people who want to get into web dev.

That’s just right since HTML, CSS, JavaScript are the languages which all browsers “speak.”

And at the end you just make a homepage. This shouldn’t be tough stuff if you’ve done this stuff before.

If you’re totally new to HTML, CSS, JavaScript, don’t worry, there are no mental gymnastics here, just getting used to writing this stuff.

Don’t think you’ll learn HTML, CSS, and JavaScript just in one lecture though. While it’s easy to grasp the basic, there is a lot you can do to improve your HTML, CSS and JavaScript in the future.

Week 8 also introduces you to basic internet technologies, like HTTP, IP and other you-must-know-this-stuff kind of stuff, like the Document Object Model (DOM).

My advice for Week 8 – HTML, CSS, JavaScript

Don’t expect learn everything you have to learn about HTML, CSS, and JavaScript. You could take entire courses just on these languages (especially JavaScript). Remember that Week 8 is just meant to be an introduction.

Just sniff the perfume, no need to drink the whole bottle.

Week 9 – Flask

Flask is a micro web framework built on Python. Think framework as a bunch of code someone else wrote before, so that everything works together.

In this week you throw in everything you learned together.

This is close to really building stuff. Your final project will give you a glimpse of web dev.

My advice for Week 9 – Flask

You can choose to look at the sample with your browser’s inspector so you don’t spent extra hour figuring it out. The instructs say it’s okay, so it should be okay.

Week 10- Ethics

I was a bit put off by the guest lecturers invited in by Prof. David Malan, the super cool guy who teaches the main lectures.

The guest lectures would even spout of some trite old stuff about how tech was white-male dominated for years. Jesus, can they turn down the ideology a bit and focus on Computer Science and actual ethics.

Good lecture on social media, but I think the discussion is bit too leftist. Geez, universities now-a-days.

My advice for Week 10 – Ethics

Uhhh.. just get through it.

Two Special Lectures – Security & Artificial Intelligence

Pretty enjoyable lectures. Enjoy them at will. No problem sets or anything you have to solve after the lecture.

The Security lecture was pretty basic, but I guess it was meant to be an “invite your family” kind of thing.

The AI lecture was pretty awesome, and the Prof. Malan made the topic quite accessible.

Conclusion

CS50 is definitely worth it.

I started CS50 thinking I’d be another one of those courses I’d just crunch through.

I ended up finding it was a fantastic intellectual and emotional adventure.

If you’re planning just to be a web developer, CS50 is kind of on the theoretical side, but in the end, you have to realize that these are the stuff you really just have to know and understand,

Prof. David Malan was absolutely magnificent. He is definitely an engaging and charismatic speaker, and he has a way of explaining things that make difficult things easy to understand.

The problem sets are the real deal.

The problem sets are like a rite of passage. After you finish Tideman, you’re gonna understand.

I think everyone who doesn’t have a Computer Science background to take this.

CS50 will take you from hello world to the world of programming and Computer Science.

Awesome sauce!

What other cool courses can you recommend?

By the way if you liked this write up, check out my review of Wes Bos’s JavaScript30 course which I finished just around the same time (it just took me a month to finish it though, unlike CS50 which is a true Harvard/university semester of a course).

Unlike CS50 which total newbies can take (and I highly recommend to take), JavaScript30 is for those who are more interested in the technical side of programming, is is for those who already have some basic knowledge of JavaScript.

Leave a Reply