the hacker's university
Because elite training should be available to everyone.
“Like Hogwarts, but for Hackers!” - Linus Dumbledore
# Phase 0 - The Machine
Thesis: Before writing a line of code, you must be able to say what a byte is, where it lives, and what physically happens when an instruction executes.
Objectives:
| Slot | Resource | Proof-of-Completion |
|---|---|---|
| PRIMARY | Nand2Tetris - Part I, projects 1-6 | - |
| PRIMARY (text) | The Elements of Computing Systems, Nisan & Schocken, 2nd Edition | - |
| SECOND BUDGET | Code: The Hidden Language of Computer Hardware and Software, Charles Petzold, 2nd ed 2022 | - |
In Nand2Tetris we build the Hack machine. This machine has no cache, no MMU, no privilege rings, no interrupts, no MMIO and no real ABI. Phase 2 will close this gap.
Gate test Given a 32-bit hexadecimal word on paper, state what it represents as (a) an unsigned integer, (b) a two’s-complement signed integer, (c) an IEEE-754 single-precision float, (d) four ASCII bytes. By hand, no calculator, no reference, under five minutes. Then, given a second word, state what the sum overflows to and why. Fails if: you reach for a tool, or you can do (a) and (d) but not (b) and (c).
# Phase 1 - The Program
Thesis: Write real programs in a language that does not hide memory, and acquire the model of a process as a laid-out address space rather than a running script.
| Slot | Resource | Proof-of-Completion |
|---|---|---|
| PRIMARY | Nand2Tetris - Part II, projects 7-12 | - |
| PRIMARY (c) | Modern C, Jens Gustedt - free PDF, 2nd edition 2019 | - |
| PRIMARY (tooling) | MIT Missing Semester. | - |
| PRIMARY (algorithms) | Algorithms, Jeff Erickson | - |
| PRIMARY (databases) | Build against SQLite from Phase 1 onward and read its source and documentation. Unusually well-written production C. | - |
| ALTERNATE | CS50x (HarvardX). | - |
Gate test For a recursive function of your own writing, draw the stack frame at maximum depth on paper: saved registers, return-address location, local-variable offsets, direction of growth. Then compile it and verify the drawing against the actual binary. Two cumulative hours. Fails if: the drawing and the binary disagree and you cannot say why. That gap is the point of the test.
# Phase 2 - The System
Thesis: Descend through the abstractions your program sits on until the syscall boundary, the loader and the instruction stream are all visible at once.