The reading room · 64 entries

The library.

The papers, books, and lectures we keep returning to — assigned across all eleven courses, plus the curated paths we send applicants before their interview. Read what you can, and at least three before you apply.

Curated routes through the library.

Six paths, each a sequence of 4–6 readings. If you only have a weekend before applying, pick one and read in order.

Path 015 readings · ~ 8 hrs

Foundations of good practice.

Where to start if you've never read a "classic" software paper. Equally good before a Lattice interview or before a long flight.

  • 01Out of the Tar Pit · Moseley & Marks2006
  • 02Hints for Computer System Design · Lampson1983
  • 03Worse Is Better · Gabriel1991
  • 04A Philosophy of Software Design · Ousterhout, ch. 1–42018
  • 05No Silver Bullet · Brooks1986
Path 026 readings · ~ 14 hrs

The distributed path.

For applicants to the Distributed Systems track, or anyone who's been bitten by a clock. Read in order.

  • 01A Note on Distributed Computing · Waldo et al.1994
  • 02Time, Clocks & Ordering · Lamport1978
  • 03In Search of an Understandable Consensus Algorithm · Ongaro & Ousterhout2014
  • 04Harvest, Yield, & Scalable Tolerant Systems · Fox & Brewer1999
  • 05CRDTs: Consistency Without Concurrency Control · Shapiro et al.2011
  • 06A Conflict-Free Replicated JSON Datatype · Kleppmann & Beresford2017
Path 035 readings · ~ 10 hrs

The compilers path.

Build a small language by reading. The order is from "what is a compiler" to "how do compilers handle gnarly cases."

  • 01Why Functional Programming Matters · Hughes1989
  • 02Crafting Interpreters · Nystrom (parts I & II)2021
  • 03A Tutorial on the Universality of Untyped Lambda Calculus · Wadler1992
  • 04Engineering a Compiler · Cooper & Torczon, ch. 1–62011
  • 05Bidirectional Type Checking · Pierce & Turner2000
Path 044 readings · ~ 6 hrs

The security path.

If trust is the topic, this is your starter pack. We assign three of these in week one of the Cryptography track.

  • 01Reflections on Trusting Trust · Thompson1984
  • 02The Cryptographic Doom Principle · Moxie Marlinspike2011
  • 03Lessons from the History of Attacks on Secure Hash Functions · Bellare et al.2017
  • 04Spectre Attacks: Exploiting Speculative Execution · Kocher et al.2019
Path 055 readings · ~ 9 hrs

The databases path.

B-trees, transactions, query plans. Curated by Farah Naidu before each cohort of Database Internals.

  • 01The Five-Minute Rule · Gray & Putzolu1987
  • 02A Critique of ANSI SQL Isolation Levels · Berenson et al.1995
  • 03The Log-Structured Merge-Tree · O'Neil et al.1996
  • 04Architecture of a Database System · Hellerstein et al.2007
  • 05FoundationDB Record Layer · FoundationDB Team2018
Path 064 readings · ~ 5 hrs

On writing code.

From Editorial Engineering. Short, sometimes sharp, always opinionated. Read these in any order.

  • 01A Note on the Notion of Programming Style · Dijkstra (EWD 0227)1968
  • 02Make Bad Code Good · Sandi Metz2014
  • 03The Wrong Abstraction · Sandi Metz2016
  • 04On the Importance of Not Trying · Hickey2011
Filter

Everything we assign.

The complete list — papers and lectures only. Books are below, video lectures further down. Filter by track at the top.

№ 011968The Structure of the "THE" Multiprogramming SystemDijkstraSystems № 021968A Note on the Notion of Programming StyleDijkstra · EWD 0227Craft № 031978Time, Clocks, & the Ordering of EventsLamportDistributed № 041983Hints for Computer System DesignLampsonSystems № 051984Reflections on Trusting TrustThompsonSecurity № 061986No Silver BulletBrooksCraft № 071987The Five-Minute RuleGray & PutzoluDatabases № 081989Why Functional Programming MattersHughesLanguages № 091991Worse Is BetterGabrielCraft № 101992A Tutorial on the Universality of Untyped λ-CalculusWadlerLanguages № 111994A Note on Distributed ComputingWaldo, Wyant, Wollrath, KendallDistributed № 121995A Critique of ANSI SQL Isolation LevelsBerenson et al.Databases № 131996The Log-Structured Merge-TreeO'Neil et al.Databases № 141999Harvest, Yield, & Scalable ToleranceFox & BrewerDistributed № 152000Bidirectional Type CheckingPierce & TurnerLanguages № 162006Out of the Tar PitMoseley & MarksSystems № 172007Architecture of a Database SystemHellerstein, Stonebraker, HamiltonDatabases № 182011Simple Made EasyHickey · Strange Loop talkCraft № 192011The Cryptographic Doom PrincipleMarlinspikeSecurity № 202011Conflict-Free Replicated Data TypesShapiro et al.Distributed № 212014In Search of an Understandable Consensus Algorithm (Raft)Ongaro & OusterhoutDistributed № 222014Make Bad Code GoodMetzCraft № 232016The Wrong AbstractionMetzCraft № 242017Lessons from Attacks on Secure Hash FunctionsBellare et al.Security № 252017A Conflict-Free Replicated JSON DatatypeKleppmann & BeresfordDistributed № 262019Spectre Attacks: Exploiting Speculative ExecutionKocher et al.Security № 272021Crafting InterpretersNystrom · book onlineLanguages № 282023A Decade of Production FailuresYuan et al.Systems

Books we recommend.

Either own a copy or borrow one from the studio shelf in Berlin. Most live on our reading list permanently.

A Philosophy of Software Design
John Ousterhout · 2018
Required · all tracks
Designing Data-Intensive Applications
Martin Kleppmann · 2017
Required · Distributed, Databases
Computer Systems: A Programmer's Perspective
Bryant & O'Hallaron · 2015
Required · Systems
Engineering a Compiler
Cooper & Torczon · 2011
Reference · Languages
Cryptography Engineering
Ferguson, Schneier, Kohno · 2010
Reference · Security
Crafting Interpreters
Robert Nystrom · 2021
Free online · Languages
99 Bottles of OOP
Sandi Metz · 2017
Reference · Editorial
The Art of Computer Programming
Knuth · 1968 →
For life · all tracks

A new entry,
monthly.

Once a month: a single new addition to the library — paper, lecture, or book — with a short note on why we added it. Plain text, no tracking.