Skip to main content

How to take Harvard University's CS50 Course and break into the Tech Industry

· 13 min read
Fazal
Software Development Engineer

In the 21st Century, if there is anything that has comparatively added more value to the world than any other thing, it is software. The reason you're reading this from any corner of the world, regardless of where it was published, is all because of the software.

Image


Without a doubt, coding, the fundamental component of any software, is a skill of the century. And any argument about the “AI can do that now, I don't need to learn”, is either underestimating the complexity of software or overestimating the capabilities of AI. Sure, AI has the potential to build the entire software, and that's my counter-argument——it has become even more important now to learn how to code, you cannot supervise if you don't know what's under the hood.

A simple YouTube search for a course/playlist to learn coding throws thousands of results. That is only a testament to the demand for software engineers in the 21st century, particularly in the last decade. Navigating the mess of clickbait results like “learn coding in 1 hour” and “learn {any popular language/framework} in 2 hours” is a mind-bending task, let alone learning to code. Getting distracted by those clickbait videos is the reason why most people don't make progress beyond a point and give up on coding. But there is a savior, which offers high-quality content, the content that is the same as what is offered at Harvard University. It is CS50x, an online open and free version of the CS50, an introductory computer science course that is offered by Harvard University for bachelor students at its campus in Boston, Massachusetts. It has become so credible that even Yale University offers the same course for its students.

image

CS50 and CS50x are not different, they are one, the 'x' notation is used to refer to the edX, the platform used for delivering and managing the course content for the people who take the course online. The course at Harvard is offered every Fall semester, which starts around September, spans around 10 weeks, and class sessions are streamed live every week on CS50's YouTube channel as well. The edited versions remove all the nuisance of live classroom teaching and are produced like some high-quality Netflix docuseries recorded in 4K resolution, and then uploaded to edX and YouTube as well on January 1st. And every new edition has its intro theme, composed by a professional musician. It's so good and matches the vibe of the course that I set the theme of the edition I took as my wake-up alarm tone, as it jump-starts my brain to this date. The online course is completely self-paced, but it is recommended to complete it before year-end, as the new version is updated on the first day of the new year, and if there is a change in course content, you will have to catch on that to complete it as well.

But why should you take this course, rather than other kinds of mainstream resources? Surely, just because it is offered by Harvard doesn't mean you have to take this one. For example, other prestigious Universities like Stanford and MIT also have their courses open and free. There is not a single, but multiple factors that make this course stand out from the rest.

Fundamentals

Many resources, that claim to be beginner-friendly, start from very vague fundamentals like comparing programming with mathematical concepts, or they completely skip the fundamentals for the sake of making it beginner-friendly. In both cases, you will take the hit sooner or later. With CS50, everything is taught explicitly and from Scratch, literally. Many people are eager to learn programming, but not interested in actually learning how computers work. It's really important to know the basics of how a computer works before you start programming. For example, a computer's operation is powered solely by electrical energy. But how does it harness this power to execute complex tasks, while other electrical devices cannot? The key lies in its fundamental building blocks: transistors. Think of transistors as electrical switches, toggling between ON and OFF states to denote conditions such as True or False, or the binary digits 0 and 1. Leveraging these binary states, computers perform an array of functions. They capitalize on the binary system, using only 0s and 1s to represent everything from numeric data to text, images, and videos. This binary foundation also underpins computing principles, including why indexing in computer science typically begins at 0. Lecture 0 explains binary numbers extremely well using light bulbs and how everything can be converted to 0 and 1.

image

No Programming Language Nuances

All resources start with a specific programming language like C, Java, or Python, and usually get lost in the verbose details of that specific language which is not at all necessary for beginners. Whereas, CS50 is not language-specific. It starts with Scratch, which is a game built at MIT, in the first week to teach the building blocks of programming. The next week it explains the same concepts in C, and later the fundamental concepts of computer science like Data Structures and Algorithms. C is a low-level language that allows you to interact with hardware closely and is highly recommended that you start your programming journey in C language if you want to understand computer programming from the ground up. Going further, it shifts to a more general-purpose language, Python, and then HTML, CSS, and JavaScript to teach the basics of web and web development. CS50 doesn't teach you a programming language, a framework, or a technology. It teaches you how to solve problems, both with and without code, with an emphasis on correctness, design, and style. More importantly, it teaches you computational thinking, abstraction, algorithms, data structures, and computer science more generally, whose applications you will find in your daily job.

image

Homework

Watching a programming tutorial makes you feel like you have learned the actual programming. This is called tutorial hell, and even many experienced people still drown in this hell now and then. It is a place in time and space where you keep watching videos without actually executing the same on your machine because you feel like it's easy, and you don't need to practice this to remember, exactly how you did while studying math in school; and you know the consequences of it. CS50 is not a watch-only course recording from Harvard University. It involves you submitting assignments every week, including a mini project at the end of the course to get certified. The assignments include labs and problem sets. There will be around 2 labs and 2 problems that are required to be submitted after every weekly lecture, although you don't need to submit it within a week as the online version is self-paced. There will usually be two variants of a single problem set, a 'less comfortable' and a 'more comfortable' variant, which represents an easier and harder version to be submitted. While submitting either one of them is enough for you to move to next week, I highly recommend you attempt to submit both as all problems are unique and inspired by the arts, humanities, social sciences, and sciences, and that domain range will make a difference in your programming skills. This is the only way to escape tutorial hell. As the actual class sessions focus more on uncluttering the computer science jargon, there will be a few short videos of 5-10 minutes that explore the practical use of things taught in the class. You will find these shorts on the course's website and edX as well on a dedicated week page. The assignment's problem statements are very context-specific and hard to grasp by just reading. You will also get walkthrough videos of these problems and advice on how to think of possible solutions.

