๐
Carnegie Mellon's CS Track
CMU's intro computer science sequence is one of the most respected in the world โ and its shape is public. Here's the real progression: what language each course uses, what tool students actually work in, and the signature assignment that defines it. Each step links to a free cheat sheet here so you can build the same skill yourself.
STEP 1
Fundamentals of Programming
15-112 ยท Fundamentals of Programming and Computer Science
PythonVS Code
The very first course. Students learn Python from first principles โ no prior experience assumed โ and build up through recursion, object-oriented programming, and working with strings, lists, sets, and dictionaries.
Signature assignment: weekly homework and quizzes building toward a substantial term project โ students design and implement a real Python program with minimal guidance, start to finish.
Start the Python cheat sheet โ
โ
STEP 2
Principles of Imperative Computation
15-122 ยท Principles of Imperative Computation
CLinux / AutolabCompiler + debugger tools
This is the jump from Python's guardrails to C's bare metal. Students spend most of the term in C0 โ CMU's own simplified teaching subset of C, designed to catch mistakes early โ then transition into full, unrestricted C near the end of the course.
Signature assignment: assignments built around "deliberate programming" โ writing contracts and specifications before code, then implementing data structures and proving your solution is correct, not just that it runs.
Start the C cheat sheet โ
โ
STEP 3
Introduction to Computer Systems
15-213 ยท Introduction to Computer Systems ("CS:APP")
Cx86-64 assemblyUnix/Linux terminalAutolab
CMU's most famous course. Rather than more application programming, this is where students go underneath their own code โ how a compiler actually turns C into machine instructions, how memory is really laid out, and how a shell, a network socket, or a cache actually work.
Signature assignments โ the "systems labs":
- Data Lab โ bit-level manipulation with no normal operators
- Bomb Lab โ reverse-engineer a binary before it "detonates"
- Attack Lab โ exploit buffer overflows on purpose, to understand why they're dangerous
- Cache Lab โ simulate a CPU cache and optimize real code around it
- Shell Lab โ build your own working Unix shell
- Malloc Lab โ write your own
malloc/free from scratch
- Proxy Lab โ build a working network proxy server
This step builds directly on the C skills from Step 2 โ the C cheat sheet above (pointers, structs, and especially dynamic memory / malloc) is exactly the foundation Malloc Lab assumes you already have.