Destroy All Software

Instructed by Gary Bernhardt
Memory allocators divide up memory into pieces. But how can an allocator's author allocate memory to track the pieces?
The shells used in terminals – Bash, zsh, etc. – are little compilers wrapped in a loop. We build one with working pipes.
Data compression can be simple. Huffman coding, as used in ZIP, MPEG, and MP3, is built around one clever use of a tree.

We build six fundamental programming tools from scratch in about thirty minutes each. Each focuses on understanding the core behavior of the tool, rather than the esoteric details and legacy concerns of real-world implementations.