Skip to main content

Computer systems, learned by building

Learn how computers really work.

Structured paths through computer architecture, operating systems and compilers. Build each one from scratch, then take it apart in interactive explorers.

Chapters on systems
30
Full build projects
2
Interactive explorers
6
visualize / virtual-memory
Virtual Memory Explorer Open
Walk an AArch64 page table, watch the TLB fill and trigger page faults.

Three ways in

Read the theory, build the system, then poke at it.

Visualize

Explorers

Type your own input, change the parameters and step backwards through every operation.

All explorers

Operating Systems

Virtual Memory Explorer

Walk an AArch64 page table, watch the TLB fill and trigger page faults.

Computer Architecture

CPU Cache Explorer

Tune associativity and block size, replay access patterns, see every hit and miss.

Compilers

Expression Parser Explorer

Type an expression and watch the tokens, the recursive-descent call stack and the AST.

Databases

B+Tree Explorer

Insert and delete keys, watch nodes split and merge, and follow a range scan along the leaves.

Computer Architecture

Floating-Point Explorer

Flip the bits of an IEEE 754 float and see sign, exponent, fraction and rounding error update.

Computer Architecture

Integer & Endianness Explorer

Store an integer and see its bytes land in memory: little- or big-endian, high or low word first.

Latest Technical Articles

Computer science, systems programming and quantitative engineering

Articles Published: 49
Intermediate

Compiler Control Flow in C++: x86-64 Branches, Loops and Jumps

Implement compiler control flow in x86-64 assembly by lowering IR comparisons, conditional branches, if/else statements and while loops.

Intermediate

How to Build a Compiler Backend in C++: x86-64 Generation

Build a compiler backend in C++ that translates checked IR into x86-64 NASM assembly with stack frames, arithmetic operations and native Linux executables.

Intermediate

How to Build a Compiler IR in C++: Three-Address Code

Build an intermediate representation in C++. Lower a checked AST into three-address-style instructions with temporaries, variables, basic blocks, branches, loops and function calls.

Intermediate

Compiler Semantic Analysis: Symbols, Scopes and Types in C++

Learn semantic analysis in a compiler by building symbol tables, nested scopes and static type checking in C++, with diagnostics and CTest tests.

Intermediate

How to Build a Recursive Descent Parser in C++ with an AST

Build a recursive descent parser in C++ that converts lexer tokens into an AST, handles operator precedence, reports syntax errors, and runs CTest tests.

Intermediate

How to Build a Lexer in C++: Lexical Analysis and Tokens

Build a lexer in C++ that converts source code into tokens, recognises keywords and operators, applies maximum munch, and reports useful errors.

Coming next

Build a Database From Scratch

Pager → B+tree → WAL → transactions → SQL, reusing the compiler series' parser.

  • Pager
  • B+tree
  • WAL
  • Transactions
  • SQL
Subscribe / Stdin

Hear when chapter 1 lands

The newsletter announces every new chapter and guide the day it publishes, including the first database chapter. No spam, unsubscribe in one click.

We send your address to Kit, our email provider, and ask you to confirm by email before anything is sent. See our Privacy Statement.