Skip to content

Nand2Tetris: The Elements of Computing Systems

Descriptions

  • Source: Hebrew University (Noam Nisan, Shimon Schocken)
  • Prerequisites: None, beginner-friendly
  • Programming Language: HDL, Jack (Java-like), Assembly
  • Difficulty: 🌟🌟🌟
  • Class Hour: 80+

Nand2Tetris is a legendary course: starting from a NAND gate, build a complete computer system step by step, and ultimately run Tetris on it.

The philosophy: there's no "magic" in computer systems. From the lowest-level logic gates to the highest-level operating system and compiler, each layer can be built from the abstraction of the previous one. When you do this hands-on, you gain an inside-out understanding of computer systems.

Course Resources

Course Structure

Part 1: Hardware to Computer (Chapters 1-5)

  1. Boolean logic: Build basic gates from NAND (AND, OR, NOT, XOR, MUX, DMUX)
  2. Boolean arithmetic: Build the ALU
  3. Sequential logic: Build registers and RAM
  4. Machine language: Design the instruction set
  5. Computer architecture: Combine all components into a complete Hack computer

Part 2: Assembly to Compiler (Chapters 6-11)

  1. Assembler: Translate assembly to machine code
  2. VM I: Stack-based VM implementation
  3. VM II: Program control flow
  4. High-level language: Jack language (Java-like)
  5. Compiler I: Syntax analysis
  6. Compiler II: Code generation
  7. Operating system: Standard libraries

Self-Study Tips

Don't skip any chapter. Each builds on the previous. Skip gates and you can't understand the ALU; skip the ALU and you can't understand the CPU.

Do the projects. The course centers on 12 projects — from designing a NAND gate to implementing Tetris. Each requires hand-on work; no shortcuts.

Pair with CS:APP. Nand2Tetris gives a bottom-up perspective; CS:APP gives a top-down perspective. Together, they provide a complete picture.

Notes

Nand2Tetris is the best introductory course for understanding computer systems. It doesn't replace specialized courses (architecture, OS, compilers), but it gives you a full-stack perspective of how every layer is built.

Many consider it the best CS course they've ever taken. After completing it, you'll have a completely new understanding of computers.