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:

SlotResourceProof-of-Completion
PRIMARYNand2Tetris - Part I, projects 1-6-
PRIMARY (text)The Elements of Computing Systems, Nisan & Schocken, 2nd Edition-
SECOND BUDGETCode: 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.

SlotResourceProof-of-Completion
PRIMARYNand2Tetris - 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.-
ALTERNATECS50x (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.