← All courses

CS50: Introduction to Computer Science

Harvard's legendary intro to CS: Scratch to C to Python, SQL, and the web, taught as things you can actually watch happen.

12 units · 93 topics · 443 questions

Week 0: Scratch8 topics · 38 questions

Computational thinking before a single line of text-code: binary, abstraction, and algorithms taught in click-together blocks.

Computational Thinking and Problem Solving · Representing Numbers in Binary · ASCII, Unicode, and Text as Bits · RGB and Representing Color · +4 more

Week 1: C8 topics · 37 questions

Trading Scratch's blocks for actual text: the same ideas, now typed by hand, and judged on more than just whether they run.

From Blocks to Text: Why C · Anatomy of a C Program · Data Types in C · Operators and Expressions · +4 more

Week 2: Arrays8 topics · 38 questions

From typed source code to a running program, plus the first real data structure: the array, and the strings and ciphers built on top of it.

From Source Code to Executable · Debugging Strategies · Arrays in Memory · Strings as Arrays of Characters · +4 more

Week 3: Algorithms9 topics · 46 questions

Searching and sorting as things you can watch: a phone book torn in half, and three sorting strategies racing on the same shuffled deck.

What Makes an Algorithm Efficient · Linear Search · Binary Search · Big O and Asymptotic Notation · +5 more

Week 4: Memory10 topics · 47 questions

Memory made physical: addresses as boxes on a grid, pointers as arrows, malloc carving out space, and what happens when code writes past the end.

Hexadecimal Numbers · Pointers and Memory Addresses · Pointer Arithmetic and Arrays · Dynamic Memory Allocation with malloc · +6 more

Week 5: Data Structures9 topics · 46 questions

Building your own containers out of pointers: stacks, queues, linked lists, trees, hash tables, and tries, each trading one strength for another.

Abstract Data Types · Stacks: LIFO · Queues: FIFO · Singly Linked Lists · +5 more

Week 6: Python8 topics · 36 questions

The same problems, solved again in far fewer lines, and an honest look at what that convenience costs and what it buys.

Why Python After C · Python Syntax and Dynamic Typing · Python Lists vs. C Arrays · Python Strings and Slicing · +4 more

Week 6.5: Artificial Intelligence5 topics · 22 questions

A short detour into what CS50 now teaches about large language models: how they predict text, why they hallucinate, and how to use one honestly.

How LLMs Predict the Next Word · Prompting an AI Effectively · Why AI Hallucinates · Using AI Responsibly While Coding · +1 more

Week 7: SQL8 topics · 40 questions

Data organized into tables instead of files: querying, joining, and the two classic ways an attacker can break a database.

Relational Data and Tables · Primary and Foreign Keys · SELECT Queries · INSERT, UPDATE, and DELETE · +4 more

Week 8: HTML, CSS, JavaScript8 topics · 38 questions

The internet's actual plumbing, DNS, TCP/IP, HTTP, followed by the three languages that turn a response into a page you can click.

How the Internet Works: TCP/IP · DNS Lookups · The HTTP Request-Response Cycle · HTML Structure and Tags · +4 more

Week 9: Flask7 topics · 33 questions

A web app comes alive on a server: routes answering requests, sessions remembering who you are, and one push shipping it to the world.

Routes and View Functions · Handling GET and POST Requests · Templates and Jinja · Sessions and Cookies · +3 more

Week 10: The Final Project5 topics · 22 questions

No more problem sets: choosing your own project, designing it before you code it, and where the road goes after CS50 ends.

Choosing a Final Project · Planning and Designing Your Project · Presenting a Finished Project · Where to Go After CS50 · +1 more