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:
- 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.
- 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.
- 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.
- 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.
- 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
Topic | Length | Contents |
Scratch (Introduction) | 1:41:54 | Binary, 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
Topic | Length | Contents |
C | 2:24:50 | Hello World, Data types, Variables, Loops |
Shorts
Topic | Length |
Data types | 13:31 |
Operators | 12:20 |
Conditional Statements | 9:13 |
Loops | 9:22 |
Command Line | 17: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
Topic | Length | Contents |
Arrays | 2:22:25 | Command-line arguments, compiling Memory, Strings, Cryptography |
Shorts
Topic | Length |
Functions | 20:24 |
Variables and scope | 7:41 |
Arrays | 14:01 |
Command Line Arguments | 7: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
Topic | Length | Contents |
Algorithms | 2:22:25 | Algorithm speed, Sorting algorithms |
Shorts
Topic | Length |
Linear Search | 2:50 |
Binary Search | 9:31 |
Bubble Sort | 5:55 |
Selection Sort | 4:00 |
Recursion | 13:49 |
Merge Sort | 10: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
Topic | Length | Contents |
Memory | 2:41:23 | Hexadecimal, Pointers, Stack Overflow, Files I/O |
Shorts
Topic | Length |
Hexadecimal | 9:28 |
Pointers | 29:17 |
Defining Custom Types | 3:32 |
Dynamic Memory Allocation | 14:11 |
Call Stacks | 7:39 |
File Pointers | 18: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
Topic | Length | Contents |
Data Structures | 2:26:39 | Linked Lists, Binary Search Trees, Hash Tables and Functions, Dictionaries |
Shorts
Topic | Length |
Data Structures | 8:52 |
Singly-Linked Lists | 23:22 |
Hash Tables | 18:46 |
Tries | 16: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
Topic | Length | Contents |
Python | 2:40:45 | Variables, Conditions, Loops, Functions, Dictionaries, CSV files, Facial and Speech Recognition |
Shorts
Topic | Length |
Python | 39: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
Topic | Length | Contents |
SQL | 2:37:19 | Databases, Data cleaning, Lambda Functions, SQLite, Commands, Relational Data, Many-to-many Relationships, SQL-injection |
Shorts
Topic | Length |
SQL | 23: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
Topic | Length | Contents |
HTML, CSS, JavaScript | 2:32:54 | Internet, Routers, TCP/IP, DNS, Domains, URL, HTML, CSS, Classes, JS |
Shorts
Topic | Length |
Internet Primer | 19:47 |
IP | 15:34 |
TCP | 9:31 |
HTTP | 15:02 |
HTML | 21:34 |
CSS | 13:39 |
JavaScript | 18:06 |
DOM | 20: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
Topic | Length | Contents |
Flask | 2:30:23 | Templates, Forms, GET and POST, Layouts, Error-checking, Loops, Databases, Sessions, Log in, Ajax |
Shorts
Topic | Length |
Flask | 17:18 |
Ajax | 13: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
Topic | Length | Contents |
Ethics | 1: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
Topic | Length | Contents |
Security | 57:38 | Passcodes, 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
Topic | Length | Contents |
Artificial Intelligence | 1:12:33 | Decision 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.