Skip to content

Instantly share code, notes, and snippets.

@djg
Last active March 21, 2025 08:41
Show Gist options
  • Select an option

  • Save djg/dcba29cf3c6e0696e493c146dcb3f08c to your computer and use it in GitHub Desktop.

Select an option

Save djg/dcba29cf3c6e0696e493c146dcb3f08c to your computer and use it in GitHub Desktop.
Fabian's Recommened Reading List

Let's start meta:

  1. Lamport - State the Problem Before Describing the Solution (1978). … 1-page memo. Read it.
  2. Herlihy - Wait-free synchronization (year?) … Truly seminal. Lucid + enough good ideas for 4 papers easily.
  3. Cook - How complex systems fail (1998) … 4 pages that anyone working on/with complex systems should read.
  4. Moffat, Turpin - On the Implementation of Minimum Redundancy Prefix Codes (1997) … Much has been written about Huffman coding, a lot of it wrong. Almost everything worth knowing is in this (short!) paper. 5a. Dybvig, Hieb, Butler - Destination-Driven Code Generation_(1990) … A simple, beautiful way to improve code gen forfast one-pass compilers. 5b. Milliken - One-pass Code Generation in V8" (year?)
    … makes a great companion piece.
  5. Valmari - Fast brief practical DFA minimization (2012) … Takes a classic algorithm by Hopcroft that textbooks struggled to explain (or mostly omitted entirely) for decades, and simplifies it down to a (not particularly technical) 5-page paper.
  6. Sarnak, Tarjan - Planar Point Location Using Persistent Search Trees (1986) … an interesting problem in its own right, and this paper solves it by introducing persistent search trees made efficient using a beautiful idea (section 3!).
  7. Porter, Duff - Compositing Digital Images (1984) … Obligatory mention. Every half-year or so, another blog post crosses my timeline where someone excitedly sings the praises of premultiplied alpha. We need to get better about teaching this.
  8. Brandt - Hard Sync Without Aliasing (2001) … Introducing MinBLEPs for bandlimited synthesis. Such an awesome idea!
  9. Veach - Robust Monte Carlo Methods for Light Transport Simulation (PhD thesis, 1997) … wherein he invents a big chunk of modern light transport sim. A tour de force.
  10. Goto, van de Geijn-Anatomy of high-performance matrix multiplication (2008) … - how a high-perf GEMM works.
  11. Chazelle-Filtering search: a new approach to query-answering (1986) … - balancing preprocessing and query time, as applied to several geometric search problems. Not exactly easy reading but worth your time!
  12. McIllroy-A Killer Adversary for Quicksort (1999) … - how to do adversarial testing right. Worth studying!
  13. Knuth-Structured Programming with go to Statements (1974) … - oft-quoted, rarely read. It may surprise you.
  14. Bryant-Graph-Based Algorithms for Boolean Function Manipulation (1986) … - introducing ROBDDs and kickstarting a revolution in formal ASIC verification in the process.
  15. Donoghue et al.-Conic Optimization via Operator Splitting and Homogeneous Self-Dual Embedding (2016) … a great example of good theory making for an elegant, practical algorithm.
  16. Braun et al.-Simple and Efficient Construction of Static Single Assignment Form (2013) … There are many SSA construction algorithms; this is the slickest one I know.
  17. Lamport, Palais-On the Glitch Phenomenon (1976) … - arbitration is hard. Read Lamport's notes on it too!
  18. Curtsinger, Berger-Stabilizer: Statistically sound performance evaluation (2013) - … on how the ubiquity of address-indexed caches distorts program performance measurements, and what to do about it.
  19. Tomasulo-An efficient algorihm for exploiting multiple arithmetic units (1967) … - to my knowledged, the first Out of Order execution implementation that actually shipped - and applied to a small enough problem that it's easy to understand.
  20. Wilson, Johnstone, Neely, Boles - Dynamic storage allocation: A survey and critical review (1995) … Knuth got this one wrong.
  21. Meyer, Tischer-GLICBAWLS (2001) … Two Aussies make a dirty joke for an IOCCC entry, accidentally develop a fairly competitive lossless image coder in the process. It happens.
  22. Hutton et al.-Improving FPGA Performance and Area Using an Adaptive Logic Module (2004) … Mainly geekery for me; feel free to skip this one if you're not interested in FPGA arch, I just thought it was really cool when I first saw it! (2010 or so)
  23. O'Neill-PCG: A Family of Simple Fast Space-Efficient Statistically Good Algorithms for Random Number Generation (2014) … Introduces a new, pretty cool RNG and makes for a great introduction to the topic in general.
  24. Cook, Podelski, Rybalchenko-Termination Proofs for Systems Code … The Halting Problem: SOLVED!* *for a limited but very practically relevant class of programs; e.g. device drivers.
  25. O'Neill - The Genuine Sieve of Eratosthenes (2009) … The standard example implementation as a pure functional program is not, in fact, the same algorithm, and it's very instructive to see how it fails.
  26. Qureshi, Jaleel et al. - Adaptive Insertion Policies for High Performance Caching (2007) … - this is a HW paper, but the design principles here have been a great inspiration for me in designing adaptive algs in SW.
  27. Thompson-Reflections on Trusting Trust (1984 Turing Award lecture) … a classic. If you haven't read it, do so!
  28. Dijkstra, Lamport et. al-On-the-fly Garbage Collection: an Exercise in Cooperation (1978) … introducing
  29. Lamport-Multiple Byte Processing with Full-Word Instructions (1975) … I thought I wouldn't need to do this anymore when we got byte-wise SIMD instrs on CPUs, and then CUDA came along and it was suddenly profitable on GPUs.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment