🎓

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.