Want to Become a Software Engineer in 2023? Start With This Course

This course teaches students how to think algorithmically and solve problems efficiently.

Harvard’s CS50 is an introduction to computer science course taught by David J. Malan, Gordon McKay Professor of the Practice of Computer Science. We believe that this course is the best resource to start with if you want to become a software engineer.

Why CS50? Lots of people jump straight into web and/or mobile application development, neglecting fundamental computer science knowledge. This can lead to frustrations in your career. Of course, you can build applications, but you are lacking an understanding of what’s actually going on within the computer (under-the-hood, so to speak).

That’s where CS50 comes in. It will equip you with the fundamental knowledge you’ll need to be a great software engineer later in your career.

Course Contents

  • Week 0 – Scratch
  • Week 1 – C
  • Week 2 – Arrays
  • Week 3 – Algorithms
  • Week 4 – Memory
  • Week 5 – Data Structures
  • Week 6 – Python
  • Week 7 – SQL
  • Week 8 – HTML, CSS, and JavaScript
  • Week 9 – Flask
  • Week 10 – Emoji


Week 0 slowly introduces you to programming with Scratch, a coding community for children. It’s meant to ease the fear of learning programming concepts, and introduce you to the logic that you’ll need when you get to C.

It’s a fun week that will prepare your brain for the weeks ahead.


This is where things start to get a bit more technical. You’ll be introduced to the C programming language before anything else. You might be wondering why CS50 uses C as its introductory programming language. Professor Malan answered this question himself, on Quora:

C is just about as close to a computer’s hardware as you can get before you have assembly language (which would be too arcane, I think, for an introductory course like CS50). In C, there’s no magic. If you want something to be somewhere in memory, you have to put it there yourself. If you want a hash table, you have to implement it yourself. The result by term’s end, we hope, is that students understand how things work from the bottom up and, better yet, can explain as much.

Shortly within the course, you’ll be writing your first C program!

#include <stdio.h>

int main(void)
  printf("Hello, World!\n");

Arrays, Algorithms, Memory, and Data Structures

These four weeks continue with C, exploring common algorithms and data structures, really digging into computer science fundamentals.

As you can imagine, by the end of it, your knowledge of C will be exceptional.


Whew, no more C! We’re finally moving onto a higher-level language, Python. Python lets you work quickly, with no need to compile your code before you run it. It’s so much easier to write Python than C, that’s for sure!


SQL (Structured Query Language), is a language used in programming and designed for managing data held in a relational database system. The knowledge is all coming together at this point. Python can be used as a backend server language, for example, and SQL can structure the data the application will consume.

HTML, CSS, and JavaScript

In week 8, we get to web development. HTML, CSS, and JavaScript are the technologies that create the frontend of web applications (note: JavaScript can also be used as a backend language).

Whoah! You have been introduced to just about the entire fullstack web technologies needed to create fullfledged web applications. However, something like a framework will make that a bit easier for you, of which you will learn in the next week.


Flask is a Python framework used for developing web applications using python. A perfect introduction after learning the previous topics. You will now be able to build small web applications after completing this week.


Week 10 is a fascinating lecture, discussing computational thinking, and precision and abstraction. Further in the lecture, Jennifer Lee makes an appearance and gives the rest of the lecture.


CS50 is going to equip you with a lot of knowledge. After completing this course, you should have a better idea of what you want to do in technology as well. This course will change your life! Afterwards, you might want to learn JavaScript more in-depth!

Frequently Asked Questions

Is CS50 free?

Yes, CS50 is 100% free to take online. However, you will have to pay for a certificate of completion.

Is CS50 hard?

CS50 can indeed be a challenging course at times. But if you stick with it until the end, you will be incredibly greatful that you did.

Is the CS50 certificate from edX worth it?

It’s really hard to say. If you want to have a feeling of accomplishment, sure, a certificate is an great thing to have! If you’re thinking of using it to apply for jobs, it may or may not be worth it (it depends on the employer.)

Is CS50 enough to get a job?

The knowledge you will acquire from taking CS50 will bring you close to being a confident software developer, however, just this course alone is not enough to get a job, you’ll still need to apply your skills by creating projects. You will also need to network, and gather some experience.

comments powered by Disqus

Related Posts

Remote First: 5 Websites for Remote Job Opportunities

Would you prefer to work in an office, or while sitting at a beach somewhere in Thailand (i.e. remotely)? Okay, maybe there’s no beach in this scenario, but there’s definitely silence, and maybe your cat.

Read more

The Best Way to Learn How to Code in 2024

Codecademy has been around for awhile now, but we felt this masterful site deserved to be highlighted in an article. It is one of the resources I originally used when I was learning how to code.

Read more

Unveiling the Fascination of the Collatz Conjecture: Exploring Sequence Creation with JavaScript

The Collatz Conjecture, also known as the 3x+1 problem, is a fascinating mathematical puzzle that has intrigued mathematicians for decades. It has sparked publications with titles such as The Simplest Math Problem Could Be Unsolvable, or The Simple Math Problem We Still Can’t Solve because it is, indeed, rather simple-looking.

Read more