Skip to content

Let's Talk About CS50

Posted on:April 4, 2023 at 04:38 AM

As a complete newbie to the tech industry (coming from healthcare), I wasn’t sure where to start my journey. Several prominent web dev content creators highly recommended CS50x, a free and famous course provided by Harvard via EdX.

They record this course every fall and provide all the lectures, problem sets, labs, and additional content for free. Of course, you don’t have access to Harvard’s resources, teaching assistants, live labs, etc., but it still seemed like a pretty sweet deal to learn the basics of computer science.

I innocently thought, “I made it through grad school. How hard could an entry-level computer science course be?”

Oh my. If I had only known then what I know now.

Before I get into the course structure, I want to note that Professor David Malan absolutely makes this course. His pleasant, easy-going manner and his use of visual analogies and examples keep you engaged and excited to learn.

Of note, I took CS50 in 2022 and completed my final project in 2023. The course is constantly updated, so the structure may look different if you take it.

Week 0: Scratch

The course starts simply using Scratch, a visual programming language developed by MIT, to create whatever kind of app you want, given a set of guidelines. It was an enjoyable problem set (PSET) which mistakenly had me thinking, “This won’t be too bad!”

Oh yeah, the course starts at Week 0 because most programming languages index from 0, not 1. So that was one of my first lessons 🙂

Then came Weeks 1-5, aka “Welcome to Hell.”

Week 1: C

The course starts by teaching you the programming fundamentals in C, like data types, loops, operators, and conditionals. If you’re new to programming like I was when I started CS50, C is a low-level programming language. This means that code written in C has to be explicit, or rather, the instructions you give to the computer must be precise to correctly output.

It’s hard. Really hard.

Weeks 2-5

It doesn’t let up. In weeks 2-5, the course takes you through arrays, algorithms, memory, and data structures. I had to watch pieces of the lectures and shorts multiple times to grasp the concepts. It took me more time than I’d care to admit to complete each week’s PSET. However, these weeks also gave me a solid understanding of computer science fundamentals.

Week 6: Python

Blessed Week 6. From here on out in the course, you’re focused on high-level languages meaning that they’re much more user-friendly, and you have to be much less explicit in your code (Yay!). In this week’s PSETs, you transition your earlier PSETs written in C to Python. While it was still challenging, it was also hugely eye-opening to realize how much less code you need and how much more efficiently you can write your code in Python to accomplish the same thing you wrote in C.

While the course didn’t get easier, it did become slightly more intuitive.

Week 7: SQL

SQL and its other versions (MySQL, SQLite, etc.) are used to manage relational databases. I loved the gamification of this programming language in the PSET for this week (Fiftyville). You’re tasked with solving a mystery by writing SQL queries on many datasets. I had so much fun this week and wanted more challenges like this.

Week 8: HTML, CSS, and Javascript

This week introduces you to the basics of front-end coding (what the user sees and interacts with). It was overwhelming for a newbie because while HTML, CSS, and Javascript work together, they’re each a different language. I wasn’t proficient in any of these languages by the end of this week, but I got a good overview that would help me in later courses.

Week 9: Flask

Week 9 was exciting, and the PSET felt like I was working on a “real” website. Flask is a 3rd party library that you can integrate into your web apps to make your sites dynamic and interactive. For this PSET, you integrate Flask with Python to create a stock buying/selling web app.

While the front-end development is mainly completed, you learn about server methods to obtain user input via GET and POST. With that knowledge, you create sign-in and registration forms. You also develop pages that allow the user to buy and sell stocks using a real stock API called IEX. It was a challenging PSET, but I learned a ton!

Week 10: Emoji

This week was a nice breather from the rest of the course while remaining interesting. Jennifer 8. Lee, a CS50 alum, presented on their journey into the world of Emoji after realizing there was no dumpling emoji. Jennifer covered how an emoji goes from concept to publication and what considerations must be considered before approval. There was no PSET this week, as the Final Project was just around the corner.

Final Project

Ah, yes, the last step before obtaining the coveted CS50 certificate. This was by far the most challenging but rewarding aspect of the course. The instructors give you free rein to code whatever you want. Unfortunately, because of this freedom, there was some initial analysis paralysis in figuring out what I wanted to build.

I’m not ashamed to say that I used ChatGPT to help me brainstorm ideas for the project. I finally landed on a web app called Kitchen Copilot. It connects with a recipe API (Spoonacular) and allows the user to check off ingredients they already have. When the Get Recipes button is clicked, a list of recipes is returned, and the user can click on the one they want to explore further, which takes them to a second page with that recipe.

If you want more details, check out the final video I submitted for my Final Project!

TLDR

Is CS50 worth it?

Hell yes.

It’s one of the hardest courses I’ve ever taken but also one of the most rewarding.

It won’t teach you everything you need to know to be a superstar coder. It won’t make you proficient in computer science basics, and you won’t be job-ready when you complete it.

What it will do is teach you perseverance in the face of challenges, how to think logically, and how to critically and creatively problem-solve, all of which are necessary prerequisites to being a web developer.

So if you’re considering getting into the tech industry or becoming a web developer, you should go for it. It just takes some dedication and time.

And did I mention it’s free? 🙂