image

Another big hurdle that beginners face while starting to program is setting up their development environment. CS50 provides a free VSCode-based development environment in the cloud for all so that students can work with whatever type of machines they have. Since assignments are very tough for beginners, it is very tempting to google or ask ChatGPT for solutions. And CS50 being very popular around the world, you can easily find all solutions on Google, even if ChatGPT did not exist. You can get through the entire course by outsourcing your work to Google or ChatGPT, modifying it to even bypass strict no-plagiarism policy to claim your course certificate. But you won't be skilled in anything. Degrees and Certificates will only open doors to industry for you, but skills get you hired and make you sustainable. If you deeply care about learning this skill, you will never resort to any kind of plagiarism for course completion. Personally, learning this skill was do or die. So I never resorted to plagiarism even though it took me days to complete assignments. For example, I was stuck on a particular problem set——tideman——for a month, as it involved writing an algorithm for ranked choice voting. For another problem set, I spent two weeks at least, which involved just writing a few——maybe less than 15——SQL queries to determine a thief based on the problem statement. But it also has a very strong open community support across various platforms like Reddit and Facebook, and community people did help me see things I was unable to see, without actually giving away the solution as per the collaboration policy. Kareem Zidane, a self-taught programmer who took CS50x online via edX from Cairo, Egypt, years ago. He then joined CS50's Facebook Group, where he began to answer classmates' questions, so much so that the faculty got to know him quite well via Facebook! He then traveled to Cambridge, Massachusetts, where he joined CS50's team full-time at Harvard University.

If you still face difficulties, the course now has fine-tuned ChatGPT bot to allow you to unblock without giving away an actual solution.

Faculty

Pursuing a course offered by an Ivy League University, and free, necessarily need not be taught by an experienced and credible faculty. But it is reversed for CS50. David J. Malan, the course instructor for CS50, entails Computer Science domain credibility with a Bachelor of Arts, Master in Science, and Doctorate of Philosophy; all from Harvard University itself. The most interesting part about him is he was initially interested in history and civics, and not computer science, so was pursuing courses more focused on his interests.

image

“I still vaguely remember peeking through the glass of the window when some of my friends were taking their introductory computer science classes, but I had no interest in it, honestly. I just assumed it was all about programming, and like C++ or Java, whatever those were. But it just didn't seem all that interesting to me.” said David. It wasn't until the sophomore year that he decided to take CS50, as it offered a pass-fail grade against conventional GPA scoring.

“There was this core CS50 in my first year here. And it had this alluring reputation. There were a lot of students in it. But it didn't seem like it was for me. I wasn't really a computer person in that way. And I felt like I was behind. I didn't want to hurt my GPA by taking something so unfamiliar to me. And so I stayed within my comfort zone, and I took more history, and government classes, and I declared my major to be——or concentration to be government. And it wasn't until sophomore year when I finally got up the nerve to shop, so to speak——sit in on a class before you officially register——this class called CS50. I only got up the nerve to register for it officially because the professor at the time let me sign up for pass-fail. So no harm to the GPA. I was really able to explore well beyond my comfort zone. And honestly, within weeks, I realized for the first time in like 18 years that homework can actually be fun. And if you find the field that's of interest to you, whether it's CS or anything else, by exploring things that you're not familiar with right now, you might have the same experience I did. Because I finally realized what it was. And programming itself is not the end of a course like this. It is really just about problem-solving. And so quickly did I realize, wow, I can use these kinds of ideas to go solve problems in other courses, to be more efficient.” he further added.

image

Another interesting trivia is, that at the time David took CS50, it was taught by none other than Brian Kernighan, who co-authored the first and most famous book on the C programming language (The C Programming Language) with Dennis Ritchie, the creator of C.

Teaching with Theatricality

For beginners, teaching computer science merely by doing some geeky stuff on a computer to make it look like a magic show is the worst idea generally. CS50 has brought theatrics to academics to make learning Computer Science as fun as it could be. It goes beyond just using theatre props. For example, to demonstrate an important concept of Race Conditions in SQL, the professor goes all the way out to the nearby supermarket to buy the milk, albeit pre-recorded, to store milk in his empty refrigerator, but finds it already filled once he comes back. And this is just two minutes of the entire course.

image

Is this it?

This course is what's been stopping me from breaking into tech? I don't know, but it seemed like that to me. I only regret not finding this course earlier. Still, so many people who want to get into software development are not aware of this wonderful resource, even if they try to find such resources via the internet or from experienced people in the industry. And it's the reason I have written this 10+ minute long read blog about one course. The point is that this course is a stepping stone for you to make a career in the software industry. It's like a square where you can find a way to your destination easily, instead of banging your head against the wall after seeing a number of videos on how to code or become a software developer. If you want to get deep into something, you need to start with the first principles, which CS50 is for software development. Based on where you reside and the market conditions, you will also need to have particular domain knowledge to get your first job. Harvard University has specialized courses that pick up where CS50 leaves off, which you can take for free once you are done with the base course. Currently, the following special courses are available for your interest to take forward:

Finding your first job is hard in any industry, it's even harder if you don't have industry specific university degree. Remember, breaking into tech is hard for people with non-technical backgrounds, but it does get easier once you are in.

Thank you for reading this till the end. Please consider sharing this if you think it will help other people. Connect with me on LinkedIn for more.

Disclaimer: Any public media used on this blog are the property of their respective owners and are used in accordance with the fair use provisions outlined in 17 U.S. Code § 107. This section allows for limited use of copyrighted material without permission for purposes such as commentary, criticism, news reporting, education, and research.