CS50x 2021 Review and Complete Guide

The famous CS50 course from Harvard is a staple. We are no longer in the world of just knowing one subject, as computer science has snuck its way into every scientific field.

I am just like you, someone who is looking to learn new skills. And this course was absolutely perfect to get started in the world of programming and computer science.

This is by far the best free online course available.

Review of CS50x

As the course’s title states, this is an introduction course, and no previous knowledge is required. This means it is a perfect course for people starting out on their online education journey.

You may think, “but I’m not going to study computer science”. Well, if you’re interested in any of the STEM fields, you’re always going to benefit from knowing basic computer science.

You start the course by learning key concepts about computers and programming, applied in C. Later on, the course will use these basic concepts to teach you Python, JavaScript, SQL, CSS, HTML, Flask, and much more.  

Previous Knowledge

The course starts from the very beginning and is a quick-paced introduction to the world of computer science and programming.

As stated, you do not need any previous knowledge going into this course as all concepts are explained from scratch.

Workload

The course is quite long and has long, in-depth, video lectures, short lectures, and problem set walkthroughs. The course also has several top-notch problems and labs to help you apply what you learn in the lectures.

The most important aspect when learning to program is to actually program. With the course’s easy-to-use IDE you will be able to get started without complicated installations of compilers and environments.

For most other online courses, the content is fairly easy, and entire courses can be completed in a day or a single week. But this course contains so much valuable material that you’d want to complete every step possible.

The problem sets and labs are challenging and be prepared to spend time completing and perfecting them as they’re the content that will get you to learn the material.

Recommended study procedure for each week:

  1. Read the labs and problem sets for that week. So you know what problems to solve later. It gets you to start thinking about possible solutions which will help you contextualize the weeks’ lecture and short videos.
  2. Watch the lecture. The high-quality lectures by David J. Malan have a high production value and clearly shows concepts with both physical examples and quick code implementations.
  3. Watch the shorts. The shorts go deeper in depth on some key concepts presented in the lecture. These examples will be more applicable when you’re starting to solve the labs and problem sets.
  4. Do the lab. The lab is the weeks key task. The lab is clearly explained and has an accompanying walkthrough video and hints if you get stuck.
  5. Do the problem sets. The problem sets help you get a full grasp of the concepts introduced during the week in the lecture. A very valuable exercise to spend time and solving all the problems.

You can submit the solutions to the lab and problem sets to the course by following the instructions provided in week 0 problem set “Scratch”.

If you feel that the course requires a lot of work, don’t consider it as a hindrance, but an opportunity for you to learn!

What you’ll get out of it

The course is structured by weeks which each contain lectures, shorts, and problems and labs for you to complete. I highly recommend you watch all the available content, write down and run the examples during the lectures, and complete all of the problem sets.

The course will prepare you to start taking more advanced courses and start doing your own projects. As stated before, learning programming is best done when trying to solve problems.

Programming languages

While C is not the most popular language, and it might feel discouraging to initially learn a programming language you won’t be using. But learning C gives you insights into programming concepts that are applicable when learning new languages.

It will enable you to quickly pick up C++ or C# later on. The course also teaches you Python, JavaScript, and SQL based on what you learned the previous weeks in C.

You can get a quick view of the entire course broken down below. It will also give you an idea of what topics each part contains and what you will learn from it.

As my final take, the best thing you can do is to take the course seriously and really do all the examples, follow along in the lectures and just engage with the material. This is by far the best and well-structured introduction course to computer science, enjoy!

Contents of CS50x

Week 0 – Scratch

The start of the course. While the title is Scratch, most of the lectures and content is about how computers work and basic computer science.

Lecture

TopicLengthContents
Scratch (Introduction)1:41:54Binary, Bits, ASCII, Basic algorithms, Scratch

Shorts

There are no shorts for this week.

Labs and Problem Set

Scratch

Use Scratch to create an interactive story, game, animation, or anything else, by following a list of requirements.

This is quite easy to do and will get you to start thinking about how you build programs and solve problems using the basic building blocks such as user input, loops, conditions, variables, and so on.

They provide some examples of previous submissions if you’re stuck, and the requirements will also guide you in creating a reasonably sized project.

Week 1 – C

This chapter primarily gets you set up for the rest of the course by introducing you to the CS50 IDE, basic terminal command lines.

Lecture

TopicLengthContents
C2:24:50Hello World, Data types, Variables, Loops

Shorts

TopicLength
Data types13:31
Operators12:20
Conditional Statements9:13
Loops9:22
Command Line17:51

Labs and Problem Set

Hello

A basic Hello World problem that gets you familiar with C syntax and the use of the terminal commands.

Mario I and II

Using loops and conditions to print out “#” representing blocks in the Mario game in different shapes.

Cash

A counter for how many coins you would need to give the change of an input dollar value.

Credit

Analyze entered credit card number if it is valid and which company it belongs to. This problem is kind of hard, but I really recommend you give it some time, and at least try and understand some of the explanations that are available online.

Population

Simulate a population of lamas over time based on initial conditions and birthrates and death rates. A fun problem set which you can experiment a lot with and create different scenarios which increase or decrease the population growth.

The problem really helps you get a good fundamental understanding of iterations and loops.

Week 2 – Arrays

Lecture

TopicLengthContents
Arrays2:22:25Command-line arguments, compiling Memory, Strings, Cryptography

Shorts

TopicLength
Functions20:24
Variables and scope7:41
Arrays14:01
Command Line Arguments7:50

