๐ŸŽ“

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.