Sessions
What happens in the room each week, what to bring, and how it relates to the target you are carrying.
Each week you apply that week's technique to one program. Where your assignment target suits the technique, use it — the work counts twice, and several weeks are built so that it will. Where it does not suit, take one of the suggestions offered; understanding a technique your own target does not need is most of what the course is for.
No target fits all twelve weeks. Week 3 wants something written in JavaScript; week 9 wants something you can obtain as a compiled binary; week 11 wants something that draws. Suggestions are given every week so that nobody spends the hour deciding what to work on.
Because the room is working on different programs, the comparison across the room is the part you cannot get alone — the same technique against a dozen targets, succeeding and failing for reasons you would never have hit yourself. Bring a laptop, and something you are prepared to be wrong about.
Four things that should not work
Run a PC, a kernel and two games in a browser tab, and form an opinion about what each one costs before anybody tells you
Week 1 · 22 February 2027
What does it need?
Take a program apart from the outside and write down what it requires, using evidence rather than assumption
Week 2 · 1 March 2027
The shim that almost works
Run real programs against a fake runtime and find the exact line where impersonation stops paying
Week 3 · 8 March 2027
Which interface stops you first?
Compile several things that have no business compiling, and find the pattern in how they fail
Week 4 · 15 March 2027
What does it ask the kernel for?
Take the syscall inventory of a real program and decide which surface could actually host it
Week 5 · 22 March 2027
Tested in Node, broken in a tab
Reproduce a defect that only exists in a browser, and work out what your test environment was quietly forgiving
Week 6 · 29 March 2027
What does it need from a filesystem?
Establish what your program actually requires of a filesystem, then break a filesystem that looks correct
Week 7 · 12 April 2027
What does it talk to?
Inventory your program's network requirements, then find out which of them a browser can actually satisfy and what the rest would cost
Week 8 · 19 April 2027
Could it run unmodified?
Establish what it would take to run your target as a binary rather than as source, and price the answer
Week 9 · 26 April 2027
Measuring a kernel
Take your own numbers off a prepared machine, then work out what a whole operating system would cost your target
Week 10 · 3 May 2027
The rendering path
Trace a pixel from a program to the screen, and find out what a committed approach leaves you able to draw with
Week 11 · 10 May 2027
Defending the commitment
Present the approach you committed to and have it attacked by people who committed to something else
Week 12 · 17 May 2027