Labs and Problem Sets

Scrabble

Write a program that compares the scrabble value of two words. Pretty straightforward lab to evaluate chars of strings.

Readability

Text analysis using the Coleman-Liau index to determine how “well” a sentence is written. A good mini-project to practice handling strings and analyzing text.

Caesar

Create a cipher based on shifting characters in the alphabet by a certain number that’s declared in the command line when running the program.

Substitution

Using a 26 character key to map characters with new ones.

Week 3 – Algorithms

Lecture

TopicLengthContents
Algorithms2:22:25Algorithm speed, Sorting algorithms

Shorts

TopicLength
Linear Search2:50
Binary Search9:31
Bubble Sort5:55
Selection Sort4:00
Recursion13:49
Merge Sort10:27

Labs and Problem Sets

Sort

Analyze three different sorting algorithms to determine which is a Bubble Sort, Selection Sort, or Merge Sort.

Plurality

Count the number of votes and declare a winner in an election.

Runoff

Similar to Plurality but with different counting rules with multiple votes per ballot.

Tideman

Similar to Plurality and Runoff but another way of tallying the votes.

Week 4 – Memory

Lecture

TopicLengthContents
Memory2:41:23Hexadecimal, Pointers, Stack Overflow, Files I/O

Shorts

TopicLength
Hexadecimal9:28
Pointers29:17
Defining Custom Types3:32
Dynamic Memory Allocation14:11
Call Stacks7:39
File Pointers18:21

Labs and Problem Sets

Volume

Change the volume of an audio file.

Filter I and II

Apply a filter to a BMP file.

Recover

Extract, or recover, JPEGs from raw data.

Week 5 – Data Structures

Lecture

TopicLengthContents
Data Structures2:26:39Linked Lists, Binary Search Trees, Hash Tables and Functions, Dictionaries

Shorts

TopicLength
Data Structures8:52
Singly-Linked Lists23:22
Hash Tables18:46
Tries16:23

Labs and Problem Sets

Inheritance

Simulate the inheritance of blood types for each member of a family.

Speller

Implement a program that spell-checks a file using a hash table.

Week 6 – Python

Lecture

TopicLengthContents
Python2:40:45Variables, Conditions, Loops, Functions, Dictionaries, CSV files, Facial and Speech Recognition

Shorts

TopicLength
Python39:00

Labs and Problem Sets

World Cup

Write a program to run simulations of the FIFA World Cup.

Hello

Same as week 1 but in Python.

Mario I and II

Same as week 1 but in Python.

Cash and Credit

Same as week 1 but in Python.

Readability

Same as week 2 but in Python.

DNA

Implement a program that identifies a person based on their DNA.

Week 7 – SQL

Lecture

TopicLengthContents
SQL2:37:19Databases, Data cleaning, Lambda Functions, SQLite, Commands, Relational Data, Many-to-many Relationships, SQL-injection

Shorts

TopicLength
SQL23:18

Labs and Problem Sets

Songs

Write SQL queries to answer questions about a database of songs.

Movies

Write SQL queries to answer questions about a database of movies.

Fiftyville

Write SQL queries to solve a mystery.

Week 8 – HTML, CSS, JavaScript

Lecture

TopicLengthContents
HTML, CSS, JavaScript2:32:54Internet, Routers, TCP/IP, DNS, Domains, URL, HTML, CSS, Classes, JS

Shorts

TopicLength
Internet Primer19:47
IP15:34
TCP9:31
HTTP15:02
HTML21:34
CSS13:39
JavaScript18:06
DOM20:34

Labs and Problem Sets

Trivia

Write a webpage that lets users answer trivia questions.

Homepage

Build a simple homepage using HTML, CSS, and JavaScript.

Week 9 – Flask

Lecture

TopicLengthContents
Flask2:30:23Templates, Forms, GET and POST, Layouts, Error-checking, Loops, Databases, Sessions, Log in, Ajax

Shorts

TopicLength
Flask17:18
Ajax13:32

Labs and Problem Sets

Birthdays

Create a web application to keep track of friends’ birthdays.

Finance

Implement a website via which users can “buy” and “sell” stocks.

Week 10 – Ethics

Lecture

TopicLengthContents
Ethics1:17:13 Course summary, Ethics, Final Project

Shorts

There are no short videos on the Ethics topic.

Labs and Problem Sets

Ethics

Reading assignment and answering a quiz.

Security

Lecture

TopicLengthContents
Security57:38Passcodes, Brute-Force Attacks, 2FA, Password managers, Encryption

Shorts

There are no short videos on the Security topic.

Labs and Problem Sets

There are no labs or problem sets for the Security Intelligence topic.

Artificial Intelligence

Lecture

TopicLengthContents
Artificial Intelligence1:12:33Decision Making, Decision Trees, Reinforcement Learning, Genetic Algorithms, Neural Networks

Shorts

There are no short videos on the Artificial Intelligence topic.

Labs and Problem Sets

There are no labs or problem sets for the Artificial Intelligence topic.

Final Project

The final project has no lecture, shorts, or labs and problem sets. Instead, you are tasked with defining and completing a project of your choosing under certain constraints and requirements.

This is a great way for you to bring everything you’ve learned in the course into one application that you or others could benefit from.

The project may also require you to acquire new knowledge and implementation strategies that have not been covered in the course.

There are several examples of previous projects from which you can draw inspiration.

Similar Posts