Two-Year ML, Systems & Quantum Research Plan

UW undergraduate research roadmap, 2026–2028 · Aug 17, 2026 – Sep 4, 2028 · 750 days · 13 periods

Become the undergraduate who can take a real ML/NLP question from evidence to implementation to measurement, who understands the systems underneath it, and who can then carry the same discipline onto a machine that does not work like the one underneath it.

The unit is the day, not the week and not the three-day block. Five lanes every day — a paper, a systems chapter, an AI chapter, a system implemented, an open-source contribution — for 750 days, with both reading lanes bending toward quantum computing once the classical pillars have shipped.

By 2028: sustained lab trust, a first-author-ready arc, four or five serious repositories, rigorous experiment logs, one measured ML-systems contribution, and one quantum-systems artifact benchmarked against an established tool.

USACO Gold and two AIME qualifications already demonstrate algorithmic strength and mathematical maturity. The missing evidence is open-ended work: experiments, systems reliability, research judgment, technical writing, and sustained contributions to a group.

Priority order

  1. Course performance. Protect grades and turn CSE 446/447/451/452 work into artifacts instead of duplicating it with unrelated side projects.
  2. Research capability. ML/DL study and systems study count as research. Build, test, measure, and write; maintain a mentor relationship.
  3. The daily contract. Five lanes a day. It outranks everything below it because it is the thing that compounds — a quarter of kept days is a portfolio, and a quarter of skipped ones is a plan nobody can tell you followed.
  4. Open-source contribution. Something every day; a pull request opened two or three times a week. Logged from /Admin, gaps included.
  5. Startup. Only continue a cycle when it shares data, infrastructure, or a research question with the main track.
  6. Codeforces. Practice and selected contests for sharpness; never chase rating at the expense of research evidence.
  7. Putnam. Optional proof practice. Pause first under a heavy course, research, or application deadline.

Operating policy

Daily lanes

LaneMinimum loopWhat counts as done
PaperOne paper a day, named in the calendar with a link and a reason. Systems or quantum on odd days, AI or an AI-adjacent field on even ones. This is the one lane that does not pause on a catch-up day.A five-bullet card: claim, method, evidence, weakness, next experiment.
Systems chapterOne chapter or section in the book's own order — OSTEP, CS:APP, DDIA, networks, distributed, architecture, PMPP, compilers, then quantum information, error correction and quantum systems.A trace, a test, a design note, a profiler capture — or it fed the day's system.
AI chapterOne chapter or section — the DL/CV/NLP core first, then the fields that consume it (structural biology, robotics, scientific computing), then quantum mechanics as physics.A derivation worked, an implementation, or it fed the day's system.
SystemOne system implemented. Either atomic — whole in a day — or one increment on a long-running track: ferrodb, riscv-vm, tensorforge, inferd, then qsim, stab, qroute, qdec, then the capstone.It runs, and one number was measured about it.
Open sourceOne contribution to someone else's repository. What to contribute is chosen on the day and never scheduled here; a pull request two or three times a week is the realistic rate.Logged from /Admin — repo, kind, link, what it did, what came of it. A day with no entry stays empty.

Learning spine

PillarPrimary readingMastery evidence
Deep learningGoodfellow, Bengio & Courville, Deep Learning — the book actually being read, cover to cover. Simon Prince, Understanding Deep Learning, kept as the second explanation for a chapter that will not open.Autodiff and gradient checks; a reliable trainer; a deliberate overfit; controlled optimizer, regularization, and model ablations.
NLP / LLMsJurafsky & Martin, Speech and Language Processing; Yoav Goldberg, Neural Network Methods for NLP.Tokenizer, attention, causal mask, a small decoder LM, fine-tuning and evaluation, retrieval and failure analysis.
AI beyond the benchmarkDurbin et al. for sequence models in biology; Lynch & Park and Thrun for robotics; the neural-operator and physics-informed literature for scientific ML.One reproduction outside the language-model default per period, against a domain baseline you did not invent.
SystemsOSTEP, CS:APP, DDIA; networks and distributed systems; Hennessy & Patterson and PMPP once architecture and CUDA are active; compilers last.A system with a stated interface and invariant, tests, a benchmark or profile, and a limitation.
Quantum computingNielsen & Chuang, then Preskill's Ph219 notes and Kaye–Laflamme–Mosca; Gottesman and Lidar & Brun for error correction; Ding & Chong for quantum systems. Physics alongside it: Griffiths, then Shankar and Sakurai.A statevector simulator, a stabilizer simulator, a qubit router and a surface-code decoder — each benchmarked against the established tool, with the losses stated.
CompetitionsCompetitive Programmer's Handbook; Engel; The Art and Craft of Problem Solving → Putnam and Beyond.Low-time practice and proof fluency, with no sacrifice of research evidence.

ML branch map. Base: differentiable programs → learning dynamics → representations and sequence models → NLP data and tokenization → transformers and LM behavior → research-grade evaluation. Then the AI lane widens into the fields that consume it — structural biology, robotics and control, scientific computing — and finally into quantum mechanics as physics. The systems lane runs OS → machine → data → distributed → architecture → parallel → compilers, and then turns: quantum information, quantum theory of computation, error correction, quantum systems. The two meet at the neural-network-as-wavefunction papers and at the learned decoder, which is trained on the autograd engine tensorforge already provides.

Quarter-by-quarter outcomes

13 periods, 750 days

PeriodDaysUnique focusRequired end-state
Summer 2026 (Aug 17, 2026 – Oct 12, 2026)1–57The first 57 days, written one day at a time. OSTEP from chapter 6 and CS:APP against Goodfellow's Deep Learning, ferrodb from the page format to the benchmark, and the daily contract proved out at full summer hours before it has to survive a quarter.A working storage engine with a crash harness, a small trainer and a transformer, 57 paper cards, a clean GitHub, and the first three lab emails sent.
Autumn 2026 (Oct 13, 2026 – Jan 1, 2027)58–138CSE 446 and 452 become the evidence, and the course reading becomes the day's chapter. All five lanes keep running: at 45 extracurricular hours the independent track no longer pauses.One reproducible ML report; one distributed-systems artifact; ferrodb finished and benchmarked; eight tailored contacts.
Winter break 2026 (Jan 2, 2027 – Jan 16, 2027)139–153Free hours again, and the long project moves fastest here. riscv-vm closed out inside the term — all twenty-one steps, which is what repealing the term pause bought — so the break opens tensorforge instead: a strided tensor, broadcasting, and the beginnings of an autograd tape.riscv-vm released with its design note, and tensorforge differentiating something.
Winter 2027 (Jan 17, 2027 – Apr 4, 2027)154–231CSE 447 and NLP research entry. The AI chapter lane is Jurafsky & Martin and Goldberg; the systems lane closes distributed systems and opens computer architecture; tensorforge carries the system lane all term.Own an evaluation, data, baseline or reproduction component in a lab; a bounded replication with a results log.
Spring break 2027 (Apr 5, 2027 – Apr 10, 2027)232–237Short, so one thing only: land whatever the quarter left open.The kernel scheduling processes.
Spring 2027 (Apr 11, 2027 – Jun 27, 2027)238–315CSE 451 and 331 make systems a research asset. tensorforge finishes — fused kernels, quantization, a profiler — and inferd starts. The first quantum papers appear in the paper lane, Deutsch and Shor and Grover, while every system built is still classical.An OS or storage component with an invariant, tests and a profile; a research proposal with claim, baselines and ablations.
Summer 2027 (Jun 28, 2027 – Oct 10, 2027)316–420The flagship, and the longest free run in the plan. The AI chapter lane widens into biology, robotics and scientific ML; the systems lane finishes PMPP and compilers. Quantum stays reading, not building — this summer is what the 2028 applications are made of.One thesis — inference, evaluation infrastructure or training stack — with reproducible figures and a mentor-backed next step. tensorforge matching a real baseline on one kernel.
Autumn 2027 (Oct 11, 2027 – Jan 2, 2028)421–504Applications go out, and the turn happens: Nielsen & Chuang becomes the systems chapter, Griffiths becomes the AI chapter, and qsim starts. It is safe here precisely because the flagship already exists.A named subproject; a stable result, repo and limitations; tailored applications and early referrals; a statevector simulator that runs.
Winter break 2027 (Jan 3, 2028 – Jan 14, 2028)505–516Applications are out; this is build time again, split between inferd and the stabilizer simulator.inferd serving a real model with a measured throughput curve, and stab reproducing a randomised benchmarking curve.
Winter 2028 (Jan 15, 2028 – Apr 1, 2028)517–594Publication depth and interviews, against Preskill and Shankar. qroute maps circuits onto hardware that does not have the connectivity they want.A submission- or revision-quality artifact; one measured ML-systems contribution; a rehearsed talk; a router benchmarked against Qiskit's transpiler.
Spring break 2028 (Apr 2, 2028 – Apr 7, 2028)595–600Reproduce every number in the writeup from a clean machine.Every figure regenerated by one command.
Spring 2028 (Apr 8, 2028 – Jun 24, 2028)601–678First-author execution, error correction as the reading, and qdec — a surface-code decoder measured against minimum-weight perfect matching, then a learned one trained on tensorforge.A reproducible release or handoff; internship contributions or a full-time lab arc; a threshold plot you produced.
Summer 2028 (Jun 25, 2028 – Sep 4, 2028)679–750Release, handoff, and the start of whatever comes next. One of the systems is hardened into something citable.One citable artifact someone else has run from a clean machine, and a question to start the next cycle with.

The long projects

Most days implement something whole in the day. The rest are increments on one of these: a project with a thesis, built one step a day across a named stretch of the calendar. A day that increments one names the track and the step number.

9 tracks

ProjectThesisStepsDays
ferrodb — crash-recoverable storage engine (Rust)A storage engine you can kill at any instruction and restart correctly.20 steps20 days, day 2 to day 67
riscv-vm — emulator, kernel and network stackA machine you built, running an operating system you wrote, talking to a real network.21 steps21 days, day 70 to day 137
tensorforge — tensor library, autograd and CUDA kernelsThe layer underneath PyTorch, written by hand, fast enough to be worth using.21 steps36 days, day 141 to day 267
inferd — an LLM inference engineServing a real model, fast, with the memory accounting written down.20 steps39 days, day 271 to day 413
qsim — a statevector simulatorA simulator fast enough to be worth using, with the memory wall stated in bytes.24 steps24 days, day 421 to day 503
stab — a stabilizer simulatorDoing in polynomial time the thing the statevector simulator cannot do at all.14 steps15 days, day 505 to day 537
qroute — a circuit compiler for real hardwareMapping a circuit onto a machine that does not have the connectivity it wants.18 steps20 days, day 547 to day 619
qdec — a surface-code decoderDeciding what went wrong from the syndrome, fast enough to matter, benchmarked against the real thing.22 steps25 days, day 622 to day 703
capstone — harden one system into a citable artifactOne of them, taken from "works on my machine" to "someone else ran it".10 steps12 days, day 706 to day 745

Research and career rules

The day contract
A day is kept when all five lanes produced their artifact — not when the hours were spent. Write down which it was. Two consecutive days missing the same lane is the signal to re-plan, not to catch up.
Research cycle
Observe → read → hypothesis → implement → measure → disconfirm → revise → communicate. Weekly update: question, expectation, experiment, result, alternative explanation, next cheapest informative experiment.
Outreach rule
Apply through formal lab routes where they are listed. Otherwise: read one paper deeply, inspect the code and data, build a small relevant artifact, email the closest student first, and offer a scoped task. Never lead with a frontier-lab aspiration.
Portfolio rule
A serious repo includes a one-command run, correctness checks, a benchmark or result, limitations, and a clear statement of your own contribution. Keep four or five; archive shallow work.
Open-source rule
Something every day, a pull request two or three times a week, and the log tells the truth. A day with no contribution is recorded as a day with no contribution — a fabricated entry costs more than the gap it hides.
Quantum entry rule
No quantum system is built until the classical systems pillar has shipped an artifact someone else has run, and no quantum chapter is counted read until the problem set is worked or the simulator reproduces the number.
Club rule
At most one build team. ARUW, Husky Robotics, Aerial Robotics, and Satellite Lab are useful only when you can own a systems or software subproject. Competitive Programming at UW is maintenance; DubHacks is a bounded startup network.
What to cut when the plan fights itself
Putnam → extra Codeforces → startup breadth → optional exploration → the day's system shrinks to atomic. Do not cut a mentor commitment, a core experiment, a serious systems artifact near completion, a course deliverable that can become research evidence, or the same lane two days running.

The reading list

One paper a day, across all 750 days, each chosen for what that day builds.

  1. Day 1 (AI): Attention Is All You Need — Vaswani et al., 2017. The architecture everything else in the two years is built on or measured against. Read it first, and again on day 29 when you are implementing it.
  2. Day 2 (systems): ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging — Mohan et al., 1992. The write-ahead log ferrodb is about to implement, including why redo and undo are separate passes. Read it the day you design the record format, not after.
  3. Day 3 (AI): Automatic Differentiation in Machine Learning: a Survey — Baydin, Pearlmutter, Radul, Siskind, 2018. Names what reverse mode actually is before you write it, and why the numerical gradient check is the test that matters.
  4. Day 4 (systems): A Fast File System for UNIX — McKusick, Joy, Leffler, Fabry, 1984. Inodes, cylinder groups and the locality argument. Read it against the page layout you froze on day 2 — FFS is the same decision made for a disk that rotates.
  5. Day 5 (AI): Adam: A Method for Stochastic Optimization — Kingma, Ba, 2015. The other half of this week's SGD-versus-Adam comparison; read the bias-correction argument, not just the update rule.
  6. Day 6 (systems): Ethernet: Distributed Packet Switching for Local Computer Networks — Metcalfe, Boggs, 1976. Carrier sense, collision detection, exponential backoff — a complete system argued in fifteen pages. A catch-up day is the right day for a paper with nothing to implement.
  7. Day 7 (systems): The Design and Implementation of a Log-Structured File System — Rosenblum, Ousterhout, 1992. The counterargument to FFS, and the one that makes crash recovery cheap. Compare it against the WAL you finished yesterday: both turn a random write into a sequential one.
  8. Day 8 (systems): The Working Set Model for Program Behavior — Denning, 1968. Why page replacement is a locality question. The eviction policy ferrodb's buffer pool gets in three days is an answer to this paper.
  9. Day 9 (AI): Learning Representations by Back-Propagating Errors — Rumelhart, Hinton, Williams, 1986. Four pages. Read it the day after you wrote backprop by hand, not before — it is much better when you already know what it costs.
  10. Day 10 (AI): Multilayer Feedforward Networks are Universal Approximators — Hornik, Stinchcombe, White, 1989. What a two-layer MLP can represent in principle — and why that says nothing about what it will learn. Read it the day you train one.
  11. Day 11 (systems): End-to-End Arguments in System Design — Saltzer, Reed, Clark, 1984. The design principle that decides which layer of ferrodb owns the checksum. Answer that question in the note, in the paper's terms.
  12. Day 12 (AI): Dropout: A Simple Way to Prevent Neural Networks from Overfitting — Srivastava, Hinton, Krizhevsky, Sutskever, Salakhutdinov, 2014. The ensemble interpretation is the part worth arguing with. If your day-14 ablation disagreed with it, say so in the card.
  13. Day 13 (AI): Understanding the Difficulty of Training Deep Feedforward Neural Networks — Glorot, Bengio, 2010. Where initialization ablations come from. Reproduce one of its activation-variance plots on your own classifier this week.
  14. Day 14 (AI): Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification — He, Zhang, Ren, Sun, 2015. The correction to Glorot for ReLU nets — a factor of two that decides whether deep stacks train at all. Run both initializations today.
  15. Day 15 (systems): Experience with Processes and Monitors in Mesa — Lampson, Redell, 1980. Why a condition variable wakes into a loop and not into a guarantee. Read it before ferrodb has concurrent readers, not after they deadlock.
  16. Day 16 (AI): Gradient-Based Learning Applied to Document Recognition — LeCun, Bottou, Bengio, Haffner, 1998. LeNet, and the case for learned features over engineered ones. Long — read sections I–III today and stop there.
  17. Day 17 (AI): ImageNet Classification with Deep Convolutional Neural Networks — Krizhevsky, Sutskever, Hinton, 2012. The same idea as LeNet fourteen years later with GPUs behind it. Note what changed: scale and engineering, not the concept.
  18. Day 18 (AI): Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift — Ioffe, Szegedy, 2015. The stated mechanism has since been disputed. Say in your card whether your own evidence supports it — you have run the ablation.
  19. Day 19 (systems): Congestion Avoidance and Control — Jacobson, Karels, 1988. Slow start, RTT estimation, self-clocking. Read it as a control-loop paper — it is the same shape as the group-commit decision ferrodb makes later.
  20. Day 20 (AI): Long Short-Term Memory — Hochreiter, Schmidhuber, 1997. The constant error carousel, stated as a fix to a specific failure. Read it before you train the RNN that diverges, and note what the gate is protecting.
  21. Day 21 (AI): On the Difficulty of Training Recurrent Neural Networks — Pascanu, Mikolov, Bengio, 2013. Names the exploding and vanishing gradient precisely enough to measure. Gives you clipping, and the reason for it.
  22. Day 22 (systems): Development of the Domain Name System — Mockapetris, Dunlap, 1988. A retrospective on a live system: what the design got right, and what caching cost. Read it for the retrospective form — you will write these.
  23. Day 23 (AI): A Neural Probabilistic Language Model — Bengio, Ducharme, Vincent, Jauvin, 2003. Distributed word representations and the curse of dimensionality, a decade before it was obvious. This is the baseline word2vec is beating.
  24. Day 24 (systems): Cramming More Components onto Integrated Circuits — Moore, 1965. Three pages, an economic argument rather than a physical law. Worth reading once, properly, instead of quoting.
  25. Day 25 (AI): Efficient Estimation of Word Representations in Vector Space — Mikolov, Chen, Corrado, Dean, 2013. word2vec. What was thrown away to make it fast is the interesting part, not the analogy arithmetic.
  26. Day 26 (systems): The Case for the Reduced Instruction Set Computer — Patterson, Ditzel, 1980. Eight pages, and a design argument rather than a specification. Read it now; riscv-vm implements the descendant of this argument in December.
  27. Day 27 (AI): Neural Machine Translation by Jointly Learning to Align and Translate — Bahdanau, Cho, Bengio, 2015. Attention before transformers, invented to fix a fixed-length bottleneck. Implement this form before the scaled dot-product one.
  28. Day 28 (AI): Effective Approaches to Attention-based Neural Machine Translation — Luong, Pham, Manning, 2015. The controlled comparison of scoring functions — the ablation you would otherwise have to run yourself.
  29. Day 29 (systems): An Efficient Algorithm for Exploiting Multiple Arithmetic Units — Tomasulo, 1967. Register renaming and reservation stations, 1967. Read it as the first out-of-order design; the pipeline you write in riscv-vm stalls where this one does not.
  30. Day 30 (AI): Deep Residual Learning for Image Recognition — He, Zhang, Ren, Sun, 2016. The degradation problem is an optimization failure, not an overfitting one. That distinction is the one your own training notes keep getting wrong.
  31. Day 31 (AI): Language Models are Unsupervised Multitask Learners — Radford, Wu, Child, Luan, Amodei, Sutskever, 2019. GPT-2: the decoder-only stack you implement tomorrow, and the zero-shot claim that made scale the story.
  32. Day 32 (AI): On Layer Normalization in the Transformer Architecture — Xiong et al., 2020. Pre-LN versus post-LN, with the gradient analysis. Decides whether the block you write today needs a warmup schedule.
  33. Day 33 (systems): First Draft of a Report on the EDVAC — von Neumann, 1945. Where the stored-program machine is argued from logic elements up. Read the first twenty pages; you are about to spend a day on how it represents a number.
  34. Day 34 (AI): Neural Machine Translation of Rare Words with Subword Units — Sennrich, Haddow, Birch, 2016. BPE, and the open-vocabulary problem it was invented for. This is the tokenizer you implement tomorrow.
  35. Day 35 (AI): SentencePiece: A Simple and Language Independent Subword Tokenizer and Detokenizer for Neural Text Processing — Kudo, Richardson, 2018. What breaks when tokenization assumes whitespace. The reversibility requirement is the design constraint to steal.
  36. Day 36 (AI): Mixed Precision Training — Micikevicius et al., 2018. Loss scaling and the master-weights copy. Read it before you profile the transformer in a few days — it explains the memory numbers you are about to see.
  37. Day 37 (systems): The UNIX Time-Sharing System — Ritchie, Thompson, 1974. Everything is a file, including the device. Read it for how much of an operating system fits in eleven pages.
  38. Day 38 (AI): BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding — Devlin, Chang, Lee, Toutanova, 2019. The encoder you fine-tune shortly, and the masked-LM objective that makes bidirectionality possible.
  39. Day 39 (AI): RoBERTa: A Robustly Optimized BERT Pretraining Approach — Liu et al., 2019. A replication that found the original was undertrained. The clearest example in NLP of why you rerun the baseline yourself.
  40. Day 40 (systems): LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation — Lattner, Adve, 2004. Why the IR is the interface. Read it while you are looking at what -O2 did to your loop yesterday.
  41. Day 41 (AI): GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding — Wang et al., 2019. What a benchmark is trying to be, and the diagnostic set most people ignore. Your evaluation script's error buckets start here.
  42. Day 42 (systems): Dynamo: Amazon's Highly Available Key-value Store — DeCandia et al., 2007. The availability argument for giving up consistency, made concretely and with the operational consequences admitted. Read it before autumn's distributed-systems term.
  43. Day 43 (AI): Show Your Work: Improved Reporting of Experimental Results — Dodge et al., 2019. Why a single number with a single seed is not a result. This is where your reporting standard comes from, today, not later.
  44. Day 44 (systems): How To Write Shared Libraries — Drepper, 2011. ELF segments, relocation, the GOT and PLT, from the person who maintained the loader. Sections 1–2 today.
  45. Day 45 (AI): Sequence to Sequence Learning with Neural Networks — Sutskever, Vinyals, Le, 2014. Encoder-decoder in its first form, fixed-length bottleneck and all. The thing the attention paper on day 27 was fixing.
  46. Day 46 (AI): Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer — Raffel et al., 2020. T5, and a systematic ablation across a whole design space. Read it as an experiment design, not as an architecture.
  47. Day 47 (systems): A Unified Theory of Garbage Collection — Bacon, Cheng, Rajan, 2004. Tracing and reference counting are duals. Read it as an argument that two things you thought were different are one thing.
  48. Day 48 (AI): Scaling Laws for Neural Language Models — Kaplan et al., 2020. The empirical claim that made the last five years look inevitable. Read the fit methodology as carefully as the conclusion.
  49. Day 49 (AI): Dense Passage Retrieval for Open-Domain Question Answering — Karpukhin et al., 2020. The dual encoder your pipeline is a version of, plus the in-batch negatives trick that makes it trainable.
  50. Day 50 (AI): Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks — Lewis et al., 2020. Where retrieval error and generation error separate — the audit you did on day 46, done first here.
  51. Day 51 (systems): Scalable Parallel Programming with CUDA — Nickolls, Buck, Garland, Skadron, 2008. The execution model — threads, blocks, warps, shared memory — as its designers explain it. Read it before the first kernel, which is next summer.
  52. Day 52 (AI): FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness — Dao, Fu, Ermon, Rudra, Ré, 2022. The systems thread and the AI thread meeting: attention is memory-bound, and the fix is tiling, not approximation. You measured this yesterday.
  53. Day 53 (AI): Self-attention Does Not Need O(n²) Memory — Rabe, Staats, 2021. The same result as yesterday's paper argued from the algebra rather than the hardware. Say in the card which framing you find more useful, and why.
  54. Day 54 (AI): Training Compute-Optimal Large Language Models — Hoffmann et al., 2022. Chinchilla, which corrected the paper you read yesterday by rerunning it properly. Two papers, one lesson about baselines.
  55. Day 55 (systems): The Google File System — Ghemawat, Gobioff, Leung, 2003. A file system designed around the failure rate of its hardware and the shape of one workload. The clearest example of assumptions stated up front.
  56. Day 56 (AI): Distilling the Knowledge in a Neural Network — Hinton, Vinyals, Dean, 2015. Soft targets carry more than the label does. Read it as the first serious answer to "make it smaller without making it worse".
  57. Day 57 (AI): LoRA: Low-Rank Adaptation of Large Language Models — Hu et al., 2021. The parameter-efficient method you will actually use during term, when the compute budget is a laptop and an hour.
  58. Day 58 (systems): In Search of an Understandable Consensus Algorithm (Raft) — Ongaro, Ousterhout, 2014. CSE 452 will make you implement this. Read it before the lab spec, so the lab is an implementation of a paper you understand rather than a spec you are decoding.
  59. Day 59 (AI): Random Forests — Breiman, 2001. Where the variance reduction actually comes from, argued rather than asserted. 446 will use this; the out-of-bag estimate is the part most courses skip.
  60. Day 60 (systems): Impossibility of Distributed Consensus with One Faulty Process — Fischer, Lynch, Paterson, 1985. Six pages that bound what 452 is about to ask you to build. Read it on a day with nothing to implement — the proof deserves the attention.
  61. Day 61 (AI): Understanding Deep Learning Requires Rethinking Generalization — Zhang, Bengio, Hardt, Recht, Vinyals, 2017. The random-label experiment that broke the standard capacity story. Read it in the same week 446 teaches you the standard capacity story.
  62. Day 62 (systems): The Log-Structured Merge-Tree (LSM-Tree) — O'Neil, Cheng, Gawlick, O'Neil, 1996. The other half of the storage-engine argument, and the one ferrodb did not take. Read it knowing exactly what your B-tree cost you on write.
  63. Day 63 (AI): Reconciling Modern Machine Learning Practice and the Bias-Variance Trade-off — Belkin, Hsu, Ma, Mandal, 2019. Double descent, stated carefully. Read it against the U-shaped curve 446 draws on the board this week and decide which you believe when.
  64. Day 64 (AI): A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting — Freund, Schapire, 1997. AdaBoost, and the training-error bound that made it surprising. Read the bound; it is the reason boosting was interesting before it was standard.
  65. Day 65 (systems): MapReduce: Simplified Data Processing on Large Clusters — Dean, Ghemawat, 2004. The programming model that made a cluster look like a function. Read the fault-tolerance section closely; that is the part the model is actually buying.
  66. Day 66 (AI): Maximum Likelihood from Incomplete Data via the EM Algorithm — Dempster, Laird, Rubin, 1977. EM as one idea rather than a recipe per model. Read the convergence argument; the derivation is what makes k-means obvious later.
  67. Day 67 (AI): Support-Vector Networks — Cortes, Vapnik, 1995. The margin argument in its original form. 446 teaches the dual; the paper is where the soft margin comes from and why.
  68. Day 68 (AI): Greedy Function Approximation: A Gradient Boosting Machine — Friedman, 2001. Boosting reframed as gradient descent in function space. Read it after AdaBoost so the reframing is visibly a generalization.
  69. Day 69 (systems): Bigtable: A Distributed Storage System for Structured Data — Chang et al., 2006. An LSM engine, a lock service and a data model, described as one system. You have now written two of the three pieces.
  70. Day 70 (AI): On Calibration of Modern Neural Networks — Guo, Pleiss, Sun, Weinberger, 2017. Modern networks are confidently wrong, and temperature scaling mostly fixes it. Your evaluation script should report calibration from now on.
  71. Day 71 (AI): Hidden Technical Debt in Machine Learning Systems — Sculley et al., 2015. The paper about everything around the model. Read it while you are the entire team, so the failure modes are recognisable when you are not.
  72. Day 72 (AI): Visualizing Data using t-SNE — van der Maaten, Hinton, 2008. Read it for the honesty about what the plot does not mean — cluster sizes and distances between clusters, both of which people read anyway.
  73. Day 73 (systems): Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services — Gilbert, Lynch, 2002. CAP as an actual theorem with actual definitions, which is not what the slogan says. Read the definitions first and the conclusion second.
  74. Day 74 (AI): k-means++: The Advantages of Careful Seeding — Arthur, Vassilvitskii, 2007. A change to the initialization with a proof attached. The clearest small example of theory that changed practice.
  75. Day 75 (AI): Auto-Encoding Variational Bayes — Kingma, Welling, 2014. The reparameterization trick, which is the part to understand: it is what makes the gradient exist at all.
  76. Day 76 (systems): Time, Clocks, and the Ordering of Events in a Distributed System — Lamport, 1978. Happens-before, and the reason a distributed system cannot simply read a clock. Everything in 452 after this depends on it.
  77. Day 77 (AI): Generative Adversarial Networks — Goodfellow et al., 2014. The minimax formulation and the theoretical optimum. Read the proof of the global optimum, then note how little of it survives contact with training.
  78. Day 78 (systems): The Chubby Lock Service for Loosely-Coupled Distributed Systems — Burrows, 2006. Consensus packaged as a product, with the operational surprises admitted. The section on how clients misused it is the valuable part.
  79. Day 79 (AI): Denoising Diffusion Probabilistic Models — Ho, Jain, Abbeel, 2020. The simplification from the variational bound to a plain noise-prediction loss is the whole paper. Follow that derivation specifically.
  80. Day 80 (systems): Paxos Made Simple — Lamport, 2001. Read it after Raft, not before: the comparison is the lesson, and Raft was explicitly written because this paper is hard.
  81. Day 81 (AI): Semi-Supervised Classification with Graph Convolutional Networks — Kipf, Welling, 2017. The renormalized propagation rule, derived from a spectral argument and then justified empirically. Both halves matter.
  82. Day 82 (AI): A Simple Framework for Contrastive Learning of Visual Representations — Chen, Kornblith, Norouzi, Hinton, 2020. The ablation on augmentations is the paper. Read it as a study of what the pretext task is actually teaching.
  83. Day 83 (systems): Chain Replication for Supporting High Throughput and Availability — van Renesse, Schneider, 2004. Strong consistency with a much simpler protocol than consensus, by constraining the topology. Read it as a lesson in changing the problem.
  84. Day 84 (AI): Learning Transferable Visual Models From Natural Language Supervision — Radford et al., 2021. CLIP: the supervision signal is the contribution, not the architecture. Note how much of the paper is dataset and evaluation work.
  85. Day 85 (AI): Momentum Contrast for Unsupervised Visual Representation Learning — He, Fan, Wu, Xie, Girshick, 2020. The queue and the momentum encoder solve the batch-size problem SimCLR papers over. Read the two together and say which constraint each is fighting.
  86. Day 86 (AI): "Why Should I Trust You?": Explaining the Predictions of Any Classifier — Ribeiro, Singh, Guestrin, 2016. LIME, and the local-fidelity idea. Read the failure cases at the end as carefully as the method.
  87. Day 87 (systems): Spanner: Google's Globally-Distributed Database — Corbett et al., 2012. TrueTime buys external consistency by making clock uncertainty explicit rather than pretending it is zero. Read it after Lamport, on purpose.
  88. Day 88 (AI): A Unified Approach to Interpreting Model Predictions — Lundberg, Lee, 2017. SHAP, and the axioms that make it the unique attribution under them. Read the axioms; they are the argument.
  89. Day 89 (AI): An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale — Dosovitskiy et al., 2021. The inductive-bias argument, tested by scale. Read the data-size ablation — it is the part that explains why this took until 2021.
  90. Day 90 (AI): The Bitter Lesson — Sutton, 2019. Not a paper, and worth an hour anyway. Argue with it in the card: your whole systems pillar is a bet that the details still matter.
  91. Day 91 (systems): The Tail at Scale — Dean, Barroso, 2013. Why the 99th percentile is the number that matters once a request fans out, and the techniques that fight it. Read it before you benchmark anything distributed.
  92. Day 92 (AI): Deep Learning with Differential Privacy — Abadi et al., 2016. The moments accountant, and what a privacy budget costs in accuracy. Read it as an example of a constraint stated precisely enough to optimize against.
  93. Day 93 (AI): Datasheets for Datasets — Gebru et al., 2021. What a dataset should tell you before you train on it. Write one for whatever data your 446 project uses — it takes an hour and it is the difference between a result and a claim.
  94. Day 94 (systems): Consistent Hashing and Random Trees: Distributed Caching Protocols for Relieving Hot Spots on the World Wide Web — Karger et al., 1997. The hash ring, from the paper that introduced it. You built a partitioner on day 73; this is the version that survives a node joining.
  95. Day 95 (AI): Deep Contextualized Word Representations (ELMo) — Peters et al., 2018. Contextual embeddings before the transformer took over. Read it for the layer-wise analysis: different layers encode different things, which is still the most useful finding in it.
  96. Day 96 (systems): Dapper, a Large-Scale Distributed Systems Tracing Infrastructure — Sigelman et al., 2010. How you find out what a distributed system actually did. Sampling and the annotation API are the two decisions worth stealing.
  97. Day 97 (AI): Universal Language Model Fine-tuning for Text Classification (ULMFiT) — Howard, Ruder, 2018. Discriminative fine-tuning and gradual unfreezing, from before "just fine-tune it" was obvious. The schedule tricks still work and are still mostly ignored.
  98. Day 98 (systems): Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications — Stoica, Morris, Karger, Kaashoek, Balakrishnan, 2001. Consistent hashing turned into a routing structure with a proof about hop count. Read the finger table as a data structure, not as a protocol.
  99. Day 99 (AI): ELECTRA: Pre-training Text Encoders as Discriminators Rather Than Generators — Clark, Luong, Le, Manning, 2020. A cheaper pretraining objective that beats masked LM at the same compute. Read it as a compute-efficiency argument, which is the argument that keeps mattering.
  100. Day 100 (AI): SQuAD: 100,000+ Questions for Machine Comprehension of Text — Rajpurkar, Zhang, Lopyrev, Liang, 2016. How the dataset was built is the paper. Read the collection protocol and then ask what a model could exploit in it.
  101. Day 101 (systems): Scaling Memcache at Facebook — Nishtala et al., 2013. Caching as a distributed-systems problem: stampedes, leases, invalidation, cross-region. The operational detail is the value.
  102. Day 102 (AI): Chain-of-Thought Prompting Elicits Reasoning in Large Language Models — Wei et al., 2022. Read the scale plot: the effect does not exist below a size threshold, which is the part that makes the result interesting and fragile.
  103. Day 103 (AI): Longformer: The Long-Document Transformer — Beltagy, Peters, Cohan, 2020. Sliding-window plus global attention, with the cost argument made explicitly. Compare it against what FlashAttention did to the same problem from the hardware side.
  104. Day 104 (AI): RoFormer: Enhanced Transformer with Rotary Position Embedding — Su et al., 2021. Rotary embeddings, derived from the property you actually want: attention that depends on relative position. Read the derivation, not the implementation.
  105. Day 105 (systems): Kafka: a Distributed Messaging System for Log Processing — Kreps, Narkhede, Rao, 2011. The log as a primitive other systems are built on — the same object as your WAL and your Raft log, sold as infrastructure.
  106. Day 106 (AI): DistilBERT, a distilled version of BERT — Sanh, Debut, Chaumond, Wolf, 2019. Distillation applied to the encoder you fine-tuned in the summer, with the ablation on which loss terms matter. A practical version of the day-56 paper.
  107. Day 107 (AI): Model Cards for Model Reporting — Mitchell et al., 2019. The reporting standard to apply to your own 446 artifact today, while every number is still reproducible from a command you remember.
  108. Day 108 (AI): Climbing towards NLU: On Meaning, Form, and Understanding in the Age of Data — Bender, Koller, 2020. The argument you should be able to state fairly whether or not you agree with it. Write the strongest version of the counterargument in your card.
  109. Day 109 (systems): Conflict-free Replicated Data Types — Shapiro, Preguiça, Baquero, Zawirski, 2011. Convergence without consensus, by constraining the operations. Read it directly after 2PC — it is the other way out of the same problem.
  110. Day 110 (AI): Holistic Evaluation of Language Models (HELM) — Liang et al., 2022. Evaluation designed as a system, with coverage stated as a matrix. This is the shape your own evaluation work should take next year.
  111. Day 111 (AI): Deep Reinforcement Learning from Human Preferences — Christiano et al., 2017. The reward model, before language models used it. Read it now so that InstructGPT later is an application rather than a revelation.
  112. Day 112 (systems): The Design Philosophy of the DARPA Internet Protocols — Clark, 1988. The priority list that produced TCP/IP, in the designer's own order. Read it before you implement the stack, and note which goal your version quietly drops.
  113. Day 113 (AI): Training Language Models to Follow Instructions with Human Feedback — Ouyang et al., 2022. InstructGPT. Read the data-collection sections as carefully as the method: most of the work is annotation infrastructure.
  114. Day 114 (systems): BBR: Congestion-Based Congestion Control — Cardwell, Cheng, Gunn, Yeganeh, Jacobson, 2016. Congestion control that models the bottleneck instead of treating loss as the signal. Read it against Jacobson 1988, which the same person wrote 28 years earlier.
  115. Day 115 (AI): Direct Preference Optimization: Your Language Model is Secretly a Reward Model — Rafailov et al., 2023. The derivation that removes the reward model entirely. Read it against yesterday's implementation, which you now have a reason to delete.
  116. Day 116 (systems): A Protocol for Packet Network Intercommunication — Cerf, Kahn, 1974. TCP and IP before they were separated, and the gateway argument that made internetworking possible. Read it the week you write the header parser.
  117. Day 117 (AI): Beyond the Imitation Game: Quantifying and Extrapolating the Capabilities of Language Models — Srivastava et al., 2023. BIG-bench, and the tasks where scale does not help. Read the breakdown of task types — that is where research questions come from.
  118. Day 118 (AI): TruthfulQA: Measuring How Models Mimic Human Falsehoods — Lin, Hilton, Evans, 2022. A benchmark built adversarially against the training distribution. Read the construction method; it is a template for building an evaluation that is not already solved.
  119. Day 119 (systems): Random Early Detection Gateways for Congestion Avoidance — Floyd, Jacobson, 1993. Queue management as the other half of congestion control. Read it against the AIMD you derived — this is the router's side of the same negotiation.
  120. Day 120 (AI): GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism — Huang et al., 2019. The bubble is the cost, and micro-batching is the fix. Draw the pipeline schedule yourself before reading their figure.
  121. Day 121 (AI): Fast Transformer Decoding: One Write-Head is All You Need — Shazeer, 2019. Multi-query attention, from the memory-bandwidth argument. Four pages, and it is the reason inference stacks look the way they do.
  122. Day 122 (AI): GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints — Ainslie et al., 2023. The interpolation between yesterday's two extremes, plus a recipe for converting an existing checkpoint. Read them as a pair.
  123. Day 123 (systems): Kademlia: A Peer-to-peer Information System Based on the XOR Metric — Maymounkov, Mazières, 2002. Routing by a metric that is symmetric and unidirectional at once, which is the trick. Read it against Chord and say which one you would implement and why.
  124. Day 124 (AI): Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism — Shoeybi et al., 2019. Tensor parallelism explained as where you cut the matrix multiply. Read it with your own matmul in front of you — the cut is the whole idea.
  125. Day 125 (AI): ZeRO: Memory Optimizations Toward Training Trillion Parameter Models — Rajbhandari, Rajbhandari, Ruwase, He, 2020. The accounting of what is actually in GPU memory during training — states, gradients, activations — and what each stage of partitioning removes. Read it as an accounting paper.
  126. Day 126 (AI): Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer — Shazeer et al., 2017. Conditional computation with the load-balancing problem stated honestly. Everything current about MoE is a footnote to this.
  127. Day 127 (systems): ZooKeeper: Wait-free Coordination for Internet-scale Systems — Hunt, Konar, Junqueira, Reed, 2010. Coordination as a filesystem-shaped API, with the ordering guarantees stated precisely. Read the API section as a design lesson in what to expose.
  128. Day 128 (AI): Efficient Memory Management for Large Language Model Serving with PagedAttention — Kwon et al., 2023. The KV cache managed like virtual memory — the paper where your OS work and your ML work are visibly the same skill. Read it the same week you finish a page table.
  129. Day 129 (AI): Fast Inference from Transformers via Speculative Decoding — Leviathan, Kalman, Matias, 2023. The acceptance criterion is the paper: it makes the output distribution identical to the target model's. Read the proof, then decide whether you believe the speedup claim.
  130. Day 130 (systems): Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases — Verbitski et al., 2017. "The log is the database" taken literally, with the network cost as the thing being optimized. Read it against your own WAL, which is the same idea at one machine's scale.
  131. Day 131 (AI): LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale — Dettmers, Lewis, Belkada, Zettlemoyer, 2022. The outlier features are the finding, not the kernel. Read it as an empirical discovery about what transformers put in their activations.
  132. Day 132 (systems): Hints for Computer System Design — Lampson, 1983. Thirty years of systems judgment as a list of hints, each with the counterexample attached. Read it once a year; the hints you disagree with change, which is the useful part.
  133. Day 133 (AI): GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers — Frantar, Ashkboos, Hoefler, Alistarh, 2023. Second-order information used to decide rounding. Read it as the strongest version of the problem you attempted yesterday by hand.
  134. Day 134 (systems): Managing Update Conflicts in Bayou, a Weakly Connected Replicated Storage System — Terry et al., 1995. Application-specific conflict resolution, decades before anyone called it offline-first. Read the dependency-check and merge-procedure design.
  135. Day 135 (AI): LLaMA: Open and Efficient Foundation Language Models — Touvron et al., 2023. The training-compute versus inference-compute argument, made explicitly: train longer on more tokens so that serving is cheap. That trade is the flagship's subject.
  136. Day 136 (AI): Highly Available Transactions: Virtues and Limitations — Bailis et al., 2014. Which isolation levels are achievable without giving up availability, stated as a hierarchy. The clearest map of the space CSE 452 walked you through.
  137. Day 137 (systems): End-to-End Arguments in System Design — Saltzer, Reed, Clark, 1984. Reread it — you have now written the layers it is about. The second reading is a different paper from the first, which is the point of rereading.
  138. Day 138 (AI): A Few Useful Things to Know About Machine Learning — Domingos, 2012. The folk knowledge that courses assume and rarely state, from a UW professor. Read it as a checklist against your own last three experiments.
  139. Day 139 (AI): Language Models are Few-Shot Learners — Brown et al., 2020. GPT-3, read now rather than in 2020: as a scaling experiment with an evaluation appendix, most of which has since been contested. Note which claims survived.
  140. Day 140 (AI): Emergent Abilities of Large Language Models — Wei et al., 2022. Then read the objection — that emergence can be an artefact of the metric — and decide what evidence would settle it. This is the shape of a good research question.
  141. Day 141 (AI): The NumPy array: a structure for efficient numerical computation — van der Walt, Colbert, Varoquaux, 2011. Shape, stride, offset and views, described by the people who chose them. Read it as the specification for the thing you are about to write, and note every decision they defend rather than assert.
  142. Day 142 (systems): Practical Byzantine Fault Tolerance — Castro, Liskov, 1999. The paper that made Byzantine agreement cheap enough to run. Read the view-change protocol carefully — it is where the complexity actually lives, and where every later BFT paper claims to improve.
  143. Day 143 (AI): Neural Architectures for Named Entity Recognition — Lample, Ballesteros, Subramanian, Kawakami, Dyer, 2016. The LSTM-CRF that was the NER baseline for four years, with the transition-based alternative in the same paper. Read it as the strongest pre-BERT number your own tagger has to beat.
  144. Day 144 (systems): The Byzantine Generals Problem — Lamport, Shostak, Pease, 1982. The impossibility for three generals, then the algorithm for four, worked in full. Do the three-general case on paper before reading their argument; it is the only way the bound stops feeling arbitrary.
  145. Day 145 (AI): End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF — Ma, Hovy, 2016. The same architecture as yesterday from a different group in the same month, with character CNNs instead of character LSTMs. Read them as a pair and decide what the difference is actually worth.
  146. Day 146 (systems): Distributed Snapshots: Determining Global States of Distributed Systems — Chandy, Lamport, 1985. The marker algorithm, and the definition of a consistent cut that makes it correct. Read it before you write it — the proof is short and the algorithm is unmotivated without it.
  147. Day 147 (AI): Accurate Unlexicalized Parsing — Klein, Manning, 2003. Most of lexicalized parsing's gain recovered by splitting states by hand. Read it as an ablation of a whole subfield, and as evidence that a strong baseline is usually cheaper than a new model.
  148. Day 148 (AI): Constituency Parsing with a Self-Attentive Encoder — Kitaev, Klein, 2018. The same chart decoder as yesterday under a transformer encoder, with an ablation separating content from position. Read the ablation: it is the clearest statement anywhere of what the encoder is contributing.
  149. Day 149 (systems): Virtual Time and Global States of Distributed Systems — Mattern, 1988. Vector clocks derived properly, with the lattice structure that makes them the right answer rather than a hack. Read it after implementing them, so the algebra lands on code you already have.
  150. Day 150 (systems): The Humble Programmer — Dijkstra, 1972. The argument that our capacity to build is limited by our capacity to reason about what we built, made the year the field admitted it had a crisis. Read it the day before you scope a quarter, and cut the plan that fails his test.
  151. Day 151 (AI): A Fast and Accurate Dependency Parser using Neural Networks — Chen, Manning, 2014. The paper that replaced millions of sparse features with a small dense network and got faster as well as better. Read the feature-template table — it is what the embedding layer is standing in for.
  152. Day 152 (AI): Deep Biaffine Attention for Neural Dependency Parsing — Dozat, Manning, 2017. Two small MLPs and a bilinear score, and it beat everything. Read the dimensionality argument for why the biaffine form is the right one, then check it against the attention you already implemented.
  153. Day 153 (systems): Unreliable Failure Detectors for Reliable Distributed Systems — Chandra, Toueg, 1996. The paper that says exactly how much failure detection consensus needs, which is the constructive other half of FLP. Read it against the day-60 impossibility result you already have a card for.
  154. Day 154 (AI): Building a Large Annotated Corpus of English: The Penn Treebank — Marcus, Santorini, Marcinkiewicz, 1993. How the annotation was actually produced — the guidelines, the two-stage process, the agreement numbers. You are about to build an annotation tool; this is the paper that says what one is for.
  155. Day 155 (AI): Universal Dependencies v1: A Multilingual Treebank Collection — Nivre et al., 2016. One annotation scheme negotiated across forty languages, and the compromises that took. Read the design principles section as an exercise in specifying a label set you cannot later change.
  156. Day 156 (AI): Green AI — Schwartz, Dodge, Smith, Etzioni, 2019. The argument for reporting compute alongside accuracy, from the institute across the street. Decide today whether your own results tables will carry a cost column, because retrofitting one is a lie.
  157. Day 157 (systems): Wait-Free Synchronization — Herlihy, 1991. The consensus hierarchy: which primitives can implement which objects wait-free, proven rather than asserted. It is why compare-and-swap is in every instruction set and test-and-set is not enough.
  158. Day 158 (AI): Transition-Based Dependency Parsing with Stack Long Short-Term Memory — Dyer, Ballesteros, Ling, Matthews, Smith, 2015. A recurrent network over the parser's own stack, so the state representation is learned rather than templated. Noah Smith is at UW; read it as an example of what the group next door builds.
  159. Day 159 (AI): Class-Based n-gram Models of Natural Language — Brown, deSouza, Mercer, Della Pietra, Lai, 1992. Brown clusters: distributional word classes learned by maximizing mutual information, thirty years before anyone said embedding. Read it and note how much of word2vec's intuition is already stated here.
  160. Day 160 (systems): PNUTS: Yahoo!'s Hosted Data Serving Platform — Cooper, Ramakrishnan, Srivastava, Silberstein, Bohannon, Jacobsen, Puz, Weaver, Yerneni, 2008. Per-record timeline consistency with record-level mastership — a consistency model chosen by asking what the applications could actually tolerate. Read it as the counterexample to picking a model off a hierarchy.
  161. Day 161 (AI): Byte Pair Encoding is Suboptimal for Language Model Pretraining — Bostrom, Durrett, 2020. A controlled comparison of BPE against unigram-LM tokenization, with morphology as the diagnostic. Read it the day you write a tokenizer, because it names the choice you are about to make by default.
  162. Day 162 (systems): Linearizability: A Correctness Condition for Concurrent Objects — Herlihy, Wing, 1990. The definition your day-83 checker has been enforcing without you having read where it comes from. Read the composability theorem — it is the reason linearizability is the condition people chose.
  163. Day 163 (AI): Between words and characters: A Brief History of Open-Vocabulary Modeling and Tokenization in NLP — Mielke et al., 2021. The whole design space laid out, from morphological analysers to bytes, with the trade-off stated at each point. Read it after your own tokenizer exists so you can locate it on their map.
  164. Day 164 (systems): Flexible Paxos: Quorum Intersection Revisited — Howard, Malkhi, Spiegelman, 2016. Majorities were never required — only that the two phases' quorums intersect. A small result that invalidates an assumption everyone made, which is the kind of paper worth studying for its shape.
  165. Day 165 (AI): How Good is Your Tokenizer? On the Monolingual Performance of Multilingual Language Models — Rust, Pfeiffer, Vulić, Ruder, Gurevych, 2021. They separate the tokenizer's contribution from the model's by swapping only the tokenizer. Read the experimental design — that isolation is the thing to copy, not the result.
  166. Day 166 (AI): CANINE: Pre-training an Efficient Tokenization-Free Encoder for Language Representation — Clark, Garrette, Turc, Wieting, 2021. The other end of the design space: no vocabulary at all, with downsampling to make it affordable. Read it against yesterday's paper and decide what a vocabulary is actually buying you.
  167. Day 167 (systems): Calvin: Fast Distributed Transactions for Partitioned Database Systems — Thomson, Diamond, Weng, Ren, Shao, Abadi, 2012. Agree on the order first, then execute deterministically, and two-phase commit disappears. Read it directly after your own 2PC blocked on day 98 — this is the design that refuses the problem.
  168. Day 168 (AI): A Maximum Entropy Approach to Natural Language Processing — Berger, Della Pietra, Della Pietra, 1996. Logistic regression derived from a principle rather than assumed as a loss. Read the duality argument once properly; every log-linear model in the course is a corollary of it.
  169. Day 169 (AI): ByT5: Towards a token-free future with pre-trained byte-to-byte models — Xue, Barua, Constant, Al-Rfou, Narang, Kale, Roberts, Raffel, 2021. Bytes all the way down, with the compute cost stated honestly and the noise-robustness gain measured. Read the cost table: it is the argument against, written by the people arguing for.
  170. Day 170 (AI): The Pile: An 800GB Dataset of Diverse Text for Language Modeling — Gao et al., 2020. A corpus documented component by component, with the composition argued for rather than scraped. Read it as the datasheet you will have to write for whatever data your lab component consumes.
  171. Day 171 (systems): Large-scale Incremental Processing Using Distributed Transactions and Notifications — Peng, Dabek, 2010. Percolator: transactions bolted onto Bigtable so an index can be updated incrementally instead of rebuilt. Read the two-phase commit implemented in client library code — no coordinator, just columns.
  172. Day 172 (AI): Deduplicating Training Data Makes Language Models Better — Lee, Ippolito, Nystrom, Zhang, Eck, Callison-Burch, Carlini, 2022. Duplication inflates benchmark numbers and increases memorisation, both measured. Read it the day after you build the near-duplicate detector, and check your own corpus against their rates.
  173. Day 173 (AI): Documenting Large Webtext Corpora: A Case Study on the Colossal Clean Crawled Corpus — Dodge, Sap, Marasović, Agnew, Ilharco, Groeneveld, Mitchell, Gardner, 2021. What the filters actually removed, measured — including whole dialects. Read it as the audit you should run on your own corpus rather than as a criticism of someone else's.
  174. Day 174 (AI): An Empirical Study of Smoothing Techniques for Language Modeling — Chen, Goodman, 1996. The comparison that settled n-gram smoothing, with every method reimplemented under one protocol. It is the best example in NLP of a paper whose contribution is the experiment, not the method.
  175. Day 175 (systems): Don't Settle for Eventual: Scalable Causal Consistency for Wide-Area Storage with COPS — Lloyd, Freedman, Kaminsky, Andersen, 2011. Causal consistency made to scale by tracking dependencies explicitly, with the metadata cost paid openly. Read it against the vector clocks you implemented on day 145 — this is what they cost in production.
  176. Day 176 (AI): WiC: the Word-in-Context Dataset for Evaluating Context-Sensitive Meaning Representations — Pilehvar, Camacho-Collados, 2018. A sense task framed as binary same-meaning judgements, so it needs no sense inventory. Read the construction: it is the cleanest example of turning an unanswerable annotation problem into an answerable one.
  177. Day 177 (AI): How Contextual are Contextualized Word Representations? Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings — Ethayarajh, 2019. Contextual vectors occupy a narrow cone, and self-similarity falls with depth — measured, not asserted. Read it before you trust cosine similarity between two contextual vectors ever again.
  178. Day 178 (systems): Amdahl's Law in the Multicore Era — Hill, Marty, 2008. Amdahl applied to how you spend a fixed transistor budget across cores, with asymmetric and dynamic designs compared. Four pages, and it reframes the law from a warning into a design tool.
  179. Day 179 (AI): Deep Semantic Role Labeling: What Works and What's Next — He, Lee, Lewis, Zettlemoyer, 2017. A strong neural SRL system followed by an error analysis that says exactly which linguistic phenomena remain broken. The error analysis is the model for the one you will write in March.
  180. Day 180 (systems): Simple Testing Can Prevent Most Critical Failures — Yuan et al., 2014. An analysis of real catastrophic failures in distributed systems, and how many were reachable by three nodes and a unit test of the error handler. Read it and then look at your own empty catch blocks.
  181. Day 181 (AI): The Berkeley FrameNet Project — Baker, Fillmore, Lowe, 1998. Frames as the unit of meaning, with the lexicographic method that produced them. Read it against PropBank and write the one-paragraph answer to why two role inventories exist at all.
  182. Day 182 (systems): The Case for Energy-Proportional Computing — Barroso, Hölzle, 2007. Servers spend their lives at 10-50% utilisation and are least efficient exactly there. Read the utilisation histogram, then ask what your own GPU box's histogram looks like.
  183. Day 183 (AI): The Proposition Bank: An Annotated Corpus of Semantic Roles — Palmer, Gildea, Kingsbury, 2005. How a million-word role-annotated corpus was actually built: frame files, the annotation interface, the double-blind pass and adjudication. This is the process your annotation tool has to support.
  184. Day 184 (AI): Distant supervision for relation extraction without labeled data — Mintz, Bills, Snow, Jurafsky, 2009. Align a knowledge base to text and call every co-occurrence a label. Read it for the assumption stated in one sentence, which is both the whole idea and the whole problem.
  185. Day 185 (systems): Dark Silicon and the End of Multicore Scaling — Esmaeilzadeh, Blem, St. Amant, Sankaralingam, Burger, 2011. The projection that most of a chip must stay switched off, and the speedup ceiling that implies. Read it as the reason accelerators exist, which is the reason your CUDA work has a point.
  186. Day 186 (AI): Automatic Labeling of Semantic Roles — Gildea, Jurafsky, 2002. The paper that created semantic role labelling as a task, with the feature set that every later system inherited. Read the feature list as an inventory of what syntax contributes to semantics.
  187. Day 187 (AI): Position-aware Attention and Supervised Data Improve Slot Filling — Zhang, Zhong, Chen, Angeli, Manning, 2017. TACRED, and the finding that a large supervised set beats a clever distant-supervision model. Read the data-collection section as the argument that annotation is a modelling decision.
  188. Day 188 (AI): Matching the Blanks: Distributional Similarity for Relation Learning — Baldini Soares, FitzGerald, Ling, Kwiatkowski, 2019. A pretraining objective invented for one task, with an ablation over six ways of marking the entity spans. The span-marking ablation is the useful part and takes an afternoon to reproduce.
  189. Day 189 (systems): A Case for Redundant Arrays of Inexpensive Disks (RAID) — Patterson, Gibson, Katz, 1988. Reliability computed from component MTTF, then designed around, in a paper that named an entire product category. Read the arithmetic in section 3 — it is the dependability chapter made concrete.
  190. Day 190 (AI): Zero-Shot Relation Extraction via Reading Comprehension — Levy, Seo, Choi, Zettlemoyer, 2017. Relations reformulated as questions, so an unseen relation needs a template rather than data. Read it as the earliest clean example of task reformulation, which is what prompting later became.
  191. Day 191 (AI): Language Models as Knowledge Bases? — Petroni, Rocktäschel, Lewis, Bakhtin, Wu, Miller, Riedel, 2019. Probing a language model for relational facts with cloze templates, against a real extraction pipeline as the baseline. Read the baseline comparison and note how much of the effect is template sensitivity.
  192. Day 192 (AI): Abstract Meaning Representation for Sembanking — Banarescu et al., 2013. A whole-sentence semantic representation designed to be annotatable by humans at speed, which is the constraint that shaped every choice in it. Read the design rationale, not the formalism.
  193. Day 193 (systems): What Every Programmer Should Know About Memory — Drepper, 2007. A hundred pages on the memory hierarchy from the person who wrote the libc allocator, with measurements throughout. Read the cache and prefetching sections against your simulator and see which of your results it predicts.
  194. Day 194 (AI): Introduction to the CoNLL-2003 Shared Task: Language-Independent Named Entity Recognition — Tjong Kim Sang, De Meulder, 2003. The task definition, the data split and the scorer that the field then used for twenty years. Read it to see how much of a benchmark's longevity comes from the scorer being unambiguous.
  195. Day 195 (AI): Don't Stop Pretraining: Adapt Language Models to Domains and Tasks — Gururangan, Marasović, Swayamdipta, Lo, Beltagy, Downey, Smith, 2020. Domain- and task-adaptive pretraining, with a clean factorial design across four domains and eight tasks. It is from the group you are trying to work with; read the experimental grid as a template for your own.
  196. Day 196 (systems): The Case for Learned Index Structures — Kraska, Beutel, Chi, Dean, Polyzotis, 2017. An index as a learned CDF, argued from cache behaviour rather than from novelty. Read it the week you finish the cache simulator: the whole case rests on numbers your simulator can check.
  197. Day 197 (AI): End-to-end Neural Coreference Resolution — Lee, He, Lewis, Zettlemoyer, 2017. No mention detector, no parser — score every span and prune. Read the pruning: the whole system is a careful answer to the quadratic blowup you wrote about on day 182.
  198. Day 198 (systems): Roofline: An Insightful Visual Performance Model for Multicore Architectures — Williams, Waterman, Patterson, 2009. Arithmetic intensity against attainable performance, on one plot, with the optimisation ceilings drawn in. Every performance conversation you have for the next two years can be held on this diagram.
  199. Day 199 (AI): Higher-order Coreference Resolution with Coarse-to-fine Inference — Lee, He, Zettlemoyer, 2018. A coarse scorer to prune before the expensive one, plus antecedent refinement. Read the coarse-to-fine trick as a systems decision inside a model, which is exactly what it is.
  200. Day 200 (systems): In-Datacenter Performance Analysis of a Tensor Processing Unit — Jouppi et al., 2017. A production accelerator described with a roofline for every workload, and the honest finding that most of them are memory bound. Read it the week before you write a tiled GEMM.
  201. Day 201 (AI): SpanBERT: Improving Pre-training by Representing and Predicting Spans — Joshi, Chen, Liu, Weld, Zettlemoyer, Levy, 2020. Mask contiguous spans and predict them from the boundaries, because the downstream tasks are span tasks. Read the ablation separating span masking from the boundary objective; only one of them is doing the work.
  202. Day 202 (AI): BERT for Coreference Resolution: Baselines and Analysis — Joshi, Levy, Zettlemoyer, Weld, 2019. Swap the encoder, keep the model, and analyse what improved. The analysis section — which error categories moved and which did not — is the shape of the writeup you owe in March.
  203. Day 203 (systems): EIE: Efficient Inference Engine on Compressed Deep Neural Network — Han, Liu, Mao, Pu, Pedram, Horowitz, Dally, 2016. Sparsity and quantization taken all the way into the datapath, with energy per operation as the metric. Read it against your own GEMM: it is what happens when the memory wall is attacked at the hardware level.
  204. Day 204 (AI): The Winograd Schema Challenge — Levesque, Davis, Morgenstern, 2012. A test designed so that statistics over the corpus should not suffice, with the design constraints stated as rules. Read it and then decide whether the constraints held, which is a live question.
  205. Day 205 (AI): CoNLL-2012 Shared Task: Modeling Multilingual Unrestricted Coreference in OntoNotes — Pradhan, Moschitti, Xue, Uryupina, Zhang, 2012. The averaged metric everyone reports, and the reason it is an average of three metrics that disagree. Read the task setup before you claim your system beats a published number.
  206. Day 206 (AI): Centering: A Framework for Modeling the Local Coherence of Discourse — Grosz, Joshi, Weinstein, 1995. Coherence as constraints on which entity is in focus across adjacent sentences, stated precisely enough to implement. Read it and then implement the transition types; the theory is testable, which is rare.
  207. Day 207 (systems): Coordination Avoidance in Database Systems — Bailis, Fekete, Franklin, Ghodsi, Hellerstein, Stoica, 2014. Invariant confluence: exactly when transactions need not coordinate at all. It is speculation one layer up — assume the common case, detect the violation, recover — so read it beside the reorder buffer and write down what plays the part of the flush.
  208. Day 208 (AI): Modeling Local Coherence: An Entity-Based Approach — Barzilay, Lapata, 2008. Centering turned into a feature vector that a classifier can learn from, with three evaluation tasks. Read the evaluation design: they had to invent the tasks, and the tasks outlived the model.
  209. Day 209 (AI): The Penn Discourse TreeBank 2.0. — Prasad, Dinesh, Lee, Miltsakaki, Robaldo, Joshi, Webber, 2008. A lexically grounded annotation scheme, chosen because it could be annotated reliably rather than because it was theoretically complete. Read the reliability argument — it is the correct reason to choose a scheme.
  210. Day 210 (AI): WinoGrande: An Adversarial Winograd Schema Challenge at Scale — Sakaguchi, Le Bras, Bhagavatula, Choi, 2019. The answer to yesterday: crowdsource at scale, then adversarially filter out the items a model can shortcut. AFLite is the technique worth stealing for your own evaluation set.
  211. Day 211 (systems): An Analysis of Network-Partitioning Failures in Cloud Systems — Alquraan, Takruri, Alfatafta, Al-Kiswany, 2018. A hundred and thirty-six real partition failures, categorised, with how each was found and how long it took to report. Read it on the day you write a status email: most of these bugs were invisible until someone described a symptom precisely.
  212. Day 212 (AI): Survey Article: Inter-Coder Agreement for Computational Linguistics — Artstein, Poesio, 2008. Which kappa, when, and what chance agreement means for each. Read it before you report an agreement number, because most reported kappas use the wrong expected-agreement model.
  213. Day 213 (AI): Cheap and Fast – But is it Good? Evaluating Non-Expert Annotations for Natural Language Tasks — Snow, O'Connor, Jurafsky, Ng, 2008. How many non-expert annotations equal one expert, measured per task. Read it as the budgeting model for whatever labelled data your lab component ends up needing.
  214. Day 214 (systems): Efficient Processing of Deep Neural Networks: A Tutorial and Survey — Sze, Chen, Yang, Emer, 2017. Dataflows, reuse and energy for neural hardware, organised as a taxonomy rather than a product list. Read the data-reuse section against your tiled GEMM: it names what your tiling was doing.
  215. Day 215 (AI): Towards a Human-like Open-Domain Chatbot — Adiwardana et al., 2020. They invent a human metric — sensibleness and specificity — and then show perplexity correlates with it. Read the correlation plot: it is a rare honest attempt to justify an automatic metric.
  216. Day 216 (systems): SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol — Das, Gupta, Motivala, 2002. Failure detection separated from membership dissemination, with the detection time and false-positive rate both derived rather than tuned. A short protocol paper with real analysis in it — the right shape for a tired evening.
  217. Day 217 (AI): MultiWOZ -- A Large-Scale Multi-Domain Wizard-of-Oz Dataset for Task-Oriented Dialogue Modelling — Budzianowski, Wen, Tseng, Casanueva, Ultes, Ramadan, Gašić, 2018. The Wizard-of-Oz collection protocol, and the annotation errors later versions spent years fixing. Read both the protocol and its corrections as one lesson about collecting dialogue data.
  218. Day 218 (systems): MLPerf Inference Benchmark — Reddi et al., 2019. What it takes to make two systems' numbers comparable: fixed scenarios, latency bounds, accuracy targets and a load generator. Read the rules section as a design document for your own evaluation harness.
  219. Day 219 (AI): Recipes for building an open-domain chatbot — Roller et al., 2020. Blending skills, and the finding that decoding-length control mattered as much as model scale. Read the human evaluation protocol; it is the most carefully described one in the dialogue literature.
  220. Day 220 (AI): AllenNLP: A Deep Semantic Natural Language Processing Platform — Gardner et al., 2018. A research framework built around declarative configuration and reproducible experiments, from the institute you are trying to join. Read it for the abstractions, then decide which ones your own harness should have stolen.
  221. Day 221 (systems): Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing — Zaharia et al., 2012. Fault tolerance by remembering the lineage of a computation instead of replicating its data. Read it as the cleanest example in the literature of a restriction — coarse-grained transformations — that buys a property.
  222. Day 222 (AI): Data Statements for Natural Language Processing: Toward Mitigating System Bias and Enabling Better Science — Bender, Friedman, 2018. What a dataset must state about its speakers, its curation and its situation, from the linguist down the hall. Write one for the data you annotated this month; the schema is short and the exercise is not.
  223. Day 223 (AI): Annotation Artifacts in Natural Language Inference Data — Gururangan, Swayamdipta, Levy, Schwartz, Bowman, Smith, 2018. A hypothesis-only model gets 67% on SNLI, which means the dataset leaks. Read it before you trust any number you produced this quarter, including your own annotation batch.
  224. Day 224 (AI): Right for the Wrong Reasons: Diagnosing Syntactic Heuristics in Natural Language Inference — McCoy, Pavlick, Linzen, 2019. HANS: a test set built so that three named heuristics all fail, and models trained on SNLI collapse on it. Read the construction, then build the equivalent for your own task before the quarter ends.
  225. Day 225 (systems): Large-scale cluster management at Google with Borg — Verma, Pedrosa, Korupolu, Oppenheimer, Tune, Wilkes, 2015. Ten years of running everyone's jobs on one cluster, with the quota, priority and preemption policy explained. Read it before you complain about a lab scheduler; every rule in it exists because something went wrong.
  226. Day 226 (AI): Errudite: Scalable, Reproducible, and Testable Error Analysis — Wu, Ribeiro, Heer, Weld, 2019. Error analysis as queries over the whole dataset rather than as twenty cherry-picked examples, from a UW group. Read it and then check whether your buckets from day 223 would survive their three principles.
  227. Day 227 (AI): Beyond Accuracy: Behavioral Testing of NLP Models with CheckList — Ribeiro, Wu, Guestrin, Singh, 2020. A test matrix of capabilities against test types, and commercial systems failing tests nobody had written. Read it as the argument that a single number is not an evaluation, which is the argument your component embodies.
  228. Day 228 (AI): Language (Technology) is Power: A Critical Survey of "Bias" in NLP — Blodgett, Barocas, Daumé III, Wallach, 2020. A survey of 146 bias papers finding that most never say what harm they mean. Read it as an argument about specification, which is the same discipline as writing a measurable claim.
  229. Day 229 (systems): TAO: Facebook's Distributed Data Store for the Social Graph — Bronson et al., 2013. A read-optimised graph store whose API was chosen by what the application actually asked for. Read the API section next to your evaluation component and ask whether yours was designed for its callers or for you.
  230. Day 230 (AI): A Call for Clarity in Reporting BLEU Scores — Post, 2018. Two BLEU scores in two papers are usually not the same measurement, because tokenization and normalisation are unreported parameters. Comparability comes before significance: fix the measurement today, then let the test mean something.
  231. Day 231 (AI): Dataset Cartography: Mapping and Diagnosing Datasets with Training Dynamics — Swayamdipta, Schwartz, Lourie, Wang, Hajishirzi, Smith, Choi, 2020. Confidence and variability across training turn a dataset into a map of easy, ambiguous and mislabelled regions. Run it on the data you annotated in February — it is the cheapest audit you will ever perform, and it is from the group you are joining.
  232. Day 232 (systems): Anatomy of High-Performance Matrix Multiplication — Goto, van de Geijn, 2008. The layered blocking argument your tiled kernel is groping toward without knowing it: which operand gets which level of the hierarchy, and why the packing routine exists at all.
  233. Day 233 (systems): Benchmarking GPUs to Tune Dense Linear Algebra — Volkov, Demmel, 2008. Where the registers-not-occupancy argument comes from. Read it today, because today is the day you stop adding threads and start giving each one more work.
  234. Day 234 (systems): Out of the Tar Pit — Moseley, Marks, 2006. Accidental against essential complexity, argued at length. Read it the week before CSE 331 starts telling you the same thing in Java, so you arrive with the general form already in your head.
  235. Day 235 (systems): Roofline: An Insightful Visual Performance Model for Multicore Architectures — Williams, Waterman, Patterson, 2009. The one performance model worth carrying for the rest of the plan. Read it the day you have a kernel whose arithmetic intensity you can compute by hand.
  236. Day 236 (systems): Producing Wrong Data Without Doing Anything Obviously Wrong! — Mytkowicz, Diwan, Hauswirth, Sweeney, 2009. Link order and environment size change your measurements by more than your optimizations do. Read it before you believe any number you produced this week.
  237. Day 237 (systems): How to Read a Paper — Keshav, 2007. Three passes, with a stated purpose for each. You are about to read eighty papers in eighty-four days; decide now which of them get the third pass.
  238. Day 238 (systems): The Structure of the THE-Multiprogramming System — Dijkstra, 1968. Layering proposed as a way to make a correctness argument possible, not as a way to organise files. CSE 451 will ask you to add to a kernel that already has layers; this is what they were for.
  239. Day 239 (AI): Distinctive Image Features from Scale-Invariant Keypoints — Lowe, 2004. SIFT, and more usefully the evaluation methodology: repeatability measured under a transformation you applied on purpose. Steal the methodology today and the detector tomorrow.
  240. Day 240 (systems): Reflections on Trusting Trust — Thompson, 1984. Three pages that make the whole notion of "I read the source" conditional. Read it once a year and each time notice a different piece of your toolchain you have never questioned.
  241. Day 241 (systems): Lottery Scheduling: Flexible Proportional-Share Resource Management — Waldspurger, Weihl, 1994. A scheduler whose fairness property is stated up front and then measured. That order — property, then implementation, then measurement — is the whole shape of this term.
  242. Day 242 (systems): Data Movement Is All You Need: A Case Study on Optimizing Transformers — Ivanov, Dryden, Ben-Nun, Li, Hoefler, 2021. A taxonomy of transformer operators by whether they are compute or memory bound, with the fusion decisions falling out of it. Read it as the justification for the next four tensorforge steps.
  243. Day 243 (AI): A Computational Approach to Edge Detection — Canny, 1986. An operator derived from three stated criteria rather than proposed and then justified. Read the derivation; the algorithm everybody implements is the last two pages.
  244. Day 244 (systems): Meltdown: Reading Kernel Memory from User Space — Lipp et al., 2018. The consequence of the design decision you are reading about this week: the kernel mapped into every address space, cheaply, for twenty years. Read it while mprotect and the page table are fresh.
  245. Day 245 (systems): Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism — Anderson, Bershad, Lazowska, Levy, 1991. The interface problem between a user-level thread package and a kernel that does not know it exists — written here, by this department. Read it before you decide your thread pool is the kernel's equal.
  246. Day 246 (systems): What Every Programmer Should Know About Memory — Drepper, 2007. A hundred pages on the memory hierarchy, and the reason half of this term's measurements come out the way they do. Read the cache and NUMA sections today; the rest can wait for the next catch-up day.
  247. Day 247 (systems): The Linux Scheduler: a Decade of Wasted Cores — Lozi, Lepers, Funston, Gaud, Quéma, Fedorova, 2016. Four bugs that left cores idle while threads waited, in the scheduler everyone runs, found only because somebody built a visualiser. Read it as an argument for instrumenting your own run queue today rather than later.
  248. Day 248 (AI): Image Quality Assessment: From Error Visibility to Structural Similarity — Wang, Bovik, Sheikh, Simoncelli, 2004. Why mean squared error is a bad metric for images, argued with pairs of images that have identical MSE and obviously different quality. You will need a metric next week; pick it now, with a reason.
  249. Day 249 (systems): The Slab Allocator: An Object-Caching Kernel Memory Allocator — Bonwick, 1994. Object caching and constructor reuse, from the paper that put slabs in every kernel since. Read it against your own free list, which is currently doing the general thing for objects that are all one size.
  250. Day 250 (systems): EIE: Efficient Inference Engine on Compressed Deep Neural Network — Han, Liu, Mao, Pu, Pedram, Horowitz, Dally, 2016. Compression treated as an architecture problem: the energy numbers per memory level are the argument, not the accuracy. Read the energy table before you decide quantization is about model size.
  251. Day 251 (AI): SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models — Xiao, Lin, Seznec, Wu, Demouth, Han, 2023. The activation outlier problem, and a fix that moves difficulty from activations to weights with a single scaling factor. Read it as the reason your INT8 path will lose accuracy in exactly one place.
  252. Day 252 (systems): How Amazon Web Services Uses Formal Methods — Newcombe, Rath, Zhang, Munteanu, Brooker, Deardeuff, 2015. Engineers using TLA+ on real systems, with the bugs it found listed and the ones it did not. Read it alongside CSE 331 as the industrial version of the same claim.
  253. Day 253 (systems): Soft Updates: A Solution to the Metadata Update Problem in File Systems — Ganger, McKusick, Soules, Patt, 2000. Ordering enforced by dependency tracking rather than by synchronous writes or a journal. The third answer to crash consistency, and the one nobody teaches; read it so your own answer is a choice.
  254. Day 254 (AI): Rapid Object Detection using a Boosted Cascade of Simple Features — Viola, Jones, 2001. A cascade is a scheduling decision: spend almost nothing on the windows that are obviously background. That idea outlived the features it was built on and is exactly what early-exit inference is.
  255. Day 255 (AI): Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference — Jacob et al., 2018. The affine quantization scheme written out with the integer arithmetic that makes it exact, including the requantization multiplier. This is the arithmetic your kernel is implementing whether you derived it or not.
  256. Day 256 (AI): AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration — Lin, Tang, Tang, Yang, Dang, Han, 2024. One percent of the weights matter, and which ones is decided by the activations rather than the weights. Read it against your per-layer sensitivity ranking from two days ago and see whether it predicts yours.
  257. Day 257 (AI): Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography — Fischler, Bolles, 1981. Estimation that assumes most of its input is garbage — the opposite assumption to least squares, and the reason vision works outdoors. Derive the iteration count formula from the paper before you use the library default.
  258. Day 258 (systems): An Empirical Study of Operating System Errors — Chou, Yang, Chelf, Hallem, Engler, 2001. Where kernel bugs actually live, counted rather than guessed: device drivers, error paths, and code that was copied. Read it alongside CSE 451 and note that the highest-density category is the one nobody tests.
  259. Day 259 (systems): Coz: Finding Code that Counts with Causal Profiling — Curtsinger, Berger, 2015. A profiler that answers "if I made this faster, what would happen" instead of "where is the time". Read it before you build yours, because the naive one answers the less useful question.
  260. Day 260 (AI): U-Net: Convolutional Networks for Biomedical Image Segmentation — Ronneberger, Fischer, Brox, 2015. Skip connections at every resolution, and a training recipe designed for thirty images. Read the augmentation section: the architecture is famous, the data strategy is what made it work.
  261. Day 261 (AI): A Taxonomy and Evaluation of Dense Two-Frame Stereo Correspondence Algorithms — Scharstein, Szeliski, 2002. A whole subfield decomposed into four stages so that algorithms can be compared component by component. This is what a good ablation looks like when it is done to other people's work rather than your own.
  262. Day 262 (systems): Demystifying GPU Microarchitecture through Microbenchmarking — Wong, Papadopoulou, Sadooghi-Alvandi, Moshovos, 2010. How to find out what the hardware does when the vendor will not tell you: a microbenchmark per structure. Read it as method, then use the method on whichever number in your profiler you do not believe.
  263. Day 263 (systems): Arrakis: The Operating System is the Control Plane — Peter, Li, Zhang, Ports, Woos, Krishnamurthy, Anderson, Roscoe, 2014. Taking the kernel out of the data path entirely, argued with latency numbers — and written in this building. Read it the day you find out what epoll costs per event.
  264. Day 264 (systems): Quantum Theory, the Church-Turing Principle and the Universal Quantum Computer — Deutsch, 1985. The paper that defines the universal quantum computer and states the Church-Turing principle physically. This is reading ahead: nothing you build for another year is quantum, and today the point is only to see where the model differs from the machine you have been writing kernels for. (Scanned PDF, no text layer — read it on a screen large enough.)
  265. Day 265 (AI): An Iterative Image Registration Technique with an Application to Stereo Vision — Lucas, Kanade, 1981. Registration as Newton's method on an image, in four pages. Everything since is this with a better warp model or a pyramid on top.
  266. Day 266 (systems): All File Systems Are Not Created Equal: On the Complexity of Crafting Crash-Consistent Applications — Pillai, Chidambaram, Alagappan, Al-Kiswany, Arpaci-Dusseau, Arpaci-Dusseau, 2014. Applications assume ordering guarantees that filesystems do not provide, and the paper enumerates which. Read it before you write your invariant, because half the invariants people write depend on one of these assumptions.
  267. Day 267 (systems): MLPerf Inference Benchmark — Reddi et al., 2019. What it takes to make an inference number comparable across submitters: scenarios, latency bounds, and rules against the shortcuts everyone would otherwise take. Your README is a one-person version of this.
  268. Day 268 (AI): Structure-from-Motion Revisited — Schönberger, Frahm, 2016. The incremental SfM pipeline written down with every robustness detail that the textbook version leaves out. Read the failure-mode discussion; that is the part you will need when your own two-view reconstruction collapses.
  269. Day 269 (systems): Stabilizer: Statistically Sound Performance Evaluation — Curtsinger, Berger, 2013. Randomising layout so that the measurement is of your change and not of where the linker put things. Read it against your own storage benchmark, which currently has one layout and one story.
  270. Day 270 (systems): Scalability! But at what COST? — McSherry, Isard, Murray, 2015. The Configuration that Outperforms a Single Thread: several published systems need hundreds of cores to beat one good laptop implementation. Compute the COST of your own parallel work before someone else does.
  271. Day 271 (systems): Efficiently Scaling Transformer Inference — Pope, Douglas, Chowdhery, Devlin, Bradbury, Levskaya, Heek, Xiao, Agrawal, Dean, 2022. Inference cost decomposed into memory bandwidth, memory capacity and communication, with the partitioning strategy chosen from that decomposition. Read it on day one of inferd so the design has a reason.
  272. Day 272 (AI): NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis — Mildenhall, Srinivasan, Tancik, Barron, Ramamoorthi, Ng, 2020. A scene stored as network weights and rendered by integrating along rays. Read it as the point where the geometry you spent three weeks on becomes a training objective instead of an algorithm.
  273. Day 273 (AI): Segment Anything — Kirillov et al., 2023. The data engine is the contribution: a model and a labelling loop bootstrapping each other over three stages. Read the data section twice and the architecture section once.
  274. Day 274 (systems): Finding and Understanding Bugs in C Compilers — Yang, Chen, Eide, Regehr, 2011. Differential testing against a reference, done at industrial scale, plus the discipline of reducing every failure to a minimal case. That is exactly the method your tokenizer needs today.
  275. Day 275 (AI): Emerging Properties in Self-Supervised Vision Transformers — Caron, Touvron, Misra, Jégou, Mairal, Bojanowski, Joulin, 2021. Attention maps that segment objects without ever being told what an object is. Read it as evidence about what the supervision signal was doing, not as an architecture.
  276. Day 276 (systems): Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer — Shor, 1997. The result that made the field a funded field. Read the period-finding reduction carefully and the quantum Fourier transform lightly; the classical number theory is most of the paper and it is the part you can check yourself. Nothing you write this term will run it.
  277. Day 277 (systems): Orca: A Distributed Serving System for Transformer-Based Generative Models — Yu, Jeong, Kim, Kim, Chun, 2022. Iteration-level scheduling: the insight that a batch should be re-formed every token rather than every request. Read it now so that continuous batching later is an implementation rather than an idea.
  278. Day 278 (AI): Finite-time Analysis of the Multiarmed Bandit Problem — Auer, Cesa-Bianchi, Fischer, 2002. UCB1 with a regret bound that holds at finite time, not asymptotically. Read the proof sketch: the confidence term you will implement today is a Hoeffding bound wearing a hat.
  279. Day 279 (systems): Simultaneous Multithreading: Maximizing On-Chip Parallelism — Tullsen, Eggers, Levy, 1995. Filling issue slots from another thread when one thread cannot fill them — the idea behind every hyperthread you have ever measured, from this department. Read it before §3.11 says it in textbook form.
  280. Day 280 (systems): Dynamic Branch Prediction with Perceptrons — Jiménez, Lin, 2001. A linear classifier in the front end of a processor, with the history length it buys you. Read it the same week you start Sutton & Barto and notice that the hardware people got there first.
  281. Day 281 (AI): Efficient Processing of Deep Neural Networks: A Tutorial and Survey — Sze, Chen, Yang, Emer, 2017. Dataflow taxonomies and the energy cost of each memory level, in one place. Read the energy-per-access table and then decide whether your cache design was about time or about bytes.
  282. Day 282 (systems): Evaluating Fuzz Testing — Klees, Ruef, Cooper, Wei, Hicks, 2018. Thirty-two papers re-examined against a consistent protocol — seeds, timeouts, targets, and the statistics — and most of the claimed improvements stop being visible. You are two weeks from writing a proposal; read this as the standard your evaluation section has to meet.
  283. Day 283 (AI): Bandit based Monte-Carlo Planning — Kocsis, Szepesvári, 2006. UCT: what you do when you have a simulator instead of the transition matrix that dynamic programming assumes. Read it beside today's chapter to see exactly which assumption is being traded away.
  284. Day 284 (systems): Spectre Attacks: Exploiting Speculative Execution — Kocher et al., 2019. The performance mechanism you read about yesterday, used as a channel. Read it the day after speculation so the exploit is obvious rather than magic — and note that the fix is not a patch, it is a slower machine.
  285. Day 285 (AI): The Arcade Learning Environment: An Evaluation Platform for General Agents — Bellemare, Naddaf, Veness, Bowling, 2013. What a benchmark has to specify before results on it mean anything: episode boundaries, action sets, evaluation protocol, and the training-testing split of games. Read it as a template for the evaluation section of your proposal.
  286. Day 286 (systems): SARATHI: Efficient LLM Inference by Piggybacking Decodes with Chunked Prefills — Agrawal, Panwar, Mohan, Kwatra, Gulavani, Ramjee, 2023. Prefill and decode have opposite resource profiles, so mixing them in one batch fills the machine. Read it now; it is the scheduling policy you will want two steps from here.
  287. Day 287 (AI): Q-learning — Watkins, Dayan, 1992. The convergence proof for the algorithm everyone uses, with its conditions stated. Read the conditions; three of them are routinely violated by every deep RL implementation you will meet.
  288. Day 288 (systems): A Fast Quantum Mechanical Algorithm for Database Search — Grover, 1996. Quadratic, not exponential, and the amplitude-amplification geometry is the whole thing. Read it as the algorithm most often overclaimed in press releases, and write down exactly what it does and does not promise. Still reading ahead: nothing here gets implemented before Autumn 2027.
  289. Day 289 (systems): DeepSpeed Inference: Enabling Efficient Inference of Transformer Models at Unprecedented Scale — Aminabadi et al., 2022. Kernel fusion, parallelism and offloading treated as one design space with a decision rule. Read the section on when offloading pays; it is the calculation you will need when your model does not fit.
  290. Day 290 (AI): Learning to Predict by the Methods of Temporal Differences — Sutton, 1988. The original argument that TD beats supervised prediction on the same data, with the random-walk experiment you are about to reproduce. Reproduce the figure, not the claim.
  291. Day 291 (AI): Deep Reinforcement Learning with Double Q-learning — van Hasselt, Guez, Silver, 2016. Maximisation bias, demonstrated as an overestimate that grows with the action count, and a two-estimator fix. Read it the same day the book introduces the bias, and check the fix on your own tabular code.
  292. Day 292 (AI): Prioritized Experience Replay — Schaul, Quan, Antonoglou, Silver, 2016. Prioritised sweeping's idea moved to the deep setting, with the importance-sampling correction that stops the prioritisation from biasing the update. Read it beside chapter 8 next week and note that it is the same trick.
  293. Day 293 (AI): Temporal Difference Learning and TD-Gammon — Tesauro, 1995. Self-play plus TD, on 1990s hardware, producing opening theory that human players adopted. Read it for the honest discussion of why it worked in backgammon and would not have in chess.
  294. Day 294 (systems): QuickCheck: A Lightweight Tool for Random Testing of Haskell Programs — Claessen, Hughes, 2000. Properties and generators instead of examples, plus shrinking, which is the part that makes a random failure debuggable. Read it before the property tests you owe your storage component, not after.
  295. Day 295 (systems): Algorithms for Scalable Synchronization on Shared-Memory Multiprocessors — Mellor-Crummey, Scott, 1991. The MCS lock: each waiter spins on its own cache line, so the lock stops generating coherence traffic proportional to the waiter count. Read it the day you measure what a naive spinlock does to a bus.
  296. Day 296 (systems): x86-TSO: A Rigorous and Usable Programmer's Model for x86 Multiprocessors — Sewell, Sarkar, Owens, Zappa Nardelli, Myreen, 2010. The memory model you have been programming against without a definition, defined — including the litmus tests that show the informal descriptions were wrong. Read it beside §5.6 and then check your own lock-free code.
  297. Day 297 (systems): An Analysis of Linux Scalability to Many Cores — Boyd-Wickizer, Clements, Mao, Pesterev, Kaashoek, Morris, Zeldovich, 2010. Seven applications scaled to 48 cores, with each bottleneck found, fixed and named. Read the method: measure, find the one contended structure, fix it, measure again. That is exactly the loop you run today on your own component.
  298. Day 298 (systems): Dissecting the NVIDIA Volta GPU Architecture via Microbenchmarking — Jia, Maggioni, Staiger, Scarpazza, 2018. Latencies, cache hierarchy and tensor-core behaviour measured rather than documented. Read it against the mental model PMPP is about to give you and mark where the measurement contradicts the abstraction.
  299. Day 299 (systems): Splitwise: Efficient Generative LLM Inference Using Phase Splitting — Patel, Choukse, Zhang, Shah, Goiri, Maleki, Bianchini, 2024. The two phases put on different machines because they want different hardware. Read it the day you measure both phases separately and see how little they have in common.
  300. Day 300 (systems): Quantum Cryptography: Public Key Distribution and Coin Tossing — Bennett, Brassard, 1984. BB84: security resting on measurement disturbing state rather than on a hardness assumption. Read it as the cleanest example of a quantum property being used for something, and note that it needs no computer at all. Reading ahead, as with the other four.
  301. Day 301 (AI): Implementation Matters in Deep Policy Gradients: A Case Study on PPO and TRPO — Engstrom, Ilyas, Santurkar, Tsipras, Janoos, Rudolph, Madry, 2020. The gains attributed to an algorithm turning out to come from code-level details shared by both algorithms. Read it on the day you write your first claim, and make the claim about a mechanism you can turn off.
  302. Day 302 (systems): Halide: A Language and Compiler for Optimizing Parallelism, Locality, and Recomputation in Image Processing Pipelines — Ragan-Kelley, Barnes, Adams, Paris, Durand, Amarasinghe, 2013. Separating the algorithm from the schedule, which is the single most useful idea in performance engineering and the one your kernels currently mix together. Read it and then look at how many of your kernel variants differ only in schedule.
  303. Day 303 (AI): Benchmarking Deep Reinforcement Learning for Continuous Control — Duan, Chen, Houthooft, Schulman, Abbeel, 2016. A set of tasks and a set of algorithms run under one protocol so that the numbers can be compared at all. Read it while choosing baselines, because it says precisely what "the same baseline" has to mean.
  304. Day 304 (AI): The Curious Case of Neural Text Degeneration — Holtzman, Buys, Du, Forbes, Choi, 2020. Why maximum-likelihood decoding produces repetitive text, and nucleus sampling as the fix — from this department. Read it the day you implement top-p, so the parameter has an argument behind it.
  305. Day 305 (systems): TVM: An Automated End-to-End Optimizing Compiler for Deep Learning — Chen et al., 2018. The schedule search that replaces the hand tuning you have been doing for six weeks. Read it and decide honestly which of your optimizations a search would have found faster than you did.
  306. Day 306 (systems): An Axiomatic Basis for Computer Programming — Hoare, 1969. Preconditions, postconditions and the loop invariant, introduced. Six pages, and it is the reason CSE 331 and your storage component are using the same word for the same thing. Read it and then re-read your own invariant to see whether it is one.
  307. Day 307 (systems): Triton: An Intermediate Language and Compiler for Tiled Neural Network Computations — Tillet, Kung, Cox, 2019. Tiles as the language primitive, so the compiler owns the index arithmetic you have been writing by hand. Read it as the answer to why your kernels are mostly indices.
  308. Day 308 (systems): seL4: Formal Verification of an OS Kernel — Klein et al., 2009. What a proof about a kernel actually covers and, more usefully, what it explicitly assumes. Read the assumptions section as a model for the limitations section of your own component.
  309. Day 309 (AI): Rainbow: Combining Improvements in Deep Reinforcement Learning — Hessel et al., 2018. Six extensions combined and then removed one at a time. The ablation is the paper; copy its structure directly into the table you write today.
  310. Day 310 (systems): Exokernel: An Operating System Architecture for Application-Level Resource Management — Engler, Kaashoek, O'Toole, 1995. A design argument — separate protection from management — carried by measurements against a real system. This is the shape your proposal has to take: one claim, and evidence that is not a preference.
  311. Day 311 (AI): Proximal Policy Optimization Algorithms — Schulman, Wolski, Dhariwal, Radford, Klimov, 2017. A method whose contribution is that it is simple enough for other people to reproduce. Read it against TRPO and let it set the bar for how implementable your proposed method has to be.
  312. Day 312 (systems): Quantum Computing in the NISQ era and beyond — Preskill, 2018. What the machines can actually do now, from someone with no incentive to overstate it. Read it last of the five: Deutsch said what the model is, Shor and Grover said what it could do, BB84 said what it already does, and this says how far the hardware is from any of it. That gap is the reason quantum is a 2027 reading lane and a 2028 building lane, not a 2027 project.
  313. Day 313 (systems): IX: A Protected Dataplane Operating System for High Throughput and Low Latency — Belay, Prekas, Klimovic, Grossman, Kozyrakis, Bugnion, 2014. Latency and throughput reported together, with the protection story kept intact. Read the evaluation section as the template for the one you are writing today.
  314. Day 314 (AI): Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor — Haarnoja, Zhou, Abbeel, Levine, 2018. Entropy as a term in the objective rather than a schedule bolted on the side. Read it as an example of moving something from the training loop into the definition of the problem.
  315. Day 315 (AI): Mastering Atari, Go, Chess and Shogi by Planning with a Learned Model — Schrittwieser et al., 2020. Read it today as a scope check rather than as a method: this is what a team of that size did in a year, and your proposal has one person and one summer. Adjust the claim, not the ambition.
  316. Day 316 (AI): Improving Reproducibility in Machine Learning Research (A Report from the NeurIPS 2019 Reproducibility Program) — Pineau et al., 2021. The checklist you are about to hold yourself to for a hundred days. Fill it in today, for a result you have not got yet — the boxes you cannot tick are the experiments you have not designed.
  317. Day 317 (systems): Accelerating Large Language Model Decoding with Speculative Sampling — Chen et al., 2023. The modified rejection sampler, which is what makes speculative decoding exact rather than approximately right. Read it before you write the acceptance test: getting it wrong changes the output distribution and nothing crashes.
  318. Day 318 (systems): Quantum Chemistry in the Age of Quantum Computing — Cao et al., 2019. The application quantum computing is most likely to deliver first, with the resource requirements stated rather than implied. Quantum is reading only this summer; start with the one that says what the machine would be for.
  319. Day 319 (systems): A Nine Year Study of File System and Storage Benchmarking — Traeger, Zadok, Joukov, Wright, 2008. Four hundred and fifteen published benchmarks surveyed, and almost none of them comparable to each other. Read it before you record your baseline: a number without its full configuration is not a measurement, it is an anecdote.
  320. Day 320 (AI): Blockwise Parallel Decoding for Deep Autoregressive Models — Stern, Shazeer, Uszkoreit, 2018. Speculative decoding's ancestor, from before it had the exactness proof. Read it for what it gave up to go fast, and check whether your implementation quietly gave up the same thing.
  321. Day 321 (AI): What is dynamic programming? — Eddy, 2004. Two pages, and it is the recurrence you are writing today. Read it before the implementation; it is much less useful afterwards.
  322. Day 322 (systems): ProtTrans: Towards Cracking the Language of Life's Code Through Self-Supervised Deep Learning and High Performance Computing — Elnaggar et al., 2022. Protein language models trained at supercomputer scale, evaluated on the tasks the Markov chain you fit today is the classical answer to. Read it as the far end of the same lane, and note how much of the compute went into a model with no interpretable states at all.
  323. Day 323 (systems): Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads — Cai et al., 2024. Speculation without a second model, and a tree of candidates instead of a chain. Read it while you are measuring acceptance rate — it tells you which part of your number is the draft model and which is the chain structure.
  324. Day 324 (systems): The theory of variational hybrid quantum-classical algorithms — McClean, Romero, Babbush, Aspuru-Guzik, 2016. The framework behind every variational algorithm you will read this summer: a parameterised circuit, a classical optimizer, and a cost function measured rather than computed. Card the assumptions, because they are the ones that fail on hardware.
  325. Day 325 (AI): What is a hidden Markov model? — Eddy, 2004. The two-page version, written for biologists who have to use one tomorrow. Read it against Durbin chapter 3 and note which one you would hand to someone else.
  326. Day 326 (systems): The case for 4-bit precision: k-bit Inference Scaling Laws — Dettmers, Zettlemoyer, 2023. Bit width traded against parameter count at fixed memory, measured across model families. Read it today, because it is the paper that decides which bit width you should be loading at all.
  327. Day 327 (AI): Accounting for Variance in Machine Learning Benchmarks — Bouthillier et al., 2021. Where the variance in a benchmark actually comes from, and how many seeds you need before a difference means anything. Decide your repeat count from this paper today, not from what fits in the afternoon.
  328. Day 328 (systems): Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures — Williams, Waterman, Patterson, 2008. The model that turns "is it slow" into "which ceiling is it under". Draw the roofline for your own GPU today and put every kernel you write this summer on it.
  329. Day 329 (systems): SpQR: A Sparse-Quantized Representation for Near-Lossless LLM Weight Compression — Dettmers et al., 2023. Outlier weights kept at full precision and everything else pushed down, with the quality loss measured rather than asserted. Read it while your own quality-versus-throughput table is filling in, and check whether your losses are concentrated the same way.
  330. Day 330 (systems): A variational eigenvalue solver on a quantum processor — Peruzzo et al., 2014. VQE, in its first form: the circuit prepares, the classical optimizer decides, and the hard part is measurement. Card what it actually demonstrated against what it is usually cited for.
  331. Day 331 (AI): Deep Reinforcement Learning that Matters — Henderson et al., 2018. Seed variance swamping the effect being claimed, demonstrated rather than asserted. Read it and then look at your own day-329 table and ask whether the INT8 gap survives it.
  332. Day 332 (systems): Single-pass Parallel Prefix Scan with Decoupled Look-back — Merrill, Garland, 2016. The scan you read about yesterday, from the people who shipped it, including the memory-ordering argument. The block-table allocator in your paged attention is a prefix sum with a nicer name.
  333. Day 333 (AI): Accelerated Profile HMM Searches — Eddy, 2011. How HMMER got fast: a filter cascade with a stated false-negative rate at each stage. Read it as a systems paper — it is the same argument as a speculative decoder, made fifteen years earlier.
  334. Day 334 (systems): Alpa: Automating Inter- and Intra-Operator Parallelism for Distributed Deep Learning — Zheng et al., 2022. Partitioning treated as a search problem with a cost model rather than as a design decision. Read it while your own two-device layout is still a guess, and steal the cost model even if you never write the search.
  335. Day 335 (systems): Reducing Activation Recomputation in Large Transformer Models — Korthikanti et al., 2022. Sequence parallelism and selective recomputation, with the memory arithmetic written out per layer. You are about to write the same arithmetic for inference; steal the form of the accounting.
  336. Day 336 (systems): A Quantum Approximate Optimization Algorithm — Farhi, Goldstone, Gutmann, 2014. QAOA as originally stated: a fixed ansatz, a depth parameter, and a performance guarantee that is weaker than most citations of it imply. Card what it actually proves at p = 1.
  337. Day 337 (systems): Quantum advantage in learning from experiments — Huang et al., 2022. A separation proved and then demonstrated, with the experimental design doing as much work as the theorem. Read it today for how the comparison was set up so that the result could not be an artifact.
  338. Day 338 (systems): DistServe: Disaggregating Prefill and Decoding for Goodput-optimized Large Language Model Serving — Zhong et al., 2024. Prefill and decode want different parallelism, and the paper takes that seriously enough to put them on different machines. Read it before you fix your own partitioning, because it argues one partition is not enough.
  339. Day 339 (AI): Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences — Rives et al., 2021. A language model trained on protein sequences recovering structure and homology without being told about either. Read it against the profile HMM you built on day 333: the same problem, and a very different amount of prior knowledge.
  340. Day 340 (systems): Efficient Sparse Matrix-Vector Multiplication on CUDA — Bell, Garland, 2008. Five storage formats measured against the same matrices, with the structure of the matrix deciding the winner every time. This is the clearest example in the summer of a data-structure choice being a performance choice.
  341. Day 341 (systems): Clipper: A Low-Latency Online Prediction Serving System — Crankshaw et al., 2017. Serving as a layered system with a latency budget per layer, from before language models made everyone forget the general case. Read it for the batching-under-a-deadline argument; that is the one your scheduler now has to make.
  342. Day 342 (systems): Quantum Approximate Optimization Algorithm: Performance, Mechanism, and Implementation on Near-Term Devices — Zhou, Wang, Choi, Pichler, Lukin, 2020. What QAOA is actually doing at moderate depth, and heuristics for finding the angles. Read it after Farhi, as the paper that turns the algorithm into something you could run.
  343. Day 343 (AI): Highly accurate protein structure prediction with AlphaFold — Jumper et al., 2021. The paper the AI lane has been walking toward for three weeks. Read the main text today with the profile HMM and the coevolution signal already in your hands; the supplement is the chapter lane for the next two days.
  344. Day 344 (systems): Serving DNNs like Clockwork: Performance Predictability from the Bottom Up — Gujarati et al., 2020. Predictability as the design goal instead of average speed, achieved by removing every source of variance rather than by scheduling around it. Read it while you are deciding what your API promises under load.
  345. Day 345 (AI): Troubling Trends in Machine Learning Scholarship — Lipton, Steinhardt, 2018. Explanation dressed as speculation, and gains attributed to the wrong component. Read it the day you have a grid of results to write up, because the failure modes it names are the ones available to you today.
  346. Day 346 (systems): cuDNN: Efficient Primitives for Deep Learning — Chetlur et al., 2014. Why a library ships several algorithms for one operation and picks between them at run time. That choice is a compiler decision made at the library boundary, which is exactly where the next lane opens.
  347. Day 347 (systems): Open Versus Closed: A Cautionary Tale — Schroeder, Wierman, Harchol-Balter, 2006. A closed-loop load generator cannot produce a queue, so it cannot measure overload — and almost every benchmark harness is closed-loop by accident. Read this before you write yours, not after you publish a latency curve from it.
  348. Day 348 (systems): Barren plateaus in quantum neural network training landscapes — McClean, Boixo, Smelyanskiy, Babbush, Neven, 2018. Gradients vanishing exponentially in qubit count — an optimization result with a concentration-of-measure proof behind it. This is the paper that says why variational quantum machine learning is hard, and it is the one to have read before you meet anyone who does it.
  349. Day 349 (AI): Relational inductive biases, deep learning, and graph networks — Battaglia et al., 2018. Structure put into a model by hand rather than learned, argued generally. You are hard-coding SE(3) today; this is the same decision, and the paper is honest about what it costs.
  350. Day 350 (systems): A Practical Automatic Polyhedral Parallelizer and Locality Optimizer — Bondhugula, Hartono, Ramanujam, Sadayappan, 2008. Loop transformation as an optimization problem over an affine space, chosen by a machine rather than by taste. Today you do four of these by hand; this is what it looks like when the choice is made properly.
  351. Day 351 (AI): Learning agile and dynamic motor skills for legged robots — Hwangbo et al., 2019. The sim-to-real gap closed by learning the actuator model and keeping the rigid-body model analytic. Read it the day you write the analytic half, and note exactly which part they refused to learn.
  352. Day 352 (systems): Scalable GPU Graph Traversal — Merrill, Garland, Grimshaw, 2012. Prefix-sum-based frontier construction and fine-grained load balance, which is scatter-versus-gather taken to its limit. Read it against your day-344 frontier measurements.
  353. Day 353 (systems): Llumnix: Dynamic Scheduling for Large Language Model Serving — Sun et al., 2024. Requests migrated between instances at run time specifically to fix head-of-line blocking and tail latency. Read it while you are staring at your own p99, and note that its whole contribution is a scheduling decision made later than yours is.
  354. Day 354 (systems): Cost Function Dependent Barren Plateaus in Shallow Parametrized Quantum Circuits — Cerezo, Sone, Volkoff, Cincio, Coles, 2021. The refinement: global cost functions have barren plateaus at any depth, local ones do not until you go deep. A result about how you write the objective, which is a lesson that generalises well outside quantum.
  355. Day 355 (AI): Champion-level drone racing using deep reinforcement learning — Kaufmann et al., 2023. A learned policy beating human champions, with a very carefully engineered state estimator underneath it. Read it for the division of labour: what was learned, and what was still solved analytically.
  356. Day 356 (systems): MLPerf Training Benchmark — Mattson et al., 2020. What a benchmark suite has to pin down — quality target, timing rules, permitted tuning — before two people's numbers mean the same thing. Your report needs the same list, and today is when it gets written.
  357. Day 357 (AI): End-to-End Training of Deep Visuomotor Policies — Levine, Finn, Darrell, Abbeel, 2016. The argument for skipping the pipeline you have spent two weeks building: pixels to torques, with no explicit kinematics anywhere. Read it the day you finish the hand-written version so the comparison is concrete rather than rhetorical.
  358. Day 358 (systems): Glow: Graph Lowering Compiler Techniques for Neural Networks — Rotem et al., 2018. Two levels of intermediate representation and an explicit lowering between them, which is exactly the shape of the thing you start building today. Read it on the day the compiler lane opens, so you know what the small language is practice for.
  359. Day 359 (systems): FlashAttention-2: Faster Attention with Better Parallelism and Work Partitioning — Dao, 2023. Work partitioning and occupancy in the kernel that dominates decode. When you find the knee today, this paper is the first place to look for what is saturating.
  360. Day 360 (systems): Noise-Induced Barren Plateaus in Variational Quantum Algorithms — Wang, Fontana, Cerezo, Sharma, Sone, Cincio, Coles, 2021. A second, independent mechanism producing the same flat landscape, this time from hardware noise rather than from expressiveness. Two different causes with one signature is a diagnosis problem, and you had one of those on day 361.
  361. Day 361 (AI): A Metric Learning Reality Check — Musgrave, Belongie, Lim, 2020. A decade of reported improvements that vanish under a fair comparison with a properly tuned baseline. Read it today, on the day your own improvement vanished, and note that the authors did not stop working afterwards.
  362. Day 362 (AI): Do ImageNet Classifiers Generalize to ImageNet? — Recht, Roelofs, Schmidt, Shankar, 2019. A result that was real, reproducible, and still did not hold on a new sample from the same process. That is the distinction your post-mortem has to make today: a wrong measurement and a narrow one need different fixes.
  363. Day 363 (systems): Taming Throughput-Latency Tradeoff in LLM Inference with Sarathi-Serve — Agrawal et al., 2024. A stall-free scheduler that trades a defined amount of throughput for a bounded tail. You have the knee and now you need the knob; this paper says which one it is and what it costs.
  364. Day 364 (systems): Ansor: Generating High-Performance Tensor Programs for Deep Learning — Zheng et al., 2020. A compiler that searches the space of schedules instead of asking you for one. Read it now that you are writing a compiler and have spent a month writing kernels by hand: the decision it takes away from the programmer is the decision you have been making all summer.
  365. Day 365 (systems): SGLang: Efficient Execution of Structured Language Model Programs — Zheng et al., 2024. RadixAttention: prefix sharing as a data structure rather than as a special case for system prompts. Read it before you choose your cache key, because the choice decides what can ever be shared.
  366. Day 366 (systems): Variational Quantum Algorithms — Cerezo et al., 2021. The review that ties the last four catch-up days together: ansatz design, cost functions, trainability, and the honest list of open problems. Read it last, not first.
  367. Day 367 (AI): Diffusion Policy: Visuomotor Policy Learning via Action Diffusion — Chi et al., 2023. A policy that produces a whole action sequence by denoising, which is planning without a planner. Read it against the RRT you write today and say precisely which of the planner's guarantees it drops.
  368. Day 368 (systems): MLIR: A Compiler Infrastructure for the End of Moore's Law — Lattner et al., 2020. The argument that a compiler should have many intermediate representations rather than one. Read it the day you add a pass, because a pass is the first moment you want to say something the AST cannot express.
  369. Day 369 (AI): Learning Quadrupedal Locomotion over Challenging Terrain — Lee, Hwangbo, Wellhausen, Koltun, Hutter, 2020. Teacher-student with privileged information: a controller trained where the state is known, distilled into one where it is not. The controller you write today is the teacher, in exactly the sense the paper means.
  370. Day 370 (AI): Past, Present, and Future of Simultaneous Localization And Mapping: Towards the Robust-Perception Age — Cadena et al., 2016. The field's own account of what state estimation has solved and what it has not. Read it at the start of Thrun rather than at the end, so you know which chapters are still the state of the art and which are history.
  371. Day 371 (systems): Prompt Cache: Modular Attention Reuse for Low-Latency Inference — Gim et al., 2024. Reuse of attention state across non-contiguous prompt segments, which is the case your radix tree cannot express. Read it while you are measuring hit rate, because it tells you which misses were avoidable.
  372. Day 372 (systems): Hardware-efficient Variational Quantum Eigensolver for Small Molecules and Quantum Magnets — Kandala et al., 2017. VQE on real hardware, with the ansatz chosen for what the machine can execute rather than for what the chemistry wants. That trade — the algorithm bending to the device — is the whole of quantum systems in one paper.
  373. Day 373 (AI): ORB-SLAM: a Versatile and Accurate Monocular SLAM System — Mur-Artal, Montiel, Tardós, 2015. A real, working SLAM system that does not use the filter you are writing today, and says why: optimization over a window beats a filter that has already thrown the history away.
  374. Day 374 (AI): The Hardware Lottery — Hooker, 2021. Which research ideas win is decided partly by which hardware happens to exist. Read it on the day you write down where every gigabyte goes, because that table is the local version of the same argument.
  375. Day 375 (systems): PyTorch 2: Faster Machine Learning Through Dynamic Python Bytecode Transformation and Graph Compilation — Ansel et al., 2024. A compiler whose front end is a bytecode interpreter it does not own, with guards for everything it had to assume. You are writing the honest version of the same machine today.
  376. Day 376 (AI): Learning Latent Dynamics for Planning from Pixels — Hafner et al., 2019. A latent state inferred from images and then planned in — the particle filter you write today is the hand-built version of the same object, with a model you wrote instead of one you fit.
  377. Day 377 (systems): QLoRA: Efficient Finetuning of Quantized LLMs — Dettmers, Pagnoni, Holtzman, Zettlemoyer, 2023. Paged optimizer state, 4-bit storage with a second-level quantization of the constants themselves — a memory-accounting paper wearing a fine-tuning costume. Read it while writing your own accounting and steal the level of detail.
  378. Day 378 (systems): Topological quantum memory — Dennis, Kitaev, Landahl, Preskill, 2002. The surface code as a memory with a threshold, and the mapping of decoding onto a statistical-mechanics model. Long, and worth the whole catch-up day; it is the paper the entire error-correction lane in the autumn descends from.
  379. Day 379 (systems): Improved Simulation of Stabilizer Circuits — Aaronson, Gottesman, 2004. The canonical example of representing an object by what you can answer about it rather than by writing it out — which is also what interning and hashing do. Read it as a data-structure paper, because that is what it is.
  380. Day 380 (AI): Are We Really Making Much Progress? A Worrying Analysis of Recent Neural Recommendation Approaches — Ferrari Dacrema, Cremonesi, Jannach, 2019. Eighteen methods, seven reproducible, six beaten by a well-tuned trivial baseline. Read it the day you start writing related work, because it is a paper about what related work is for.
  381. Day 381 (AI): Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World — Tobin et al., 2017. The sensor model you write today is a fiction, and domain randomization is the argument for never trusting one fiction. Read it against your beam model and ask which of its parameters you have any right to.
  382. Day 382 (systems): Quantum supremacy using a programmable superconducting processor — Arute et al., 2019. A benchmark claim whose classical baseline was contested within weeks and revised for years. Read it the day before you compare yourself against vLLM, for how a comparison gets attacked and which parts of it survived.
  383. Day 383 (systems): FlashAttention-3: Fast and Accurate Attention with Asynchrony and Low-precision — Shah et al., 2024. The kernel a large part of vLLM's advantage lives in. Before you explain your gap, find out how much of it is one kernel you did not write and could not have written this summer.
  384. Day 384 (systems): Surface codes: Towards practical large-scale quantum computation — Fowler, Mariantoni, Martinis, Cleland, 2012. The long, patient tutorial version of the surface code, with the resource estimates that made everyone take it seriously. Read it after Dennis et al.; it is the engineering paper to that physics one.
  385. Day 385 (AI): World Models — Ha, Schmidhuber, 2018. A learned latent model of an environment, used to plan inside. MCL is the same architecture with the model written by hand and the state kept honest, and the comparison is exactly what today is for.
  386. Day 386 (AI): On the State of the Art of Evaluation in Neural Language Models — Melis, Dyer, Blunsom, 2018. A careful re-evaluation in which the old baseline, properly tuned, wins. Read it while you are writing the sentence where your engine loses, and make that sentence as precise as theirs.
  387. Day 387 (AI): Are GANs Created Equal? A Large-Scale Study — Lucic et al., 2018. Give every method the same compute budget for tuning and most of the reported differences disappear. Write your comparison section after reading it, and state the budget you gave vLLM.
  388. Day 388 (systems): Almost-linear time decoding algorithm for topological codes — Delfosse, Nickerson, 2021. Union-find as a decoder: a data structure chosen for its complexity class and then defended on accuracy. Today's chapter is closure capture, which is also a lifetime problem solved by choosing the right structure.
  389. Day 389 (systems): Sparse Blossom: correcting a million errors per core second with minimum-weight matching — Higgott, Gidney, 2023. A decoder benchmarked in errors per core second against every alternative, with the cases where it loses stated in the abstract. That is the shape of the document you are writing today.
  390. Day 390 (systems): Noisy intermediate-scale quantum (NISQ) algorithms — Bharti et al., 2022. The survey of everything people have tried to run on the machines that exist. Read it as a map of a field before you enter it in the autumn, and note how many entries end in "no advantage demonstrated".
  391. Day 391 (AI): Learning to Simulate Complex Physics with Graph Networks — Sanchez-Gonzalez et al., 2020. A graph whose edges are physical relations, solved by message passing rather than by an equation. A pose graph is the same object with a known energy, and today is the day to say which one you would rather debug.
  392. Day 392 (systems): SpecInfer: Accelerating Large Language Model Serving with Tree-based Speculative Inference and Verification — Miao et al., 2024. Speculation as a tree verified in one pass, which generalises the chain you measured in July. Read it now that you know your acceptance rate, and compute what it would have to be for the tree to pay.
  393. Day 393 (systems): Fault Tolerant Quantum Computation with Constant Error — Aharonov, Ben-Or, 1997. A threshold theorem: not "it works if conditions are favourable" but a stated number below which it works and above which it does not. Write your limitations section in that register today.
  394. Day 394 (AI): Neural Ordinary Differential Equations — Chen, Rubanova, Bettencourt, Duvenaud, 2018. A model whose forward pass is a solver call, with the gradient obtained by solving a second equation backwards. The scientific-ML lane opens today and almost everything in it is a version of this move.
  395. Day 395 (systems): A Quantum Engineer's Guide to Superconducting Qubits — Krantz et al., 2019. A document written to be built on: it assumes competence and explains anyway, and every design choice has its consequence stated. Read it today as a model for the document you are writing, not for the physics.
  396. Day 396 (systems): Universal Quantum Computation with ideal Clifford gates and noisy ancillas — Bravyi, Kitaev, 2005. Magic-state distillation: the expensive part of fault tolerance isolated into one resource you can count. Read it as the paper that turns "how much does a quantum computer cost" into an arithmetic problem.
  397. Day 397 (AI): Machine learning accelerated computational fluid dynamics — Kochkov, Smith, Alieva, Wang, Brenner, Hoyer, 2021. A learned correction placed inside a solver that is kept, rather than a network asked to replace it. DMD is the linear version of the same bargain, and today is the day to say what each one buys.
  398. Day 398 (systems): Quantum Error Correction for Quantum Memories — Terhal, 2015. A whole review organised around failure: what goes wrong, at what rate, and what has to be true for correction to keep up. Read it while writing your own failure-mode section, because it is the same discipline applied to a harder object.
  399. Day 399 (AI): Discovering governing equations from data: Sparse identification of nonlinear dynamical systems — Brunton, Proctor, Kutz, 2016. Sparse regression over a library of candidate terms, recovering the equation instead of a black box. Read it before you run it, and pay attention to how badly it degrades with noise.
  400. Day 400 (AI): Physics Informed Deep Learning (Part I): Data-driven Solutions of Nonlinear Partial Differential Equations — Raissi, Perdikaris, Karniadakis, 2017. The original PINN paper, before the review that assesses it. Read it today so that the next two days of chapters read as a critique of something you already know rather than as a summary.
  401. Day 401 (systems): SEDA: An Architecture for Well-Conditioned, Scalable Internet Services — Welsh, Culler, Brewer, 2001. Bounded queues between stages, with load shedding as an explicit stage-local decision. The point is that a system without backpressure does not degrade, it collapses — which you can now demonstrate on your own engine.
  402. Day 402 (systems): Quantum computing and the entanglement frontier — Preskill, 2012. The argument for why quantum computation is interesting even before it is useful, written six years before NISQ. Read it as the framing document for the whole autumn.
  403. Day 403 (AI): Characterizing possible failure modes in physics-informed neural networks — Krishnapriyan, Gholami, Zhe, Kirby, Mahoney, 2021. PINNs failing on problems that are easy for a classical solver, with the loss landscape shown rather than blamed. Read it today, while your own is failing, and check which of its named failure modes yours is.
  404. Day 404 (AI): Understanding and mitigating gradient pathologies in physics-informed neural networks — Wang, Teng, Perdikaris, 2020. The diagnosis for yesterday: the residual and boundary terms have gradients of wildly different scale, and the fix is an adaptive weighting rather than a bigger network. Try it today, and if it does not work say so.
  405. Day 405 (AI): Fourier Neural Operator for Parametric Partial Differential Equations — Li et al., 2021. A learned operator that is resolution-independent because it works in the frequency domain. Read it against the PINN you have just failed to train, and note that it changes the problem rather than the optimizer.
  406. Day 406 (systems): Solving the Quantum Many-Body Problem with Artificial Neural Networks — Carleo, Troyer, 2017. A neural network used as a variational wavefunction — a function of exponentially many configurations, represented by a small number of parameters. This is the hinge between the two lanes of the whole plan, and it lands on the day you are using a network as a function-space object.
  407. Day 407 (systems): LayerSkip: Enabling Early Exit Inference and Self-Speculative Decoding — Elhoushi et al., 2024. Degrading the computation instead of the queue: exit early and verify with the remaining layers. The other lever available under overload, and the one your admission control cannot reach.
  408. Day 408 (systems): How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits — Gidney, Ekerå, 2021. The most careful resource estimate in the field, and the clearest demonstration that the interesting question is engineering rather than asymptotics. Read the assumptions table more carefully than the headline.
  409. Day 409 (systems): Assessing requirements to scale to practical quantum advantage — Beverland et al., 2022. A resource estimate written so that it can be argued with: every assumption exposed and every number traceable. Read it the day somebody argues with yours, and note that the arguable version is the useful one.
  410. Day 410 (AI): Fast ε-free Inference of Simulation Models with Bayesian Conditional Density Estimation — Papamakarios, Murray, 2016. Replacing rejection-based inference with a density estimator that learns the posterior directly. Read it against ABC, which is today's chapter, and note how much sample efficiency the change buys.
  411. Day 411 (AI): Automatic Posterior Transformation for Likelihood-Free Inference — Greenberg, Nonnenmacher, Macke, 2019. Sequential neural posterior estimation done without the importance-weighting correction that made the earlier versions fragile. This is the method you are implementing today; read the failure it fixes.
  412. Day 412 (systems): Dissecting Tensor Cores via Microbenchmarks: Latency, Throughput and Numeric Behaviors — Sun et al., 2023. The tensor-core path measured rather than documented, including the numeric behaviour nobody writes down. When your GEMM is 20% off cuBLAS today, this is the paper that tells you which number to go and measure.
  413. Day 413 (systems): Quantum Approximate Optimization of Non-Planar Graph Problems on a Planar Superconducting Processor — Harrigan et al., 2021. A hardware experiment reported with the device calibration, the exact circuits and a result that does not beat the classical baseline. That combination — full disclosure plus an unflattering number — is what makes a negative result usable.
  414. Day 414 (systems): Suppressing quantum errors by scaling a surface code logical qubit — Google Quantum AI, 2023. The first experiment where making the code bigger made the logical error smaller, by a small and hard-won margin. Read it for the measurement methodology, which is the part a systems person can actually evaluate.
  415. Day 415 (systems): Neural-network quantum state tomography — Torlai et al., 2018. Density estimation over measurement outcomes, used to reconstruct a quantum state. The machinery is the one you are training today, pointed at a physical system — which is the second half of the hinge you read on day 406.
  416. Day 416 (systems): Quantum advantage with shallow circuits — Bravyi, Gosset, König, 2018. Depth as the resource, and an unconditional separation at constant depth. Today you are shortening a critical path in a scheduler; this is the same quantity treated as the object of a theorem.
  417. Day 417 (AI): GraphCast: Learning skillful medium-range global weather forecasting — Lam et al., 2023. A learned model evaluated against the operational numerical baseline on the baseline's own scorecard, at the baseline's own resolution. Read it while packaging yours, and copy the discipline of not choosing your own metric.
  418. Day 418 (systems): Machine learning phases of matter — Carrasquilla, Melko, 2017. A classifier trained on raw configurations recovering a phase boundary it was never told about. Read it on the last full week of the flagship, because the sentence your autumn applications need — that the AI work and the quantum work are one line of thought, not two — is the sentence this paper makes true.
  419. Day 419 (AI): Discovering Symbolic Models from Deep Learning with Inductive Biases — Cranmer et al., 2020. A fitted model turned into a statement you can write down and argue with. The right last paper of the summer: the work is not finished when it runs, it is finished when it can be stated.
  420. Day 420 (systems): Quantum error correction below the surface code threshold — Google Quantum AI, 2024. Below threshold, measured, with a real-time decoder in the loop. Read it as the last day of the ML-systems flagship and the first day of the quantum lane: the decoder is a latency-bound systems problem, and that is the door you walk through in the autumn.
  421. Day 421 (systems): Simulating Physics with Computers — Feynman, 1982. The keynote that starts the field, and it starts it with a complaint about simulation cost — which is the thing you are about to measure for yourself. Read the part where he argues nature is not classical before you write a single amplitude.
  422. Day 422 (systems): Ten simple rules for structuring papers — Mensh, Kording, 2017. One central claim, and every sentence in service of it. A résumé is the same problem compressed to a page, and today is the day to apply the rule rather than admire it.
  423. Day 423 (systems): AlpaServe: Statistical Multiplexing with Model Parallelism for Deep Learning Serving — Li et al., 2023. A paper whose result is a distribution rather than a mean — latency attainment under bursty load, not an average. Read it the day you stop quoting one number for the flagship.
  424. Day 424 (systems): Quantum theory, the Church-Turing principle and the universal quantum computer — Deutsch, 1985. You read this in the spring as a definition. Re-read §2 and §3 today with a simulator open: every claim about the universal quantum computer is now a claim about a loop you have written.
  425. Day 425 (systems): A single quantum cannot be cloned — Wootters, Zurek, 1982. Half a page, and it removes an entire class of things you might otherwise have tried to implement today. Read it beside N&C's qubit-copying circuit and see that they are the same argument.
  426. Day 426 (systems): Toward the first quantum simulation with quantum speedup — Childs, Maslov, Nam, Ross, Su, 2018. Gate counts for a simulation that would actually beat a classical machine, counted rather than estimated. An unhurried hour, and the numbers are the honest frame for everything else this term.
  427. Day 427 (systems): Repeatability in Computer Systems Research — Collberg, Proebsting, 2016. They tried to build the code from 601 papers. The numbers are grim and they are the reason "it runs from a clean clone" is a claim worth making. You are about to make it twelve times.
  428. Day 428 (systems): A Berkeley View of Systems Challenges for AI — Stoica et al., 2017. A whole department writing down the systems problems it thinks matter for the next decade. Read it in the week you are writing to departments, and mark which of the nine are now solved and which are not.
  429. Day 429 (systems): Software Engineering at Google — Henderson, 2017. What engineering practice looks like when the codebase outlives everyone who wrote it. Read the build and testing sections today, and steal exactly the parts that a one-person repository can carry.
  430. Day 430 (systems): Reproducible Research in Computational Science — Peng, 2011. The reproducibility spectrum, from a published figure to a runnable pipeline. Everything you write in the physics lane this term is computational science; decide today where on that spectrum your notes sit.
  431. Day 431 (AI): An Empirical Model of Large-Batch Training — McCandlish, Kaplan, Amodei et al., 2018. How many samples an estimate needs before it stops improving, derived from the gradient noise scale. You implement sampling today; this is the same question asked in the lane you already know well.
  432. Day 432 (systems): The Values Encoded in Machine Learning Research — Birhane, Kalluri, Card, Agnew, Dotan, Bao, 2021. What a field says it values, extracted from a hundred papers by annotation rather than by assertion. Read it in the week you are writing about what you value, in twelve letters.
  433. Day 433 (systems): Software Engineering for Machine Learning: A Case Study — Amershi et al., 2019. Nine stages of an ML workflow, observed inside a company rather than proposed. The stage teams under-invest in is the one you are automating today.
  434. Day 434 (systems): The Llama 3 Herd of Models — Grattafiori et al., 2024. An enormous engineering report that still says what was done and what was measured. Read the first twenty pages as a lesson in altitude: how to describe a system without either hiding it or drowning the reader.
  435. Day 435 (systems): Improved Simulation of Stabilizer Circuits — Aaronson, Gottesman, 2004. A second reading, and a different one: you met it in the summer as a curiosity, and today it is the counterexample to the memory wall you are three days from measuring. Read the tableau update rule properly this time.
  436. Day 436 (systems): A Step Toward Quantifying Independently Reproducible Machine Learning Research — Raff, 2019. Which features of a paper predict whether someone else can reimplement it — and code availability is not the strongest one. Your pinned repositories are the claim; this says what makes such a claim survive contact.
  437. Day 437 (systems): ZeRO-Infinity: Breaking the GPU Memory Wall for Extreme Scale Deep Learning — Rajbhandari, Ruwase, Rasley, Smith, He, 2021. The classical memory wall, partitioned and offloaded, with the bandwidth arithmetic stated. You measure your own wall tomorrow; read the shape of the argument today, in units you already understand.
  438. Day 438 (systems): On the Criteria To Be Used in Decomposing Systems into Modules — Parnas, 1972. Modules hide decisions, not steps. Your simulator is at the size where the wrong split becomes expensive; read this before the amplitude layout leaks into every file.
  439. Day 439 (systems): 0.5 Petabyte Simulation of a 45-Qubit Quantum Circuit — Häner, Steiger, 2017. What it takes to push a statevector simulator to 45 qubits: half a petabyte, a supercomputer, and a lot of scheduling. Read it as the upper end of the table you are writing today.
  440. Day 440 (systems): On the Einstein Podolsky Rosen Paradox — Bell, 1964. Six pages that turn a philosophical objection into an experiment. Read it beside N&C §2.6 and then compute the CHSH value yourself rather than quoting 2√2.
  441. Day 441 (systems): The Complexity of Theorem-Proving Procedures — Cook, 1971. Boolean satisfiability as the problem everything else reduces to, from the author's own page. Read it the day you compile boolean logic into gates by hand, and beside N&C §3.2, which is about where BQP sits in the picture this paper drew.
  442. Day 442 (systems): Sparse GPU Kernels for Deep Learning — Gale, Zaharia, Young, Elsen, 2020. Why a theoretically cheaper kernel is often slower, and what has to be true for the saving to arrive. Exactly the argument you are about to have with yourself about gate fusion.
  443. Day 443 (systems): The Scientific Method in the Science of Machine Learning — Forde, Paganini, 2019. Short, and it asks what a controlled experiment would even look like in this field. Read it in the physics lane, where the answers are known and you can check whether your method would have found them.
  444. Day 444 (systems): Quantum supremacy using a programmable superconducting processor — Arute et al., 2019. A re-read, as an experiment rather than as news. Ask what was measured, what was extrapolated, and where the 10,000-year figure comes from — then read the next two days. It is on Nature rather than arXiv, which a browser handles and a script does not always.
  445. Day 445 (AI): Challenges in Deploying Machine Learning: a Survey of Case Studies — Paleyes, Urma, Lawrence, 2020. The failure modes teams have actually lived through, organised by stage. Naming one you hit yourself is what makes a letter specific rather than enthusiastic.
  446. Day 446 (systems): QuEST and High Performance Simulation of Quantum Computers — Jones, Brown, Bush, Benjamin, 2019. A production statevector simulator with its threading, distribution and memory decisions written down. Read the sections on data layout the day you reorder your own loop.
  447. Day 447 (systems): MegaBlocks: Efficient Sparse Training with Mixture-of-Experts — Gale, Narayanan, Young, Zaharia, 2022. A block-sparse primitive that removes a padding hack rather than optimising around it. Read it as an argument about picking the right primitive — the question your simulator faces every time a gate is not one of the special cases.
  448. Day 448 (systems): Efficient Large-Scale Language Model Training on GPU Clusters Using Megatron-LM — Narayanan et al., 2021. Three kinds of parallelism composed, with the scaling measured on three thousand GPUs. Two of the four teams you write to today work at this scale; this is the vocabulary the reply will be in.
  449. Day 449 (systems): Elementary gates for quantum computation — Barenco et al., 1995. The paper that proves CNOT plus single-qubit gates is enough, and then does the constructions explicitly. Every decomposition you will write for the next two years is in here somewhere.
  450. Day 450 (systems): Leveraging Secondary Storage to Simulate Deep 54-qubit Sycamore Circuits — Pednault et al., 2019. The rebuttal that turned 10,000 years into 2.5 days by using disk. Read it against your own memory table — this is what the wall looks like when someone refuses to accept it.
  451. Day 451 (systems): Machine Learning Operations (MLOps): Overview, Definition, and Architecture — Kreuzberger, Kühl, Hirschl, 2023. What has to exist before a model is runnable by someone who did not build it, written as roles and artifacts rather than as tools. Somebody else runs your repository today; this is the vocabulary for what they will find missing.
  452. Day 452 (systems): Simulated Quantum Computation of Molecular Energies — Aspuru-Guzik, Dutoi, Love, Head-Gordon, 2005. Phase estimation pointed at a molecular Hamiltonian — the application Feynman was asking for on day 421. Read it as the target that makes the next three weeks of the track worth doing.
  453. Day 453 (systems): Quantum Algorithms Revisited — Cleve, Ekert, Macchiavello, Mosca, 1998. Deutsch, Deutsch-Jozsa, Simon and Shor presented as one construction — a phase kickback and a Fourier transform. Read this once and four algorithms stop being four things.
  454. Day 454 (AI): On the Opportunities and Risks of Foundation Models — Bommasani et al., 2021. Long, uneven, and read by everyone you are about to ask for a referral. Pick the two sections nearest your work and be able to say which claim in them you think is wrong.
  455. Day 455 (systems): Quantum measurements and the Abelian Stabilizer Problem — Kitaev, 1995. Where phase estimation comes from, framed as a stabilizer problem rather than as a subroutine. Read it beside N&C §5.2 and notice that the book has simplified a more general result.
  456. Day 456 (systems): Solving the sampling problem of the Sycamore quantum circuits — Pan, Chen, Zhang, 2022. Tensor networks close the gap almost entirely. Write the three-line history of this claim in your card; it is the most useful thing you can say about quantum advantage in an interview.
  457. Day 457 (systems): A fast quantum mechanical algorithm for database search — Grover, 1996. You read the four pages in the spring. Re-read them today as a specification: every claim in it is something your implementation either reproduces or does not, and the iteration count is checkable within the hour.
  458. Day 458 (systems): Tight bounds on quantum searching — Boyer, Brassard, Høyer, Tapp, 1996. The exact analysis of Grover with multiple marked items, including the over-rotation you will measure in a few days. Read it beside N&C §6.2 and check its formula against your own simulator.
  459. Day 459 (AI): Pervasive Label Errors in Test Sets Destabilize Machine Learning Benchmarks — Northcutt, Athalye, Mueller, 2021. The benchmark you cited in four applications this month has errors in it, and the ordering of models changes when they are removed. Know the number before someone asks.
  460. Day 460 (systems): Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer — Shor, 1997. Re-read on the day you implement period-finding, which is a different reading from the first one. Notice how much of the paper is classical number theory, and that the part you are building today is the smaller half.
  461. Day 461 (systems): How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits — Gidney, Ekerå, 2021. A second reading, prompted by the day: you factored 15 yesterday, and this is the resource estimate for 2048 bits. Put the two numbers next to each other and write the ratio down.
  462. Day 462 (systems): Data and its (dis)contents: A survey of dataset development and use in machine learning research — Paullada, Raji, Bender, Denton, Hanna, 2021. Where the data underneath the field came from, and what was not asked when it was collected. An unhurried hour, and a useful check on how confidently you have been citing benchmarks in twelve letters.
  463. Day 463 (systems): On the Power of Quantum Computation — Simon, 1997. The oracle separation that pushed Shor toward period-finding. Read it as the first place the hidden-subgroup shape appears, then look at N&C §5.4 and see that it is the same problem over a different group.
  464. Day 464 (systems): Quantum Complexity Theory — Bernstein, Vazirani, 1997. The universal quantum Turing machine done properly, and the recursive Fourier sampling separation. Long; read the first third today and the oracle sections when you implement the algorithm in two days.
  465. Day 465 (systems): TensorFlow: A system for large-scale machine learning — Abadi et al., 2016. A systems paper about an ML system, which is the genre your one-pagers are trying to be. Read it for the structure — problem, design, alternatives rejected, measurement — and copy the structure, not the content.
  466. Day 466 (systems): Rapid solution of problems by quantum computation — Deutsch, Jozsa, 1992. The first exponential separation, in six pages, and the one everyone learns first. It is a scan of the Proceedings on a Princeton course archive rather than an arXiv posting.
  467. Day 467 (systems): FlexGen: High-Throughput Generative Inference of Large Language Models with a Single GPU — Sheng et al., 2023. What to do when the state does not fit: schedule it across the memory hierarchy and pay in bandwidth. You are about to square your memory cost by moving to density matrices; read the classical version of the same decision first.
  468. Day 468 (systems): Quantum algorithm for solving linear systems of equations — Harrow, Hassidim, Lloyd, 2009. Exponential speedup for Ax = b, subject to four conditions that are easy to skip. Read it today and list the conditions before you read tomorrow's paper.
  469. Day 469 (AI): PyTorch: An Imperative Style, High-Performance Deep Learning Library — Paszke et al., 2019. The design decisions behind the autograd you are going to hang parameter-shift gradients on in three weeks. Read the sections on the tape and on memory management against what tensorforge does.
  470. Day 470 (AI): What is the State of Neural Network Pruning? — Blalock, Gonzalez Ortiz, Frankle, Guttag, 2020. A meta-analysis of 81 papers that finds almost none of them can be compared to each other, because none of them stated their conditions precisely enough. That is what a missing limitations section costs a field; write yours today so your work is not the eighty-second.
  471. Day 471 (systems): Deja Vu: Contextual Sparsity for Efficient LLMs at Inference Time — Liu et al., 2023. Error introduced deliberately — heads and neurons dropped per input — and then bounded by measurement. Today you introduce error you did not choose, and the accounting discipline is identical.
  472. Day 472 (systems): Many-body quantum state tomography with neural networks — Torlai, Mazzola, Carrasquilla, Troyer, Melko, Carleo, 2017. A neural network reconstructing a quantum state from measurements. This is one of the papers where the two pillars stop being two things; read it on the day the physics lane reaches spin.
  473. Day 473 (systems): Carbon Emissions and Large Neural Network Training — Patterson et al., 2021. An accounting paper: every term named, nothing left in an unlabelled remainder. That is exactly the property you are turning into a unit test today, in a different ledger.
  474. Day 474 (systems): Quantum Machine Learning Algorithms: Read the Fine Print — Aaronson, 2015. Four pages that take yesterday's paper apart caveat by caveat. Compare against your own list from yesterday and count how many you found.
  475. Day 475 (systems): Quantum Error Correction for Beginners — Devitt, Munro, Nemoto, 2013. The one review that starts from the three-qubit code and builds up without assuming the stabilizer formalism first. Read the first third today; the rest belongs to a later term.
  476. Day 476 (AI): Measuring the Effects of Data Parallelism on Neural Network Training — Shallue et al., 2019. An enormous, patient sweep whose result is a curve with a knee in it. That is exactly the measurement you are making today — how many trajectories buy how much agreement — and this is what doing it properly looks like.
  477. Day 477 (systems): Ring Attention with Blockwise Transformers for Near-Infinite Context — Liu, Zaharia, Abbeel, 2023. The memory argument extended across devices, so the sequence length stops being bounded by one of them. Two of the four teams you write to today maintain something built on it.
  478. Day 478 (systems): A Quantum Engineer's Guide to Superconducting Qubits — Krantz et al., 2019. Re-read the relaxation and dephasing sections specifically. You read the guide in the summer for orientation; today it is a reference, and you are fitting the exact number it names out of your own simulated data.
  479. Day 479 (systems): The Heisenberg Representation of Quantum Computers — Gottesman, 1998. Track the operators instead of the state. That is the same move you are making today when you evaluate a Pauli string without materialising it — read the paper that makes it a formalism rather than a trick.
  480. Day 480 (systems): Efficient classical simulation of slightly entangled quantum computations — Vidal, 2003. Entanglement, not qubit count, is what makes a circuit hard classically. Four pages, and it reframes the memory table you measured on day 439 as a statement about the wrong variable.
  481. Day 481 (systems): Deep Learning Recommendation Model for Personalization and Recommendation Systems — Naumov et al., 2019. A model whose cost is memory access rather than arithmetic, published openly with its layout. The lesson transfers: today you replace a 4x4 matrix with three numbers and an offset, and the representation is the whole performance story.
  482. Day 482 (systems): Pathways: Asynchronous Distributed Dataflow for ML — Barham et al., 2022. A report about a scheduler, written for people who did not build it. Read the first four sections for the order they put things in, then write yours in that order.
  483. Day 483 (systems): Quantum Circuit Learning — Mitarai, Negoro, Kitagawa, Fujii, 2018. The paper that turns a parameterised circuit into a model you can fit, with the gradient rule stated. Read it the day you add the interface, before you implement the gradient.
  484. Day 484 (systems): Randomized Benchmarking of Quantum Gates — Knill et al., 2008. How to measure an error rate without trusting your measurement apparatus, by making the sequence length the variable. Implement it today against noise you chose, where you already know the answer.
  485. Day 485 (systems): Evaluating analytic gradients on quantum hardware — Schuld, Bergholm, Gogolin, Izaac, Killoran, 2019. The parameter-shift rule derived properly, including why it is exact rather than a finite difference. Read it the morning you implement it, and check the shift value against your own derivation.
  486. Day 486 (systems): Improved classical simulation of quantum circuits dominated by Clifford gates — Bravyi, Gosset, 2016. The runtime cliff is in the T-count, not the qubit count. Read it beside yesterday's paper: two different answers to what actually makes a circuit expensive.
  487. Day 487 (systems): Prescription for experimental determination of the dynamics of a quantum black box — Chuang, Nielsen, 1997. Process tomography, from the paper N&C §8.4.2 compresses into four pages. Implement it today against a channel you injected, which is the only setting where you can check the answer.
  488. Day 488 (systems): Closing the AI Accountability Gap: Defining an End-to-End Framework for Internal Algorithmic Auditing — Raji et al., 2020. An audit framework meant to be run by the people who built the thing. Run the parts that apply to your own report today, before anyone else has a reason to.
  489. Day 489 (systems): A variational eigenvalue solver on a quantum processor — Peruzzo et al., 2014. A re-read with a different question. First time it was the idea; today it is the design of the interface you built on day 483, and whether your optimizer choice matches the one they had to make.
  490. Day 490 (systems): The Physical Implementation of Quantum Computation — DiVincenzo, 2000. The five criteria, stated once and quoted ever since. Read them today and keep the list — you will score every platform in chapter 7 against it, ending on day 503.
  491. Day 491 (systems): Charge insensitive qubit design derived from the Cooper pair box — Koch et al., 2007. The transmon: buy charge-noise insensitivity and pay in anharmonicity. That trade is exactly the leakage you are about to measure, in the device that most of the industry actually uses.
  492. Day 492 (systems): Classical simulation of quantum computation, the Gottesman-Knill theorem, and slightly beyond — Van den Nest, 2010. What "classically simulable" even means — sampling, computing an amplitude, computing a marginal are three different claims. Write the three definitions in your card; most arguments about quantum advantage are people using different ones.
  493. Day 493 (systems): Barren plateaus in quantum neural network training landscapes — McClean, Boixo, Smelyanskiy, Babbush, Neven, 2018. Re-read it in order to reproduce it. The plot in this paper is the plot you are producing today, and a citation is not the same as a measurement.
  494. Day 494 (systems): The Computational Complexity of Linear Optics — Aaronson, Arkhipov, 2011. BosonSampling: a hardness argument for a machine that cannot even run a general algorithm. Read it against N&C §7.4's honest list of why the optical computer does not scale.
  495. Day 495 (AI): Mamba: Linear-Time Sequence Modeling with Selective State Spaces — Gu, Dao, 2023. A recurrence chosen for what the hardware can do with it, with the scan written to fit the memory hierarchy. Be able to derive at a whiteboard why the selective mechanism costs what it does — that is the level the interview will run at.
  496. Day 496 (systems): Quantum computing with Qiskit — Javadi-Abhari et al., 2024. The architecture of the stack you are benchmarking against, written by the people who maintain it. Read the simulator and transpiler sections so the comparison is fair and you can say where they made a different choice.
  497. Day 497 (systems): Simulating quantum computation by contracting tensor networks — Markov, Shi, 2008. Treewidth, not qubit count, is the cost — the result the 2022 Sycamore rebuttal you read on day 456 rests on. Implement enough of it today to see the crossover for yourself.
  498. Day 498 (systems): Towards ML Engineering: A Brief History Of TensorFlow Extended (TFX) — Katsiapis et al., 2020. A history rather than a method: what a production ML platform learned over a decade, told as a sequence of mistakes. Finals week is the right time to read something that is mostly other people's hindsight.
  499. Day 499 (systems): The Computational Limits of Deep Learning — Thompson, Greenewald, Lee, Manso, 2020. The extrapolation that says the field is running out of the resource it grew on. Have a view on it: some version of "where do you think this goes" is coming in an interview this month.
  500. Day 500 (systems): Qulacs: a fast and versatile quantum circuit simulator for research purpose — Suzuki et al., 2021. A simulator whose paper is mostly about optimisation decisions — SIMD, caching, threading thresholds. Read it while profiling yours, and check each of their claims against your own numbers.
  501. Day 501 (systems): Predicting Many Properties of a Quantum System from Very Few Measurements — Huang, Kueng, Preskill, 2020. Classical shadows: randomised measurements that predict many observables at once, with a sample-complexity bound. Read it and then beat your own direct estimator with it.
  502. Day 502 (systems): Stim: a fast stabilizer circuit simulator — Gidney, 2021. A tool released well: a paper, a benchmark, a stated scope and a version people can pin. That is the standard for what you are tagging today, and the tool itself is what a later term will benchmark against.
  503. Day 503 (systems): Variational Quantum Algorithms — Cerezo et al., 2021. A closing re-read. You met it in the summer as a survey; read the open-problems section now that six of your track steps are inside it, and pick the one you would work on. That choice is what the winter term is for.
  504. Day 504 (AI): Deep Learning Scaling is Predictable, Empirically — Hestness et al., 2017. Power-law learning curves measured across four domains, years before the scaling-law papers everyone cites. A good last read for a term spent insisting that things be measured rather than asserted.
  505. Day 505 (systems): Stabilizer Codes and Quantum Error Correction — Gottesman, 1997. The source. Read chapters 3 and 4 today for the formalism only — a state named by the operators that fix it — and leave the code constructions for the spring. Everything stab does for the next month is in those two chapters.
  506. Day 506 (systems): Terminologies for Reproducible Research — Barba, 2018. Reproducible, replicable and repeatable mean different and incompatible things depending on who is writing. Pick the definitions you will use in the appendix today, and say in the appendix which ones you picked.
  507. Day 507 (systems): The Clifford group, stabilizer states, and linear and quadratic operations over GF(2) — Dehaene, De Moor, 2003. The stabilizer formalism written as linear algebra over the two-element field, which is exactly the data structure you are implementing today. Read it and the tableau row operations stop being rules you copied and become the group action they are.
  508. Day 508 (systems): Scientific Credibility of Machine Translation Research: A Meta-Evaluation of 769 Papers — Marie, Fujita, Rubino, 2021. Seven hundred papers scored against basic evaluation practice, and the trend over a decade is downward. Read it as a list of the specific omissions an appendix exists to prevent, then check your own against it.
  509. Day 509 (systems): Fast simulation of stabilizer circuits using a graph state representation — Anders, Briegel, 2005. A different representation of the same states — a graph plus local Cliffords — with measurement handled by local complementation rather than a rank update. Read it as the alternative you did not choose, so that you can say why the tableau is the right choice for you.
  510. Day 510 (systems): Fast simulation of planar Clifford circuits — Gosset, Grier, Kerzner, Schaeffer, 2020. Clifford circuits on a planar geometry simulate faster than the general case, because the geometry itself is structure. A catch-up day is the right amount of time for a result whose proof you will not follow on a Tuesday.
  511. Day 511 (systems): On the Difficulty of Evaluating Baselines: A Study on Recommender Systems — Rendle, Zhang, Koren, 2019. Properly tuned, a decade-old baseline beats most of what replaced it. Read it while writing the reject review of your own paper, because "the baseline was undertuned" is the objection you are least equipped to answer and most likely to receive.
  512. Day 512 (systems): A simple formula for the average gate fidelity of a quantum dynamical operation — Nielsen, 2002. Three pages, one formula, and it is the formula every benchmarking result you will read for the next month reports. Derive it rather than quoting it — you need the relation between average fidelity and process fidelity for the randomised benchmarking work later this month.
  513. Day 513 (systems): With Little Power Comes Great Responsibility — Card et al., 2020. Statistical power in experiments that report a one-point improvement. Before you stand up and claim a difference, compute the power your sample size actually gives you — the answer is often that the experiment could not have detected the effect it reports.
  514. Day 514 (systems): On the role of entanglement in quantum computational speed-up — Jozsa, Linden, 2002. Entanglement is necessary for exponential speed-up in pure-state computation, and it is not sufficient. Read it on the day you run a thousand entangled qubits in polynomial time, because that experiment is the cleanest possible counterexample to the folk claim.
  515. Day 515 (systems): Multilinear Formulas and Skepticism of Quantum Computing — Aaronson, 2003. The strongest technical form of the skeptical position: if nature has a succinct classical description of every state, quantum computing fails, and here is what that description would have to look like. Read the case against on the day you commit to the field in writing.
  516. Day 516 (systems): The garden of forking paths: Why multiple comparisons can be a problem, even when there is no "fishing expedition" — Gelman, Loken, 2013. You do not need to have p-hacked to have a result that is an artefact of the analysis you happened to choose. This is the paper to read the week after you submit, when it is too late to change anything and exactly the right time to know.
  517. Day 517 (systems): Estimating outcome probabilities of quantum circuits using quasiprobabilities — Pashayan, Wallman, Bartlett, 2015. Simulation cost scaling with the negativity of a quasiprobability representation — a third currency alongside T-count and entanglement. Read it as the general frame that the Pauli frame you build today is a special case of.
  518. Day 518 (AI): How Many Random Seeds? Statistical Power Analysis in Deep Reinforcement Learning Experiments — Colas, Sigaud, Oudeyer, 2018. The number of seeds required to detect an effect of a given size, computed rather than guessed. The design you write today has a metrics section, and this is the arithmetic it will be missing.
  519. Day 519 (systems): Scalable Noise Estimation with Random Unitary Operators — Emerson, Alicki, Życzkowski, 2005. The idea before it had a name: twirl the noise with random unitaries and what is left is a single depolarizing parameter you can fit. Everything called randomised benchmarking descends from this.
  520. Day 520 (systems): How to efficiently select an arbitrary Clifford group element — Koenig, Smolin, 2014. A canonical form for Clifford elements and an index into the group, so uniform sampling is a random integer rather than a random product of gates. Implement from this paper today; the naive alternative is not uniform and you will not notice.
  521. Day 521 (systems): Robust randomized benchmarking of quantum processes — Magesan, Gambetta, Emerson, 2011. The fit model with the state-preparation and measurement errors separated out into the prefactor. Fit the wrong model and you get a plausible number that is not the gate error; this paper is why the fit has three parameters and not one.
  522. Day 522 (systems): Characterizing Quantum Gates via Randomized Benchmarking — Magesan, Gambetta, Emerson, 2012. The long version: gate-dependent errors, the interleaved protocol, and the bounds that make the interleaved number honest. Read it slowly; it is the paper that makes yesterday's fit defensible.
  523. Day 523 (systems): What randomized benchmarking actually measures — Proctor, Rudinger, Young, Sarovar, Blume-Kohout, 2017. The RB number is not the average gate infidelity in general, and the gap can be an order of magnitude. Read this the day after you got a clean fit, because a clean fit is exactly when you stop checking.
  524. Day 524 (AI): Deep Reinforcement Learning at the Edge of the Statistical Precipice — Agarwal, Schwarzer, Castro, Courville, Bellemare, 2021. Point estimates over a handful of runs, and the interval estimates that should replace them. The stratified bootstrap they propose is what your simulator comparison should report today instead of a mean.
  525. Day 525 (systems): Error mitigation for short-depth quantum circuits — Temme, Bravyi, Gambetta, 2016. Zero-noise extrapolation and probabilistic error cancellation: buying accuracy with sampling overhead rather than with qubits. Read it alongside twirling as the other thing a compiler can do about noise it cannot remove.
  526. Day 526 (AI): Reporting Score Distributions Makes a Difference: Performance Study of LSTM-networks for Sequence Tagging — Reimers, Gurevych, 2017. Report a distribution, not a maximum. The difference between two systems is routinely smaller than the spread of either one across seeds — and the maximum is the statistic that hides that.
  527. Day 527 (systems): Quantum Teleportation is a Universal Computational Primitive — Gottesman, Chuang, 1999. Gate teleportation: how a T gate becomes a Clifford circuit plus a prepared resource state and a correction. This is the mechanism behind magic-state injection, which stab implements in four days.
  528. Day 528 (systems): Inconsistency in Conference Peer Review: Revisiting the 2014 NeurIPS Experiment — Cortes, Lawrence, 2021. Half the accepted papers would have been rejected by a second committee, measured twice seven years apart. Read it on a catch-up day and let it calibrate how much signal a review actually carries.
  529. Day 529 (systems): Improved upper bounds on the stabilizer rank of magic states — Qassim, Pashayan, Gosset, 2021. How many stabilizer states it takes to write down a tensor product of magic states, which is the exponent in the cost of every non-Clifford gate you are about to charge for. The bound has come down over the years and the plot you draw next week moves with it.
  530. Day 530 (systems): Application of a resource theory for magic states to fault-tolerant quantum computing — Howard, Campbell, 2016. Magic as a quantity with a monotone attached, so you can say how much of it a state has and prove distillation cannot create it. This is what turns "T gates are expensive" into an accounting system.
  531. Day 531 (systems): The Resource Theory of Stabilizer Computation — Veitch, Mousavian, Gottesman, Emerson, 2013. Stabilizer operations as the free operations of a resource theory, with mana as the measure. Read it as the theoretical statement of the curve you are about to plot: what the free part is, and what you have to pay for.
  532. Day 532 (systems): Simulation of quantum circuits by low-rank stabilizer decompositions — Bravyi, Browne, Calpin, Campbell, Gosset, Howard, 2018. The best-known base for the exponential in T-count, and the algorithmic tricks that get it there. Put its exponent on your plot as a reference line and say honestly where yours sits relative to it.
  533. Day 533 (systems): The Ladder: A Reliable Leaderboard for Machine Learning Competitions — Blum, Hardt, 2015. Repeated querying of a holdout overfits it, and there is a mechanism that stops it. Read it before you build a personal leaderboard out of your own practice problems, because you are about to.
  534. Day 534 (systems): Fault-tolerant quantum computation by anyons — Kitaev, 1997. Error correction as a property of the medium rather than a procedure applied on top of it. It is a hard paper and a catch-up day is the only time you will give it the three uninterrupted hours it needs.
  535. Day 535 (systems): Hadamard-free circuits expose the structure of the Clifford group — Bravyi, Maslov, 2020. A canonical decomposition of Clifford circuits into a small number of layers, which is what a fast implementation exploits and a naive one does not. Read it before the benchmark so you can tell an algorithmic loss from an unvectorised loop.
  536. Day 536 (AI): Preserving Statistical Validity in Adaptive Data Analysis — Dwork, Feldman, Hardt, Pitassi, Reingold, Roth, 2015. The reusable holdout: how differential privacy buys you validity under adaptive reuse of the same test set. This is the formal version of yesterday's worry about your own practice leaderboard.
  537. Day 537 (systems): Complexity-Theoretic Foundations of Quantum Supremacy Experiments — Aaronson, Chen, 2016. What a sampling-based advantage claim would actually have to prove, and the conjectures it rests on. Read it as the standard your own "what this cannot represent" note should be held to.
  538. Day 538 (systems): Characterizing Quantum Supremacy in Near-Term Devices — Boixo et al., 2016. Where the cross-entropy benchmarking fidelity comes from and why the Porter-Thomas distribution makes it work. Implement the estimator today from this paper rather than from a blog post.
  539. Day 539 (systems): Average-case complexity versus approximate simulation of commuting quantum computations — Bremner, Montanaro, Shepherd, 2015. What a hardness claim for approximate sampling actually requires, stated as conjectures rather than assumed. Read it on the day you measure a real success probability and see how much of the theory it takes to justify one number.
  540. Day 540 (systems): Classical Simulation of Quantum Supremacy Circuits — Huang et al., 2020. The tensor-network contraction that first narrowed the gap, with the memory-time trade-off spelled out. Read it alongside the paper from day 539 as the two halves of the same argument.
  541. Day 541 (systems): Classical simulation of commuting quantum computations implies collapse of the polynomial hierarchy — Bremner, Jozsa, Shepherd, 2010. Commuting circuits are shallow, structured, and almost certainly hard to simulate exactly — and their amplitudes are partition functions, so the contraction you write today is the natural way to attack them. Theory and today's code meet on the same object.
  542. Day 542 (systems): Simulation of Qubit Quantum Circuits via Pauli Propagation — Rall, Liang, Cook, Kretschmer, 2019. Propagate Pauli operators rather than amplitudes and the cost tracks the sparsity of the observable, not the size of the state. A fourth efficient regime, orthogonal to the three you already have.
  543. Day 543 (systems): Classical simulation of noninteracting-fermion quantum circuits — Terhal, DiVincenzo, 2001. A third efficiently simulable class with no relation to the other two. Three papers in three days, three different reasons a quantum circuit can be classical — this is what "quantum advantage" has to survive.
  544. Day 544 (AI): Reproducibility of Benchmarked Deep Reinforcement Learning Tasks for Continuous Control — Islam, Henderson, Gomrokchi, Precup, 2017. Published baselines that do not reproduce from published hyperparameters. Read it on the day you pick a baseline to beat, because the number in the paper is not the number you will get and you need to know that before you build on it.
  545. Day 545 (systems): Efficient tensor network simulation of IBM's Eagle kicked Ising experiment — Tindall, Fishman, Stoudenmire, Sels, 2023. A hardware result reproduced classically on a laptop within weeks. Read it for the pattern — a claim, a cheaper classical method, and a revised claim — because this is the pattern your own benchmark section will be judged by.
  546. Day 546 (systems): Instantaneous Quantum Computation — Shepherd, Bremner, 2008. The IQP model: commuting gates, no adaptivity, and provably not universal — and still hard to simulate. A catch-up day is the right place for a model that exists to sharpen a question rather than to run anything.
  547. Day 547 (systems): Tackling the Qubit Mapping Problem for NISQ-Era Quantum Devices — Li, Ding, Xie, 2019. SABRE: the heuristic you will implement in eight days, and the reverse-traversal trick for the initial layout that is the part people skip. Read it now so the IR you design today can carry what the router will need.
  548. Day 548 (systems): Open Quantum Assembly Language — Cross, Bishop, Smolin, Gambetta, 2017. The grammar you are about to implement, with the design reasoning attached. Note what it deliberately does not represent — that omission is the reason OpenQASM 3 exists and you will read that tomorrow.
  549. Day 549 (systems): OpenQL : A Portable Quantum Programming Framework for Quantum Accelerators — Khammassi et al., 2020. A compiler framework with the intermediate representations named and the passes between them separated. Read the IR layering on the day you build the DAG, because the DAG is where your own layering stops being implicit.
  550. Day 550 (AI): Towards the Systematic Reporting of the Energy and Carbon Footprints of Machine Learning — Henderson, Hu, Romoff, Brunskill, 2020. A framework that turns a training run into an accounted cost. A design answer with no cost model is a wish, and today you are writing one with a budget in it — this is what a real budget looks like.
  551. Day 551 (systems): Qiskit Backend Specifications for OpenQASM and OpenPulse Experiments — McKay et al., 2018. The actual schema you are about to parse: coupling map, gate durations, per-edge error rates, and the calibration timestamp. Read it as a data format, and note which fields your router currently throws away.
  552. Day 552 (systems): Characterizing large-scale quantum computers via cycle benchmarking — Erhard et al., 2019. Benchmarking whole cycles of parallel gates rather than single gates in isolation, because crosstalk is the error that isolation hides. Read it on a catch-up day as the correction to a month of single-gate thinking.
  553. Day 553 (systems): Quantum Lower Bounds by Polynomials — Beals, Buhrman, Cleve, Mosca, de Wolf, 1998. The polynomial method, from the paper that introduced it, which is exactly the KLM section you are reading today. Work the degree argument for OR alongside the chapter and the technique stops being a name.
  554. Day 554 (systems): Mapping Quantum Circuits to IBM QX Architectures Using the Minimal Number of SWAP and H Operations — Wille, Burgholzer, Zulehner, 2019. An exact formulation of the mapping problem solved with a satisfiability solver, giving the true optimum on small circuits. That optimum is the yardstick your heuristic should be measured against, not another heuristic.
  555. Day 555 (systems): On the qubit routing problem — Cowtan, Dilkes, Duncan, Krajenbrink, Simmons, Sivarajah, 2019. The routing problem stated cleanly, with the solution decomposed into layout, routing and cleanup. Read it for the decomposition — it is what stops your router from becoming one function nobody can modify.
  556. Day 556 (AI): What Will it Take to Fix Benchmarking in Natural Language Understanding? — Bowman, Dahl, 2021. Four criteria a benchmark must satisfy to be worth optimizing against. Hold your own router benchmark suite up to all four today, while it is still cheap to change which circuits are in it.
  557. Day 557 (systems): t|ket>: A Retargetable Compiler for NISQ Devices — Sivarajah, Dilkes, Cowtan, Simmons, Edgington, Duncan, 2020. A production compiler's architecture: passes, predicates on what a pass requires and guarantees, and retargeting. The predicate system is the idea to steal — it is what makes a pass pipeline debuggable.
  558. Day 558 (systems): Compiling quantum circuits to realistic hardware architectures using temporal planners — Venturelli, Do, Rieffel, Frank, 2017. Qubit mapping expressed as a temporal planning problem and handed to an off-the-shelf planner. Read it as the reminder that your routing problem is an instance of something older, with fifty years of solvers behind it.
  559. Day 559 (systems): Circuit Transformations for Quantum Architectures — Childs, Schoute, Unsal, 2019. Routing analysed as token swapping on a graph, with bounds rather than benchmarks. Read it for what the theory says the SWAP count must be, so that your reverse pass has a floor to be measured against.
  560. Day 560 (AI): Dynabench: Rethinking Benchmarking in NLP — Kiela et al., 2021. A benchmark that moves when models catch up to it. Read it as the argument against your own fixed circuit suite, and decide deliberately whether to accept the argument or reject it in writing.
  561. Day 561 (systems): Synthesis of Quantum Logic Circuits — Shende, Bullock, Markov, 2004. The cosine-sine decomposition and the lower bound on CNOT count for a general two-qubit unitary. The bound is three; if your decomposer uses more, you now know it is not optimal and by how much.
  562. Day 562 (systems): Fast and efficient exact synthesis of single qubit unitaries generated by Clifford and T gates — Kliuchnikov, Maslov, Mosca, 2012. Exact synthesis over the ring of integers with a square root of two: an algebraic criterion for which unitaries are exactly representable, and an algorithm that finds the optimal sequence. Much better than Solovay-Kitaev, and read on the day you have felt Solovay-Kitaev's constants.
  563. Day 563 (systems): Optimal ancilla-free Clifford+T approximation of z-rotations — Ross, Selinger, 2014. Optimal T-count for a z-rotation at a given precision, from a number-theoretic search rather than a recursion. Compare the sequence lengths against yesterday's Solovay-Kitaev output on the same targets; the gap is large and it is the point.
  564. Day 564 (systems): A meet-in-the-middle algorithm for fast synthesis of depth-optimal quantum circuits — Amy, Maslov, Mosca, Roetteler, 2012. Optimal synthesis by search, with the memory-time trade-off that makes it tractable. Read it as the exact answer your heuristics are approximating, and note the circuit sizes at which exact stops being possible.
  565. Day 565 (AI): Underspecification Presents Challenges for Credibility in Modern Machine Learning — D'Amour et al., 2020. Equally good training runs encode different inductive biases and behave differently off-distribution. Read it the day the reviews arrive, because at least one reviewer is going to ask why your result should hold in a setting you did not test, and this is the honest answer.
  566. Day 566 (systems): Optimization of Quantum Circuit Mapping using Gate Transformation and Commutation — Itoko, Raymond, Imamichi, Matsuo, 2019. Commutation rules used inside the mapping pass rather than as a separate cleanup, which is the design decision your pipeline has to make today. Their gate-transformation trick is worth stealing outright.
  567. Day 567 (systems): Graph-theoretic Simplification of Quantum Circuits with the ZX-calculus — Duncan, Kissinger, Perdrix, van de Wetering, 2019. Circuit optimization as graph rewriting in a calculus where the rewrite rules are sound by construction. It also produces the best T-count reductions available, which is why it is worth the unfamiliar notation.
  568. Day 568 (systems): PyZX: Large Scale Automated Diagrammatic Reasoning — Kissinger, van de Wetering, 2019. The implementation of yesterday's calculus, with the extraction problem — turning a simplified graph back into a circuit — treated as the hard part it is. Read the extraction section; it is where a naive implementation loses everything it gained.
  569. Day 569 (AI): Leakage and the Reproducibility Crisis in ML-based Science — Kapoor, Narayanan, 2022. Eight kinds of leakage, and 300-odd papers across 17 fields with one of them. Run the taxonomy over your own pipeline today, while you are already rereading it for the response.
  570. Day 570 (systems): Has the Machine Learning Review Process Become More Arbitrary as the Field Has Grown? The NeurIPS 2021 Consistency Experiment — Beygelzimer, Dauphin, Liang, Wortman Vaughan, 2023. Two independent committees, the same papers, and the disagreement rate measured rather than complained about. Read it on the day you most want to take your reviews personally.
  571. Day 571 (systems): Automated optimization of large quantum circuits with continuous parameters — Nam, Ross, Su, Childs, Maslov, 2017. A published optimizer with a published benchmark table, which is the second thing to compare against once you have compared against Qiskit. Note how they report: per-circuit, per-metric, with the losses shown.
  572. Day 572 (systems): An Efficient Quantum Compiler that reduces T count — Heyfron, Campbell, 2017. T-count reduction as the optimization that matters when the machine is fault-tolerant, because T gates are what a surface code actually charges for. This is the number your estimator should print first.
  573. Day 573 (systems): Quipper: A Scalable Quantum Programming Language — Green, Lumsdaine, Ross, Selinger, Valiron, 2013. Circuits as first-class values in a functional host language, with circuit transformers as ordinary functions. Read it as a design alternative to your IR and be able to say, in an interview, why you did not do it that way.
  574. Day 574 (systems): Q#: Enabling scalable quantum computing and development with a high-level domain-specific language — Svore et al., 2018. The design decisions of a language built for resource estimation at scale: adjoint and controlled as language features, and the type system that keeps classical and quantum data apart. Compare with Quipper from yesterday.
  575. Day 575 (systems): A Practical Quantum Instruction Set Architecture — Smith, Curtis, Zeng, 2016. Quil: a hybrid instruction set with classical memory and control flow in it from the start. Read it for the shared-memory model between the classical and quantum halves, which is the part your IR has been ignoring.
  576. Day 576 (systems): Basic circuit compilation techniques for an ion-trap quantum machine — Maslov, 2016. A different machine with all-to-all connectivity, where the routing problem you have spent a month on simply does not exist and a different problem replaces it. Read it as the check on how architecture-specific your assumptions have become.
  577. Day 577 (systems): Measurement-based quantum computation with cluster states — Raussendorf, Browne, Briegel, 2003. A universal model with no unitary gates at all: prepare an entangled resource and then only measure. Read it after a month of circuit compilation, as the demonstration that the circuit model is a choice.
  578. Day 578 (AI): Shortcut Learning in Deep Neural Networks — Geirhos et al., 2020. Models that solve the benchmark without solving the task, and the diagnostic tests that expose it. Read it while packaging your artifact, because an artifact that only reproduces on your data is the systems version of the same failure.
  579. Day 579 (systems): Quantum Computation by Adiabatic Evolution — Farhi, Goldstone, Gutmann, Sipser, 2000. The third model: encode the answer in a ground state and evolve slowly enough to stay there. The whole question is how slowly, and the whole question is the gap.
  580. Day 580 (systems): Adiabatic Quantum Computation is Equivalent to Standard Quantum Computation — Aharonov, van Dam, Kempe, Landau, Lloyd, Regev, 2004. The equivalence proof, and the circuit-to-Hamiltonian construction that makes it work. Read it as the answer to "is adiabatic computing a different kind of computing" — it is not, and the proof is constructive.
  581. Day 581 (systems): Quantum Computational Complexity — Watrous, 2008. The survey that states the definitions carefully — BQP, QMA, QIP — and the containments that are actually proven. Read it as the reference you check before saying anything about complexity out loud in an interview.
  582. Day 582 (systems): BQP and the Polynomial Hierarchy — Aaronson, 2009. The oracle problem that would separate BQP from the polynomial hierarchy, and the conjectures it needed. Read it on a catch-up day for the structure of the argument rather than the details, and note how long the conjectures stayed open.
  583. Day 583 (systems): Classical Verification of Quantum Computations — Mahadev, 2018. A classical machine can check a quantum computation, under a cryptographic assumption. Read it on the day you implement an algorithm whose output is a state you cannot read: unusable output and unverifiable output are the same problem wearing different clothes.
  584. Day 584 (systems): The Need for Structure in Quantum Speedups — Aaronson, Ambainis, 2009. Speedups need structure in the problem, and the conjecture is that unstructured problems admit at most a polynomial one. This is the fine print underneath every quantum machine learning claim, stated as a theorem rather than as a caveat.
  585. Day 585 (systems): Quantum Supremacy through the Quantum Approximate Optimization Algorithm — Farhi, Harrow, 2016. An algorithm shaped around the machine that exists rather than the machine anyone wants — shallow, fixed-depth, and defended on hardness grounds. The hardware lottery has a quantum version and this is what winning it looks like.
  586. Day 586 (AI): Deep Learning: A Critical Appraisal — Marcus, 2018. Ten limitations, some of which aged well and some of which did not. Read it as an exercise in scoring a critique after the fact: which objections were about the method and which were about the year.
  587. Day 587 (systems): Quantum Computation as Geometry — Nielsen, Dowling, Gu, Doherty, 2006. Circuit cost as distance in a metric on the unitary group, so finding an optimal circuit becomes finding a geodesic. Read it on the day you simulate a gate as a driven Hamiltonian: the continuous picture underneath the discrete one.
  588. Day 588 (systems): An Introduction to Quantum Error Correction and Fault-Tolerant Quantum Computation — Gottesman, 2009. The lecture-notes version, written to be read straight through. It is the bridge from the stabilizer formalism you have been implementing all term to the codes the spring is about, and a catch-up day is where it fits.
  589. Day 589 (systems): Measuring the Capabilities of Quantum Computers — Proctor, Rudinger, Young, Nielsen, Blume-Kohout, 2020. Volumetric benchmarks: a two-dimensional map of width against depth instead of a single scalar. Read it against quantum volume and decide which one your harness should report, then say why in the README.
  590. Day 590 (systems): Demonstration of qubit operations below a rigorous fault tolerance threshold with gate set tomography — Blume-Kohout et al., 2016. Gate set tomography: characterise the gates, the preparation and the measurement together, because you cannot assume any of them. Read it as the rigorous alternative to the benchmarking you implemented in November, and note what the rigour costs in experiments.
  591. Day 591 (systems): Utility is in the Eye of the User: A Critique of NLP Leaderboards — Ethayarajh, Jurafsky, 2020. A leaderboard ranks on one axis and hides compute, latency and fairness. Your router table has the same problem — depth and SWAP count are two axes and compile time is a third you are about to lose a comparison on.
  592. Day 592 (AI): Fine-Tuning Pretrained Language Models: Weight Initializations, Data Orders, and Early Stopping — Dodge et al., 2020. The spread across seeds is large enough that the best of ten runs beats the mean of ten runs by more than most reported improvements. Apply the same treatment to your own benchmark table before an interviewer does.
  593. Day 593 (systems): AI and the Everything in the Whole Wide World Benchmark — Raji, Bender, Paullada, Denton, Hanna, 2021. Benchmarks claiming generality that measure something much narrower, and the construct-validity argument for why. Read it on the last working day of the term as the standard your own four artifacts should be described against — narrowly, and with what they do not show.
  594. Day 594 (systems): A Systematic Review of Reproducibility Research in Natural Language Processing — Belz, Agarwal, Shimorina, Reiter, 2021. What happened when people actually tried to reproduce published results at scale, and how rarely the numbers matched exactly. Read it as the closing argument for why the last ninety days were spent this way.
  595. Day 595 (systems): Ten Simple Rules for Reproducible Computational Research — Sandve, Nekrutenko, Taylor, Hovig, 2013. Ten rules, and today you find out how many of them last term's repository actually follows. Read it first thing, then run the pipeline and mark each rule pass or fail from evidence.
  596. Day 596 (systems): Good Enough Practices in Scientific Computing — Wilson, Bryan, Cranston, Kitzes, Nederbragt, Teal, 2017. The floor, not the ceiling. Every fix you make today should be one of these; if a fix is not on this list, ask whether you are gold-plating instead of repairing.
  597. Day 597 (systems): Ten Simple Rules for Better Figures — Rougier, Droettboom, Bourne, 2014. You are about to rebuild every figure in the writeup. Read the rules before you rebuild them, so the rebuild fixes the design and not only the plumbing.
  598. Day 598 (systems): Quantum Circuit Placement — Maslov, Falconer, Mosca, 2007. The mapping problem stated cleanly a decade before it was fashionable, as a graph problem with a cost function. Read it the morning you add a second term to that cost function, so you know which part of the formulation you are changing.
  599. Day 599 (systems): Fault-Tolerant Operation of a Quantum Error-Correction Code — Egan et al., 2020. A real device's error budget, itemised. Read it for how badly a product of per-gate fidelities predicts what a whole circuit actually does — which is the estimate you are about to publish a number from.
  600. Day 600 (systems): Cargo Cult Science — Feynman, 1974. The standard you are about to be held to by nobody except yourself, stated by someone who meant it. Read it the week before you start writing a paper with your name first on it.
  601. Day 601 (systems): Surface codes: Towards practical large-scale quantum computation — Fowler, Mariantoni, Martinis, Cleland, 2012. A deliberate re-read: you read it on day 384 as a survey, and you now have a decoder to build against it. Read it cover to cover again and write down the three numbers you will be trying to reproduce by day 661.
  602. Day 602 (systems): The Science of Scientific Writing — Gopen, Swan, 1990. Sentence-level structure treated as an engineering problem: where the reader expects the point, and what happens when it is elsewhere. Today you write one sentence that has to survive being read once, quickly, by someone tired.
  603. Day 603 (systems): Quantum Low-Density Parity-Check Codes — Breuckmann, Eberhardt, 2021. Codes built from classical parity checks, taken well past the CSS construction you are doing by hand today. Read it for the parameters the surface code gives up, and what the alternatives ask for in exchange.
  604. Day 604 (systems): t|ket> : A Retargetable Compiler for NISQ Devices — Sivarajah, Dilkes, Cowtan, Simmons, Edgington, Duncan, 2020. A production compiler with its pass structure written down. Compare its architecture-aware pass ordering against yours and note the two passes you do not have.
  605. Day 605 (systems): Realization of real-time fault-tolerant quantum error correction — Ryan-Anderson et al., 2021. Correction applied while the circuit is still running, on trapped ions. Read it for why the classical bookkeeping you are writing today is what makes real-time correction possible at all.
  606. Day 606 (systems): Quantum Computing with Very Noisy Devices — Knill, 2005. Postselection and teleported error correction pushing the threshold far above what anyone expected, at an overhead nobody wants to pay. Read it on a slow day as the clearest example of a threshold being a statement about a scheme, not about nature.
  607. Day 607 (systems): Ten Simple Rules for Reproducible Research in Jupyter Notebooks — Rule et al., 2019. Rules for the kind of code that runs an experiment rather than ships a product, which is exactly what a benchmark harness is. Read it before the harness exists, so it is built to be re-run rather than retro-fitted.
  608. Day 608 (systems): Circuit Transformations for Quantum Architectures — Childs, Schoute, Unsal, 2019. Routing with lower bounds attached, which is the thing a benchmark table cannot give you: a statement about how much room is left. Read it the day you write your ratios, so you know whether losing to Qiskit means losing to the problem.
  609. Day 609 (systems): State of the Art: Reproducibility in Artificial Intelligence — Gundersen, Kjensmo, 2018. A survey that counts how many papers document enough to be re-run, with the checklist it used. Score your own qroute benchmark against that checklist today, before you publish the table.
  610. Day 610 (systems): Relaxing Hardware Requirements for Surface Code Circuits using Time-dynamics — McEwen, Bacon, Gidney, 2023. What connectivity actually buys, answered by trading it against time. Read it before you sweep degree, so the sweep tests a hypothesis rather than producing a curve.
  611. Day 611 (systems): Polynomial-time T-depth Optimization of Clifford+T circuits via Matroid Partitioning — Amy, Maslov, Mosca, 2013. T-depth is the cost that survives error correction, and this is the algorithm that reduced it. Read it as the optimisation your compiler will need once the target is a fault-tolerant machine rather than a NISQ one.
  612. Day 612 (systems): Scientific Benchmarking of Parallel Computing Systems — Hoefler, Belli, 2015. Twelve rules for reporting performance measurements, most of which your qroute table currently breaks. Read it and mark which rules you will fix before the design note goes out.
  613. Day 613 (systems): Reducing T-count with the ZX-calculus — Kissinger, van de Wetering, 2019. A rewriting system that beats hand-designed passes on the metric that matters. Read it as the answer to "what would a better heuristic need" — it is a different representation, not a better search.
  614. Day 614 (systems): Restrictions on Transversal Encoded Quantum Gate Sets — Eastin, Knill, 2009. The no-go theorem that shapes every fault-tolerant architecture: no code gives a universal transversal gate set. Read it before you spend a week looking for the transversal T you will not find.
  615. Day 615 (systems): Ten Simple Rules for a Good Poster Presentation — Erren, Bourne, 2007. You will present this work at a poster session before it is a paper. Read the rules while the results are still forming, because the poster is what forces you to decide what the single message is.
  616. Day 616 (systems): Magic state distillation with low overhead — Bravyi, Haah, 2012. The triorthogonal code family and the overhead scaling that made distillation affordable. Read it against yesterday's 15-to-1 simulation and compute what your factory would cost at the same target error.
  617. Day 617 (systems): Magic State Distillation: Not as Costly as You Think — Litinski, 2019. A careful re-costing that overturns the received number by choosing the protocol per target error rate. Read it as an example of a result that is entirely accounting and is still a result.
  618. Day 618 (systems): Ten Simple Rules for Doing Your Best Research, According to Hamming — Erren, Cullen, Erren, Bourne, 2007. Hamming's talk compressed to ten rules, read twelve days after the talk itself. The compression is the exercise: notice which of his points survived and which did not.
  619. Day 619 (systems): A Theory of Quantum Error-Correcting Codes — Knill, Laflamme, 1997. The conditions you verified numerically on day 604, in the paper that proved them. Read it now that you have used them, which is the order that makes the algebra mean something.
  620. Day 620 (systems): Ten Simple Rules for Getting Published — Bourne, 2005. Rule one is "read many papers, and learn from both the good and the bad ones", which is literally today's task. Read it before the related-work table, not after.
  621. Day 621 (systems): Operator Quantum Error Correcting Subsystems for Self-Correcting Quantum Memories — Bacon, 2006. Subsystem codes, where some degrees of freedom are deliberately not protected. Read it for the idea that gauge qubits buy you low-weight measurements — the same trade the rotated surface code makes tomorrow.
  622. Day 622 (systems): Dynamically Generated Logical Qubits — Hastings, Haah, 2021. A code whose logical qubits exist only as a sequence of measurements, with no static stabilizer group at all. Read it on the day you fix a layout, as proof that the layout is a choice and not a law.
  623. Day 623 (systems): Quantum codes on a lattice with boundary — Bravyi, Kitaev, 1998. The planar version, which is the one anybody builds. Read it for why two kinds of boundary are needed and what the logical operators become — the detail your matching graph will get wrong first.
  624. Day 624 (systems): Decoding Across the Quantum LDPC Code Landscape — Roffe, White, Burton, Campbell, 2020. One decoder run across many code families, which is the comparison that shows how much of a decoder's performance is the code and how much is the algorithm. Read it on a day with no build.
  625. Day 625 (systems): Towards practical classical processing for the surface code — Fowler, Whiteside, Hollenberg, 2012. The paper that treats decoding as a real-time systems problem with a latency budget. Read it now so that everything you build from today is measured in microseconds as well as in accuracy.
  626. Day 626 (systems): Single-shot fault-tolerant quantum error correction — Bombin, 2015. Whether one round of syndrome can ever be enough, and what a code has to look like for that to be true. Read it the day you start sampling rounds, because it tells you what the rounds are buying.
  627. Day 627 (systems): Ten Simple Rules for Effective Statistical Practice — Kass, Caffo, Davidian, Meng, Peng, Reid, 2016. Variability, sample size and the difference between an estimate and the thing estimated, in ten rules. Today you build the interval that keeps you honest about the size of your logical error rate.
  628. Day 628 (systems): Almost-linear time decoding algorithm for topological codes — Delfosse, Nickerson, 2021. A deliberate re-read of the day-388 paper, this time as an implementation specification rather than an idea. Cluster growth and peeling instead of matching; read it while you are building the graph both decoders will run on, so the graph serves both.
  629. Day 629 (systems): Fast Decoders for Topological Quantum Codes — Duclos-Cianci, Poulin, 2010. Renormalisation-group decoding, an approach neither matching nor union-find. Read it as evidence that the decoder design space is larger than the two options you are about to implement.
  630. Day 630 (systems): Topological Quantum Distillation — Bombin, Martin-Delgado, 2006. Color codes: transversal Clifford gates, at the cost of a harder decoding problem. Read it as the alternative your surface-code work implicitly rejected, and be able to say why.
  631. Day 631 (systems): Fault-tolerant quantum computation with high threshold in two dimensions — Raussendorf, Harrington, 2007. The result that made the surface code the default: a ~1% threshold with nearest-neighbour gates. Read it before you sample, so you know what number the simulation is supposed to approach.
  632. Day 632 (systems): Quantum computing with nearest neighbor interactions and error rates over 1% — Wang, Fowler, Hollenberg, 2011. A careful threshold measurement with the simulation methodology stated. Read the methodology section as the template for your own day-655 experiment, including how many shots per point they used.
  633. Day 633 (systems): Ten Simple Rules for Writing Research Papers — Zhang, 2014. Read it against the paper skeleton you wrote on day 602 and mark which rules your current draft breaks. This is a checklist day, not a reading day.
  634. Day 634 (systems): Fault-tolerant thresholds for quantum error correction with the surface code — Stephens, 2014. Thresholds under circuit-level noise for several extraction schedules, which is the comparison that shows how much the schedule matters. Read it alongside the ordering you chose on day 625.
  635. Day 635 (systems): Fault-Tolerant Quantum Computation With Constant Error Rate — Aharonov, Ben-Or, 1999. The threshold theorem in its original form. Read it for what it assumes — independent noise, fresh ancillas, parallel gates — because those assumptions are what a referee will ask you about.
  636. Day 636 (systems): Reliable Quantum Computers — Preskill, 1998. The argument for why fault tolerance is possible at all, written when it was still surprising. Read it slowly; it is the clearest statement of what the threshold theorem is actually claiming.
  637. Day 637 (systems): Sparse Blossom: correcting a million errors per core second with minimum-weight matching — Higgott, Gidney, 2023. A deliberate re-read of the day-389 paper, now that you are writing the matcher rather than reading about one. The sparsity argument is the whole trick; read it again and mark which parts you are going to skip and pay for later.
  638. Day 638 (systems): PyMatching: A Python package for decoding quantum codes with minimum-weight perfect matching — Higgott, 2021. The interface everyone uses, and the local-matching approximation that made it practical. Read it as the API you will be compared against, and note where its assumptions differ from yours.
  639. Day 639 (systems): Minimum weight perfect matching of fault-tolerant topological quantum error correction in average $O(1)$ parallel time — Fowler, 2014. The locality argument that makes matching parallelisable, and the reason a decoder can keep up with a machine. Read it against yesterday's single-threaded implementation and note what would have to change.
  640. Day 640 (systems): Unreproducible Research is Reproducible — Bouthillier, Laurent, Vincent, 2019. Fixing seeds makes a result re-runnable and can hide that it is not replicable. Read it on the day you wire in a reference decoder, and decide which of your comparisons are seed-matched and which must not be.
  641. Day 641 (systems): Toward a Union-Find decoder for quantum LDPC codes — Delfosse, Londe, Beverland, 2022. Union-find generalised past the surface code, which shows which parts of the algorithm were topology-specific. Read it as the answer to "does your decoder only work here".
  642. Day 642 (systems): Decoding algorithms for surface codes — deMarti iOlius, Fuentes, Orús, Crespo, Etxezarreta Martinez, 2024. A survey of the whole decoder landscape with the trade-offs tabulated. Read it after you have written two decoders, which is when the table becomes legible rather than intimidating.
  643. Day 643 (systems): Stability Experiments: The Overlooked Dual of Memory Experiments — Gidney, 2022. The experiment that tests whether you can measure a stabilizer reliably over time, which is exactly the failure mode you are about to add to the model. Read it as a reminder that memory experiments do not cover everything.
  644. Day 644 (systems): Low-distance Surface Codes under Realistic Quantum Noise — Tomita, Svore, 2014. Small-distance behaviour under realistic noise, which is where your d = 3 and d = 5 results live. Read it for the reminder that low-distance codes can behave in ways the asymptotic story does not predict.
  645. Day 645 (systems): Ten simple rules for writing a response to reviewers — Noble, 2017. You will write one of these this term, and the temptation will be to argue. Read the rules now, before you have a specific reviewer to be annoyed at.
  646. Day 646 (systems): Statistical mechanical models for quantum codes with correlated noise — Chubb, Flammia, 2021. The mapping from decoding to a disordered spin model, which is where the threshold is a phase transition rather than a fitted crossing. Read it as the theory behind the plot you will make on day 661.
  647. Day 647 (systems): Analysing correlated noise on the surface code using adaptive decoding algorithms — Nickerson, Brown, 2019. What happens to a decoder when errors are not independent — which is the assumption your edge weights are built on. Read it as the first thing a referee will attack, and note the adaptive fix.
  648. Day 648 (systems): A manifesto for reproducible science — Munafò et al., 2017. The systemic version of the argument: incentives, not individual carelessness. Read it as a description of the environment your first paper is entering, and pick the two practices you will actually adopt.
  649. Day 649 (systems): Fusion Blossom: Fast MWPM Decoders for QEC — Wu, Zhong, 2023. A parallel matching decoder built for the throughput a machine actually needs. Read it against your own single-threaded matcher and write down the two design decisions you would have to reverse.
  650. Day 650 (systems): How to factor 2048 bit RSA integers in 8 hours using 20 million noisy qubits — Gidney, Ekerå, 2021. A deliberate re-read, and the third: the assumptions about cycle time and decoder throughput mean something different now that you have a decoder to time. Those numbers are the ones your latency budget has to meet today.
  651. Day 651 (systems): Ten Simple Rules for Making Good Oral Presentations — Bourne, 2007. Read it in the hour before you give the talk to nobody. The rule about knowing your audience is the one you will break, because your audience is not other decoder people.
  652. Day 652 (systems): Real-Time Decoding for Fault-Tolerant Quantum Computing: Progress, Challenges and Outlook — Battistel et al., 2023. The engineering constraints stated as constraints: backlog, bandwidth, and the exponential blow-up when decoding is slower than the machine. Read it the day you measure your own latency curve.
  653. Day 653 (systems): A real-time, scalable, fast and highly resource efficient decoder for a quantum computer — Barber et al., 2023. A decoder designed against a hardware budget rather than a paper. Read it for what gets sacrificed to fit — the answer is accuracy in exactly the places you would not expect.
  654. Day 654 (systems): Parallel window decoding enables scalable fault tolerant quantum computation — Skoric, Browne, Barnes, Gillespie, Campbell, 2023. Decoding a stream rather than a block, by cutting the problem into overlapping windows. Read it as the structural answer to the backlog problem you measured on day 650.
  655. Day 655 (systems): High-threshold and low-overhead fault-tolerant quantum memory — Bravyi, Cross, Gambetta, Maslov, Rall, Yoder, 2024. A code with the surface code's threshold at a fraction of the qubits, and the connectivity bill that pays for it. Read the way they present the threshold sweep; that is the format your own results section should imitate.
  656. Day 656 (systems): Quantum error correction below the surface code threshold — Google Quantum AI, 2024. A deliberate re-read of the day-420 result, on the day your own sweep runs. The error suppression factor across distances is the quantity your plot is a small simulated echo of; read the methods again with the sweep in flight.
  657. Day 657 (systems): Hardness of decoding quantum stabilizer codes — Iyer, Poulin, 2015. Exact maximum-likelihood decoding is hard, which is why your accuracy is a sampled estimate and why shot count is the real cost of the experiment. Read it the day you decide how many shots each grid point gets.
  658. Day 658 (systems): Realizing Repeated Quantum Error Correction in a Distance-Three Surface Code — Krinner et al., 2022. A distance-three code run repeatedly on superconducting hardware, with the leakage and crosstalk that your simulation does not have. Read it as the gap between your noise model and a device.
  659. Day 659 (systems): Ten Simple Rules for Reviewers — Bourne, Korngreen, 2006. Read it as the person who is about to be reviewed, then review your own paper by the rules and write what you find in the limitations section today.
  660. Day 660 (systems): Improved decoding of circuit noise and fragile boundaries of tailored surface codes — Higgott, Bohdanowicz, Kubica, Flammia, Campbell, 2023. Belief-matching, and the discovery that tailored codes have boundaries that undo their advantage. Read it as a case where a promising number did not survive careful re-measurement.
  661. Day 661 (systems): High threshold error correction for the surface code — Wootton, Loss, 2012. A decoder that beats matching by using more of the error distribution, and the threshold that follows. Read it the day you plot your own crossing, so you know your number is decoder-dependent and say so on the figure.
  662. Day 662 (systems): Correlated decoding of logical algorithms with transversal gates — Cain, Zhao, Zhou, Meister, Ataides, Jaffe, Bluvstein, Lukin, 2024. An assumption everyone made — that logical blocks decode independently — taken apart and replaced with an experiment. Read it as the shape of what you are doing today: an objection answered by re-running, not by arguing.
  663. Day 663 (systems): Assessing requirements to scale to practical quantum advantage — Beverland et al., 2022. A deliberate re-read of the day-409 paper with a decoder in hand. Read the parameter tables specifically: they are the list of everything a noise model must state before an estimate built on it means anything.
  664. Day 664 (systems): Statistical Significance Tests for Machine Translation Evaluation — Koehn, 2004. Bootstrap resampling, explained on a problem that looks nothing like yours and is structurally identical. Use it today to say whether your threshold differs from the published one or merely looks different.
  665. Day 665 (systems): Ultrahigh Error Threshold for Surface Codes with Biased Noise — Tuckett, Bartlett, Flammia, 2018. The threshold moves a great deal when the noise is biased, which means your single number is a number about your noise model. Read it as the reason the figure caption must state the model.
  666. Day 666 (systems): Roads towards fault-tolerant universal quantum computation — Campbell, Terhal, Vuillot, 2017. The survey of routes to universality — magic states, code switching, gauge fixing — read once the surface-code road is familiar enough to compare against.
  667. Day 667 (systems): The XZZX Surface Code — Bonilla Ataides, Tuckett, Bartlett, Flammia, Brown, 2021. A one-gate change to the stabilizers that transforms the threshold under biased noise. Read it as the cleanest example of a result that is a change of representation rather than a better algorithm.
  668. Day 668 (AI): A Neural Decoder for Topological Codes — Torlai, Melko, 2017. The first serious attempt to learn a decoder, using a Boltzmann machine over syndrome-error pairs. Read it for how they framed the labels, which is the decision you are making today and cannot easily change later.
  669. Day 669 (AI): Decoding Small Surface Codes with Feedforward Neural Networks — Varsamopoulos, Criger, Bertels, 2017. A plain feedforward decoder that matches MWPM at small distance, and the scaling wall it hits. Read it for the honest statement of where the approach stops working — that wall is the one you will hit too.
  670. Day 670 (AI): Learning high-accuracy error decoding for quantum processors — Bausch et al., 2024. A deliberate re-read of the day-498 paper on the day tensorforge and qdec are finally wired together. AlphaQubit pretrains on simulation and fine-tunes on hardware; read the training recipe again now that you have a dataset of your own and can see what it would cost you.
  671. Day 671 (AI): Machine-learning-assisted correction of correlated qubit errors in a topological code — Baireuther, O'Brien, Tarasinski, Beenakker, 2018. A recurrent decoder trained on time-series syndromes, which is the shape your data actually has. Read the section on how they avoided training on the wrong thing; that is today's audit.
  672. Day 672 (AI): Deep neural decoders for near term fault-tolerant experiments — Chamberland, Ronagh, 2018. Neural decoders judged against the constraint that matters — decoding faster than the machine produces syndromes. Read it as the specification for the decoder you will train, not as an inspiration.
  673. Day 673 (systems): Ten Simple Rules for Taking Advantage of Git and GitHub — Perez-Riverol et al., 2016. Read it as the checklist for the repository you are about to ask a stranger to use — issues, releases, tags, and a history someone can bisect.
  674. Day 674 (systems): Best Practices for Scientific Computing — Wilson et al., 2014. The longer, stricter version of the day-596 paper, read at the point where the code stops being yours alone. Automate what is repeated is the rule that today's work implements.
  675. Day 675 (systems): The FAIR Guiding Principles for scientific data management and stewardship — Wilkinson et al., 2016. Findable, accessible, interoperable, reusable — applied today to the sweep data behind the threshold plot, not to a hypothetical dataset. Score your archive against all four before you cut the release.
  676. Day 676 (systems): Ten Simple Rules for the Open Development of Scientific Software — Prlić, Procter, 2012. The rules for software other people are expected to contribute to rather than merely run. Read it the day someone else uses yours, and write down which rules their friction points map to.
  677. Day 677 (systems): Ten Simple Rules for Digital Data Storage — Hart et al., 2016. Formats, naming and raw-data discipline, read at the moment the data stops being yours to interpret. The rule about keeping raw data raw is the one your sweep pipeline is closest to breaking.
  678. Day 678 (systems): A Game of Surface Codes: Large-Scale Quantum Computing with Lattice Surgery — Litinski, 2019. The whole fault-tolerant machine drawn as a resource-allocation problem in space and time. Read it last: it is the thing your decoder is a component of, and the frame for the summer.
  679. Day 679 (systems): Full-Stack, Real-System Quantum Computer Studies: Architectural Comparisons and Design Insights — Murali, Linke, Martonosi, Javadi-Abhari, Baker, Chong, 2019. Two real machines compared at every layer at once, which is the view you need of the stack you have just joined. Read it on the first day and mark which layer your team owns.
  680. Day 680 (AI): Learning to Decode the Surface Code with a Recurrent, Transformer-Based Neural Network — Bausch, Senior, Heras, Edlich et al., 2023. What a serious learned decoder looks like: recurrent over rounds, trained against real device data, and beaten mainly on latency. Read it as the ceiling yours is measured against, not as a template to copy.
  681. Day 681 (systems): Charge insensitive qubit design derived from the Cooper pair box — Koch et al., 2007. A deliberate re-read, and the only one this period gets. You met it in Autumn 2027 as a circuit; today you diagonalise its Hamiltonian yourself, and the exponential-versus-polynomial trade in EJ/EC stops being a sentence. This is where the AI lane has been walking since Prince chapter 1 on day 1.
  682. Day 682 (AI): Data-driven decoding of quantum error correcting codes using graph neural networks — Lange, Havström, Srivastava, Bengtsson et al., 2023. A learned decoder whose architecture is shaped like the matching graph, evaluated against matching on identical data. Read it before you build the comparison table, so the table ends up with the right columns.
  683. Day 683 (systems): Software tools for quantum control: Improving quantum computer performance through noise and error suppression — Ball, Biercuk, Carvalho, Chen et al., 2021. Research techniques — dynamical decoupling, optimised pulses, filter design — turned into software that other people run without reading the derivations. Read it in the week your own work first has to fit inside somebody else’s system.
  684. Day 684 (systems): Superconducting Qubits: A Short Review — Devoret, Wallraff, Martinis, 2004. Charge, flux and phase qubits laid out as one design space, before the transmon flattened it. Short, and the right thing to read once you have stood next to a real fridge.
  685. Day 685 (systems): Calibrated decoders for experimental quantum error correction — Chen, Yoder, Kim, Sundaresan et al., 2022. What changes when a decoder's error model is fitted to the device instead of assumed. That gap is exactly what today's off-distribution test measures.
  686. Day 686 (systems): QDB: From Quantum Algorithms Towards Correct Quantum Programs — Huang, Martonosi, 2018. A taxonomy of the bugs quantum programs actually have, built from real buggy programs rather than from imagination. Read it on the day you are hunting one in conventions you are still learning.
  687. Day 687 (systems): 1/f noise: implications for solid-state quantum information — Paladino, Galperin, Falci, Altshuler, 2014. The spectrum that dominates dephasing in every solid-state qubit, and why a 1/f bath is not a Markovian one. Read it with your own T2 simulation running beside you.
  688. Day 688 (systems): Removing leakage-induced correlated errors in superconducting quantum error correction — McEwen, Kafri, Chen, Atalaya et al., 2021. Leakage is the error your phenomenological model does not have and your matching graph cannot express. Read it on the day you throw that model away.
  689. Day 689 (systems): Realizing Rapid, High-Fidelity, Single-Shot Dispersive Readout of Superconducting Qubits — Walter, Kurpiers, Gasparinetti, Magnard et al., 2017. Where readout time goes, and why resonator ring-down sets a floor the decoder has to live inside. Your measurement error rate is this paper’s trade-off, made once by someone else.
  690. Day 690 (systems): Introduction to Quantum Noise, Measurement and Amplification — Clerk, Devoret, Girvin, Marquardt, Schoelkopf, 2010. A hundred pages on what noise is quantum mechanically and why an amplifier is obliged to add some. Read the first three sections; a catch-up day is the only day long enough.
  691. Day 691 (systems): Resolving catastrophic error bursts from cosmic rays in large arrays of superconducting qubits — McEwen, Faoro, Arya, Dunsworth et al., 2022. A correlated error across the whole chip every ten seconds, which no independent-error decoder can absorb. Read it as the failure mode your threshold plot quietly assumes away.
  692. Day 692 (systems): Hardware for Dynamic Quantum Computing — Ryan, Johnson, Ristè, Donovan, Ohki, 2017. A control system designed around a feedback latency budget, written as an engineering document rather than a physics result. Read it for the form as much as the content — you are writing one today.
  693. Day 693 (systems): A simple all-microwave entangling gate for fixed-frequency superconducting qubits — Chow, Corcoles, Gambetta, Rigetti et al., 2011. Cross resonance: an entangling gate with no tunable element, driven at the neighbour’s frequency. Read the Hamiltonian before you simulate it, because the unwanted terms are the entire engineering problem.
  694. Day 694 (AI): Deep Neural Network Discrimination of Multiplexed Superconducting Qubit States — Lienhard, Vepsäläinen, Govia, Hoffer et al., 2022. A learned component measured against the standard one on accuracy and on latency, with the cost of the network itself counted rather than waved at. The same comparison you are running today, one layer further down the stack.
  695. Day 695 (systems): Scalable mitigation of measurement errors on quantum computers — Nation, Kang, Sundaresan, Gambetta, 2021. Readout mitigation without ever materialising a 2^n calibration matrix. Read it as a sparse linear-algebra paper, because that is what it is.
  696. Day 696 (systems): Procedure for systematically tuning up crosstalk in the cross resonance gate — Sheldon, Magesan, Chow, Gambetta, 2016. Four pages that turn a Hamiltonian into a tune-up sequence somebody else can run. Read it for the shape of a good protocol: measure, fit, correct, measure again.
  697. Day 697 (systems): How to Build a Quantum Supercomputer: Scaling from Hundreds to Millions of Qubits — Mohseni, Scherer, Johnson, Wertheim et al., 2024. The classical half of a large quantum computer costed out: decoding throughput, control bandwidth, and the data rates nobody budgets for. Read it before you profile, because it says which number actually has to move.
  698. Day 698 (systems): Physical qubit calibration on a directed acyclic graph — Kelly, O'Malley, Neeley, Neven, Martinis, 2018. Calibration as a dependency graph with staleness, which is a build system with physics in it. Read it the day you take ownership of something that has to keep working overnight without you.
  699. Day 699 (systems): Scalable in-situ qubit calibration during repetitive error detection — Kelly, Barends, Fowler, Megrant et al., 2016. Calibrating from the error-detection data itself rather than stopping the experiment to do it. This is the feedback loop that lets a large device stay usable for a whole day.
  700. Day 700 (systems): Quantum Error Correction: An Introductory Guide — Roffe, 2019. An exposition written to be understood rather than to be impressive, by somebody who decided carefully what to leave out. Read it on the day you write your own and steal its ordering.
  701. Day 701 (systems): Demonstrating a Continuous Set of Two-qubit Gates for Near-term Quantum Algorithms — Foxen, Neill, Dunsworth, Roushan et al., 2020. A gate family parameterised continuously instead of a fixed basis, calibrated across a whole chip. Read it against the discrete basis every compiler pass you have written assumes.
  702. Day 702 (systems): Digital coherent control of a superconducting qubit — Leonard, Beck, Nelson, Christensen et al., 2019. Single-flux-quantum pulses driving a qubit from a chip at 4 K, which removes most of the wiring problem and introduces a new one. Read it as an architecture proposal, not as a demo.
  703. Day 703 (systems): Mitiq: A software package for error mitigation on noisy quantum computers — LaRose, Mari, Kaiser, Karalekas et al., 2022. A research package with a test suite, a release process and documentation a stranger can follow — which is what your repository has to become today. Read the software half, not the mitigation theory.
  704. Day 704 (systems): Application-Oriented Performance Benchmarks for Quantum Computing — Lubinski, Johri, Varosy, Coleman et al., 2021. Benchmarks defined by what an application needs rather than by what is convenient to measure. Read it before writing the harness your group will still be running after you leave.
  705. Day 705 (systems): Coherent control of macroscopic quantum states in a single-Cooper-pair box — Nakamura, Pashkin, Tsai, 1999. The first coherent oscillation in a superconducting circuit, with a coherence time of about a nanosecond. Read it against the hundred microseconds your team measures now and count the orders of magnitude.
  706. Day 706 (systems): Quantum Computer Systems for Scientific Discovery — Alexeev, Bacon, Brown, Calderbank et al., 2021. A community statement of which systems problems are genuinely open. Read it on the day you choose what to harden, because it tells you which of your projects somebody else would cite.
  707. Day 707 (systems): Nine Best Practices for Research Software Registries and Repositories: A Concise Guide — Task Force on Best Practices for Software Registries, 2020. What a repository has to carry before anyone can find it, cite it or trust it once its author has gone. Read it as the checklist for the four archives you write today, and check each one against it rather than against your memory.
  708. Day 708 (systems): Manipulating the Quantum State of an Electrical Circuit — Vion, Aassime, Cottet, Joyez et al., 2002. The quantronium, and the idea that you bias a qubit where its frequency is flat against the noise. One idea, and every superconducting qubit since has used it.
  709. Day 709 (systems): Optimized Compilation of Aggregated Instructions for Realistic Quantum Computers — Shi, Leung, Gokhale, Rossi et al., 2019. A compiler contribution you can draw a boundary around: aggregate the instructions, compile the aggregate straight to pulses, measure the gain. Read it on the day you have to say exactly which part of your own work is yours.
  710. Day 710 (systems): A Verified Optimizer for Quantum Circuits — Hietala, Rand, Hung, Wu, Hicks, 2021. Circuit optimisations proved correct rather than tested, and the bugs the proofs found in real compilers. Read it on a review day and ask what your own tests would have caught.
  711. Day 711 (systems): SupermarQ: A Scalable Quantum Benchmark Suite — Tomesh, Gokhale, Omole, Ravi et al., 2022. A benchmark suite built around feature vectors so it can say what it covers and what it does not. Read it as you rebuild yours: coverage is the claim, not the score.
  712. Day 712 (systems): Quantum Volume in Practice: What Users Can Expect from NISQ Devices — Pelofske, Bärtschi, Eidenbenz, 2022. What the single number actually reports when it is measured by users on hardware they do not own, including how far it moves between runs. Read the variance discussion before you quote your own figure.
  713. Day 713 (systems): Statistical Assertions for Validating Patterns and Finding Bugs in Quantum Programs — Huang, Martonosi, 2019. Assertions for a program whose intermediate state you cannot print, made statistical because measurement destroys. Exactly the right frame for a test that only fails sometimes.
  714. Day 714 (systems): The Flux Qubit Revisited to Enhance Coherence and Reproducibility — Yan, Gustavsson, Kamal, Birenbaum et al., 2016. Reproducibility as a physics result: one qubit, redesigned until it behaved the same way twice. The hardware version of what you are currently doing to a repository.
  715. Day 715 (systems): ProjectQ: An Open Source Software Framework for Quantum Computing — Steiger, Häner, Troyer, 2018. A framework built as a compiler with swappable backends and released to strangers. Read it for the layering, and for what a project has to have in place before anybody outside it can contribute.
  716. Day 716 (systems): Qiskit Pulse: Programming Quantum Computers Through the Cloud with Pulses — Alexander, Kanazawa, Egger, Capelluto et al., 2020. A user-facing interface in which a program is waveforms, frames and instants rather than gates. Read the scheduling section against the stretch resolution you are about to implement — this is what the timing model is for.
  717. Day 717 (systems): Efficient Z-Gates for Quantum Computing — McKay, Wood, Sheldon, Chow, Gambetta, 2017. A whole class of gates removed from the hardware by folding them into the phase of every subsequent pulse. Possibly the best compiler result in the field, and it is four pages long.
  718. Day 718 (systems): A large-scale study on research code quality and execution — Trisovic, Lau, Pasquier, Crosas, 2021. Thousands of files of published research code run in a clean container to see how many execute at all. Fewer than half. Read it while you are watching a stranger try to run yours.
  719. Day 719 (systems): An Experimental Microarchitecture for a Superconducting Quantum Processor — Fu, Rol, Bultink, van Someren et al., 2017. The first real quantum microarchitecture paper: queues, timing and the feedback path, with the latencies stated. Read it as an architecture paper, because that is what it is.
  720. Day 720 (systems): Cryogenic Control Architecture for Large-Scale Quantum Computing — Hornibrook, Colless, Conway Lamb, Pauka et al., 2015. One coaxial line per qubit does not scale, and this is the paper that says so with a heat budget attached. Read it as a constraint on every architecture you have been sketching all year.
  721. Day 721 (systems): eQASM: An Executable Quantum Instruction Set Architecture — Fu, Riesebos, Rol, van Straten et al., 2019. An instruction set that is actually executable on control hardware, with the timing model inside the ISA. Read it against OpenQASM 3 and say which one your compiler should target.
  722. Day 722 (systems): Software Mitigation of Crosstalk on Noisy Intermediate-Scale Quantum Computers — Murali, McKay, Martonosi, Javadi-Abhari, 2020. Serialising the gates that interfere, and paying decoherence to do it. A scheduling problem with a physical objective, which is the shape of most quantum compiler work.
  723. Day 723 (systems): Optimized Quantum Compilation for Near-Term Algorithms with OpenPulse — Gokhale, Javadi-Abhari, Earnest, Shi, Chong, 2020. A compiler that reaches below the gate set into pulses, because the abstraction was costing more than it was buying. Read it with a real calibration snapshot open: both are about compiling against what the device actually is today.
  724. Day 724 (systems): Quantum Error Mitigation — Cai, Babbush, Benjamin, Endo, Huggins, Li, McClean, O'Brien, 2023. A review that is explicit about the sampling cost every mitigation technique pays. The right model for a limitations section: state the cost, not the hope.
  725. Day 725 (systems): Estimating the Coherence of Noise — Wallman, Granade, Harper, Flammia, 2015. How to measure what fraction of your error is coherent rather than stochastic, from randomised benchmarking data you already have. That number is what decides whether today’s pass is worth its cost.
  726. Day 726 (systems): Efficient learning of quantum noise — Harper, Flammia, Wallman, 2020. Reconstructing the Pauli error rates of a whole device from a tractable number of experiments. The measurement that would make your decoder’s edge weights right rather than merely plausible.
  727. Day 727 (systems): 3D integrated superconducting qubits — Rosenberg, Kim, Das, Yost et al., 2017. A paper whose figures are the argument — cross-sections and interconnect stacks that no paragraph could replace. Read it on the day you draw yours, and ask which of your claims a picture would carry better than a sentence.
  728. Day 728 (systems): The electronic interface for quantum processors — van Dijk, Charbon, Sebastiano, 2019. The classical-to-quantum boundary treated as a hardware engineering problem, with a power budget and a bandwidth budget attached. Read it against the host-accelerator boundary you are drawing today.
  729. Day 729 (systems): Transmon qubit with relaxation time exceeding 0.5 milliseconds — Wang, Li, Xu, Li et al., 2022. One claim, stated in the title, with every measurement in the paper existing to support it and nothing else in there at all. That is the structure your skeleton is trying to have.
  730. Day 730 (systems): Systems Architecture for Quantum Random Access Memory — Xu, Hann, Foxman, Girvin, Jiang, 2023. A component everybody assumes into their algorithm, costed out properly for the first time — hardware, error rates, and what it does to the speedup that assumed it was free. A paper whose whole contribution is an honest number.
  731. Day 731 (systems): Efficient magic state factories with a catalyzed |CCZ> to 2|T> transformation — Gidney, Fowler, 2019. A large reduction in the most expensive part of a fault-tolerant computation, from a construction only a couple of pages long. Read it on related-work day: this is what it looks like when somebody improves a number you were about to cite as fixed.
  732. Day 732 (systems): Focus beyond quadratic speedups for error-corrected quantum advantage — Babbush, McClean, Newman, Gidney, Boixo, Neven, 2021. Constant factors and error-correction overhead eat a Grover-shaped speedup entirely. The paper that decides which problems are worth writing an algorithm for at all.
  733. Day 733 (systems): Demonstration of the trapped-ion quantum-CCD computer architecture — Pino, Dreiling, Figgatt, Gaebler et al., 2021. An architecture in which qubits physically move, and the compiler problem that creates. Read it against the fixed coupling map every pass you have written quietly assumes.
  734. Day 734 (systems): New material platform for superconducting transmon qubits with coherence times exceeding 0.3 milliseconds — Place, Rodgers, Mundada, Smitham et al., 2020. Coherence tripled by changing the metal, after a decade in which everybody optimised the circuit instead. Read it on critique day as what happens when someone takes seriously an assumption nobody was arguing about.
  735. Day 735 (systems): Logical quantum processor based on reconfigurable atom arrays — Bluvstein, Evered, Geim, Li et al., 2024. Connectivity rearranged physically between layers, which turns routing from a graph problem into a scheduling problem. The strongest challenge to the assumptions baked into qroute.
  736. Day 736 (systems): Interfacing spin qubits in quantum dots and donors — hot, dense and coherent — Vandersypen, Bluhm, Clarke, Dzurak et al., 2017. The argument that the winning platform is the one you can fabricate a million of, whatever its coherence time. A manufacturing argument, which is a kind of systems argument.
  737. Day 737 (systems): Fluxonium: single Cooper pair circuit free of charge offsets — Manucharyan, Koch, Glazman, Devoret, 2009. A circuit that solves the charge-noise problem differently from the transmon and pays for it elsewhere. Read it as the counterfactual: this is what the transmon chose against.
  738. Day 738 (systems): Microwave photonics with superconducting quantum circuits — Gu, Kockum, Miranowicz, Liu, Nori, 2017. A very long review of superconducting circuits as a photonics platform — resonators, coupling, and every regime of light-matter interaction in one document. Read the sections you spent months deriving and mark the three places it says something you got wrong.
  739. Day 739 (systems): Decoherence in Josephson Qubits from Dielectric Loss — Martinis, Cooper, McDermott, Steffen et al., 2005. Coherence traced to two-level defects in the dielectric, which turned qubit design into a materials problem overnight. This is why your team argues about fabrication rather than about circuits.
  740. Day 740 (systems): QuTiP: An open-source Python framework for the dynamics of open quantum systems — Johansson, Nation, Nori, 2012. A research tool that outlived its authors, and the design choices that let it. Read it as the question of what makes scientific software survive the person who wrote it.
  741. Day 741 (systems): Cavity quantum electrodynamics for superconducting electrical circuits: an architecture for quantum computation — Blais, Huang, Wallraff, Girvin, Schoelkopf, 2004. The architecture proposal that the next twenty years implemented, written before the hardware existed. Read it as a handoff document that worked: it told other people what to build.
  742. Day 742 (systems): Impact of ionizing radiation on superconducting qubit coherence — Vepsäläinen, Karamlou, Orrell, Dogra et al., 2020. Environmental radiation setting a ceiling on coherence, demonstrated by shielding a fridge with lead. An experiment that found a cause nobody had thought to put in the model.
  743. Day 743 (systems): The impact of classical control electronics on qubit fidelity — van Dijk, Kawakami, Schouten, Veldhorst et al., 2019. Gate error traced to the amplitude resolution, phase noise and timing jitter of the instruments driving the qubit. Read it while your last run is going: part of the noise you are fitting is the room, not the chip.
  744. Day 744 (systems): Scaling Superconducting Quantum Computers with Chiplet Architectures — Smith, Ravi, Baker, Chong, 2022. Packaging many small chips rather than fabricating one large one, with the yield argument and the interconnect cost both stated. The systems answer to a fabrication problem, which is what most scaling questions turn out to be.
  745. Day 745 (systems): A tunable coupling scheme for implementing high-fidelity two-qubit gates — Yan, Krantz, Sung, Kjaergaard et al., 2018. The coupler that turns the always-on interaction off, which is what made high-fidelity gates routine. An engineering fix that changed what every layer above it was allowed to assume.
  746. Day 746 (systems): Elucidating Reaction Mechanisms on Quantum Computers — Reiher, Wiebe, Svore, Wecker, Troyer, 2017. A concrete case for what a fault-tolerant machine would be for, made to a field that is not computer science. Read it before you present — it is the answer to "why does this matter" that does not require the audience to be you.
  747. Day 747 (systems): Quantum algorithms: A survey of applications and end-to-end complexities — Dalzell, McArdle, Berta, Bienias et al., 2023. Every major algorithm with its end-to-end cost and its caveats, in one document. Read it as a map of where you could go next, not as a summary of where you have been.
  748. Day 748 (systems): Fusion-based quantum computation — Bartolucci, Birchall, Bombin, Cable et al., 2023. Fault tolerance built out of small entangled resources and destructive measurements, with no gates in the usual sense. The last thing to do before a plan ends is read something that makes the plan’s assumptions visible.
  749. Day 749 (systems): Building a fault-tolerant quantum computer using concatenated cat codes — Chamberland, Noh, Arrangoiz-Arriola, Campbell et al., 2022. A complete machine argued from the physical qubit up to the compiler, by people who had to make every layer agree with every other. Read it as the thing two years was training you to read in one sitting, and check whether you can.
  750. Day 750 (systems): Quantum computing 40 years later — Preskill, 2021. Forty years assessed by somebody who watched all of them, ending in a list of what is still unknown. Read the closing section, then write your own — and make sure the question you take into the next cycle is one this paper does not already answer.

The 750-day calendar

750 days back to back from Aug 17, 2026, one assignment each, grouped below under the period each one falls in. The day is the unit: nothing is scheduled in threes and no day is part of anything smaller than its period. Every day carries five lanes: a paper, a systems chapter, an AI chapter, a system to implement, and an open-source contribution that is logged after the fact rather than scheduled.

Every 6th day is a catch-up day. No new chapter, no new system, no new increment. One paper, and whatever slipped: finish the build that ran long, re-run the experiment that surprised you, or write the note you skipped.

Exit gate, every day: Working artifact plus a 5–10 line note; decide tomorrow from the evidence.

Every one of the 750 days is here. Summer 2026 — days 1–57, the period being worked — is set out in full, five lanes a day. The other 12 periods are one line a day: the day number, its date, whether it is a catch-up day, its theme and the system it builds. That is a choice about weight, not about what has been written — all 750 days are written one at a time, and any of them can be read in full in the terminal with plan 1 for a day number, or in the calendar in Easy Mode.

Summer 2026 — days 1–57, to · set out in full

foundations before the quarter starts · free, ~70 hours a week · 57 days

Day 1 —

Limited direct execution, and the paper everything else is measured against

  • Paper (AI): Attention Is All You Need — Vaswani et al., 2017. The architecture everything else in the two years is built on or measured against. Read it first, and again on day 29 when you are implementing it.
  • Systems chapter: OSTEP, read in chapter order — Ch 6 · Mechanism: limited direct execution. Leaves: Write the timeline of one timer interrupt from user code to handler and back, naming at every step which register set is live and who is responsible for saving it.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 2 · Linear algebra, §2.4–2.5 linear dependence, span, norms. Leaves: Write one 3x3 system out in both index and matrix notation, invert it by hand, then find the b for which it has no solution and justify that from the span of the columns rather than from the arithmetic.
  • System (atomic — whole in the day): Implement a user-level context switch between two stacks with a hand-written save and restore of the callee-saved registers and the stack pointer, plus a trap into a handler that returns to the exact instruction it left. Processes and fork/exec you have already read; this is the mechanism underneath them. Measure: Every callee-saved register and the stack pointer are identical across the round trip, asserted rather than eyeballed, and the switches per second over a million alternations are recorded.
  • Open source — logged, not scheduled: nothing logged for this day

Day 2 —

ferrodb starts: the page and the log record

  • Paper (systems): ARIES: A Transaction Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks Using Write-Ahead Logging — Mohan et al., 1992. The write-ahead log ferrodb is about to implement, including why redo and undo are separate passes. Read it the day you design the record format, not after.
  • Systems chapter: OSTEP, read in chapter order — Ch 7 · Scheduling: introduction. Leaves: Hand-compute turnaround and response for one three-job workload under FIFO, SJF and STCF, and name the arrival pattern that makes FIFO worst.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 2 · §2.6–2.8 special matrices and vectors, eigendecomposition, the singular value decomposition. Leaves: Eigendecompose a 2x2 symmetric matrix by hand, then take the SVD of a 2x3 matrix that has no eigendecomposition at all, and write the one line on which of the two always exists.
  • System (step 1 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Define the on-disk page format and the WAL record format; write the encoder/decoder and round-trip tests. Measure: A property test that encode(decode(x)) == x for a thousand random records, and the byte size of the page header stated.
  • Open source — logged, not scheduled: nothing logged for this day

Day 3 —

Reverse-mode autodiff, written by hand

  • Paper (AI): Automatic Differentiation in Machine Learning: a Survey — Baydin, Pearlmutter, Radul, Siskind, 2018. Names what reverse mode actually is before you write it, and why the numerical gradient check is the test that matters.
  • Systems chapter: OSTEP, read in chapter order — Ch 8 · The multi-level feedback queue. Leaves: Construct the interactive job that starves under MLFQ without the priority boost — arrivals and burst lengths written out — then show on paper what the boost does to it.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 2 · §2.9–2.12 the Moore-Penrose pseudoinverse, the trace operator, the determinant, and PCA. Leaves: Derive PCA the way §2.12 does — minimise reconstruction error, arrive at the top eigenvectors — and verify it numerically on a three-dimensional cloud you generate. Then write the one line linking §2.9's pseudoinverse to least squares; it is the same argument.
  • System (atomic — whole in the day): Implement a scalar autodiff engine: a Value type with a backward closure per operation, topological ordering, and gradient accumulation. Measure: A finite-difference gradient check agreeing to 1e-6 on a composed expression with at least four operations.
  • Open source — logged, not scheduled: nothing logged for this day

Day 4 —

A scheduler that is a probability distribution, and one that is not

  • Paper (systems): A Fast File System for UNIX — McKusick, Joy, Leffler, Fabry, 1984. Inodes, cylinder groups and the locality argument. Read it against the page layout you froze on day 2 — FFS is the same decision made for a disk that rotates.
  • Systems chapter: OSTEP, read in chapter order — Ch 9 · Scheduling: proportional share. Leaves: Work out the ticket allocation that gives three jobs a 50/30/20 share, then predict how far a hundred-quantum run will drift from it before you run one.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 3 · Probability and information theory, §3.1–3.3 why probability, random variables, probability distributions. Leaves: Write today's lottery scheduler out as a probability distribution — sample space, PMF, what the ticket count is doing to it — and then say in one line why stride scheduling is not a distribution at all, which is exactly why it does not drift.
  • System (atomic — whole in the day): Implement lottery scheduling and stride scheduling over the same ticket allocation, and run both for a hundred quanta and for ten thousand. Measure: Unfairness as the ratio of completion times for two equal-ticket jobs, reported at both run lengths, and stride shown to give the identical schedule across three seeds where lottery does not.
  • Open source — logged, not scheduled: nothing logged for this day

Day 5 —

ferrodb: the write-ahead log

  • Paper (AI): Adam: A Method for Stochastic Optimization — Kingma, Ba, 2015. The other half of this week's SGD-versus-Adam comparison; read the bias-correction argument, not just the update rule.
  • Systems chapter: OSTEP, read in chapter order — Ch 10 · Multiprocessor scheduling. Leaves: Predict what one cache-cold migration costs in cycles from your machine's cache sizes, then measure it by pinning a thread and moving it, and keep both numbers.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 3 · §3.4–3.6 marginal probability, conditional probability, the chain rule. Leaves: Factor one three-variable joint two different ways with the chain rule and show the two agree numerically; then write down the conditional that is undefined, and what the code should do when it reaches it.
  • System (step 2 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Implement the write-ahead log: append, fsync policy, and a replay that is idempotent. Measure: Replay applied twice leaves byte-identical state; the fsync count per commit is measured and stated.
  • Open source — logged, not scheduled: nothing logged for this day

Day 6 — · catch-up

Catch-up — close what the last five days left open

No new chapter, no new system, no new increment. One paper, and whatever slipped: finish the build that ran long, re-run the experiment that surprised you, or write the note you skipped.

  • Paper (systems): Ethernet: Distributed Packet Switching for Local Computer Networks — Metcalfe, Boggs, 1976. Carrier sense, collision detection, exponential backoff — a complete system argued in fifteen pages. A catch-up day is the right day for a paper with nothing to implement.
  • Systems chapter: nothing new scheduled on a catch-up day
  • AI chapter: nothing new scheduled on a catch-up day
  • System: nothing new scheduled on a catch-up day
  • Open source — logged, not scheduled: nothing logged for this day

Day 7 —

Linear and logistic regression, and the optimizer comparison

  • Paper (systems): The Design and Implementation of a Log-Structured File System — Rosenblum, Ousterhout, 1992. The counterargument to FFS, and the one that makes crash recovery cheap. Compare it against the WAL you finished yesterday: both turn a random write into a sequential one.
  • Systems chapter: OSTEP, read in chapter order — Ch 13 · The abstraction: address spaces. Leaves: Print your own program's code, stack and heap addresses, draw the address space they imply, and mark the two places that picture is a lie.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 3 · §3.7–3.9 independence, expectation, variance and covariance, and the common distributions. Leaves: Construct two variables with zero covariance that are plainly dependent, then compute the mean and variance of the Bernoulli and the Gaussian by hand — the two distributions today's logistic and linear regressions are each assuming without saying so.
  • System (atomic — whole in the day): Implement linear and logistic regression on NumPy with your own gradients; train the same model with SGD and with Adam. Measure: A loss curve for both optimizers on the same seed, and a sentence on which converged faster and at what cost.
  • Open source — logged, not scheduled: nothing logged for this day

Day 8 —

The memory API, and the three ways it goes wrong

  • Paper (systems): The Working Set Model for Program Behavior — Denning, 1968. Why page replacement is a locality question. The eviction policy ferrodb's buffer pool gets in three days is an answer to this paper.
  • Systems chapter: OSTEP, read in chapter order — Ch 14 · Interlude: memory API. Leaves: Write the leak, the dangling free and the off-by-one as three five-line programs, run each under a memory checker, and record the exact message each one produces.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 3 · §3.10–3.11 useful properties of common functions, and Bayes' rule. Leaves: Prove the four sigmoid and softplus identities in §3.10 by hand, then rewrite yesterday's logistic loss in terms of softplus and show on paper which of the two forms overflows first. Today is a day about bugs that return a number instead of crashing; this is one.
  • System (atomic — whole in the day): Write an interposing malloc/free shim that records every allocation site and reports leaks, double frees and writes past the end using guard bytes; run it against the three bugs from this morning. Measure: All three are reported with the allocating line, and the shim's added cost per allocation is measured against the real allocator.
  • Open source — logged, not scheduled: nothing logged for this day

Day 9 —

ferrodb: the pager and the buffer pool

  • Paper (AI): Learning Representations by Back-Propagating Errors — Rumelhart, Hinton, Williams, 1986. Four pages. Read it the day after you wrote backprop by hand, not before — it is much better when you already know what it costs.
  • Systems chapter: OSTEP, read in chapter order — Ch 15 · Mechanism: address translation. Leaves: Translate one virtual address to physical by hand under base-and-bounds, then find the two addresses that must trap and say which comparison catches each.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 3 · §3.12 the technical details of continuous variables, and §3.13 self-information and entropy. Leaves: Compute the entropy of three distributions by hand — a fair coin, a biased coin, a point mass — and plot Bernoulli entropy against p; mark where the derivative blows up and say why that matters at the edges of a predicted probability.
  • System (step 3 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Build the pager: fixed-size pages, a free list, and a buffer pool with pin/unpin. Measure: A test that a pinned page is never evicted, and the pool's memory footprint at 1000 pages.
  • Open source — logged, not scheduled: nothing logged for this day

Day 10 —

A two-layer MLP, twice

  • Paper (AI): Multilayer Feedforward Networks are Universal Approximators — Hornik, Stinchcombe, White, 1989. What a two-layer MLP can represent in principle — and why that says nothing about what it will learn. Read it the day you train one.
  • Systems chapter: OSTEP, read in chapter order — Ch 16 · Segmentation. Leaves: Draw the three-segment layout with the stack's growth bit set, compute the physical address of one negative offset by hand, and say exactly what happens when that bit is wrong.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 3 · §3.13 continued: KL divergence and cross-entropy, and §3.14 structured probabilistic models. Leaves: Derive the cross-entropy your MLP minimises today as the KL from the empirical distribution to the model, showing the constant that drops out — then confirm on one real batch that your loss and the KL differ by exactly that constant.
  • System (atomic — whole in the day): Implement a two-layer MLP on your own autodiff, train it on a small classification set, then reproduce it in PyTorch. Measure: The two agree to 1e-4 on the loss after one epoch with the same seed and initialization.
  • Open source — logged, not scheduled: nothing logged for this day

Day 11 —

Free space, and the fragmentation nobody measures

  • Paper (systems): End-to-End Arguments in System Design — Saltzer, Reed, Clark, 1984. The design principle that decides which layer of ferrodb owns the checksum. Answer that question in the note, in the paper's terms.
  • Systems chapter: OSTEP, read in chapter order — Ch 17 · Free-space management. Leaves: Run best-fit, worst-fit and first-fit by hand over one ten-request trace, writing the free list out after every request; keep the trace, it is today's fixture.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 4 · Numerical computation, §4.1 overflow and underflow. Leaves: Make the naive softmax overflow and then underflow on inputs you choose deliberately, implement the shifted version and log-sum-exp, and show all three agreeing on the range where the naive one still works.
  • System (atomic — whole in the day): Implement a free-list allocator with splitting and coalescing and the three placement policies behind one switch; drive all three from the same request trace. Measure: External fragmentation as a percentage of the arena after the trace, per policy, and the first request that fails under each.
  • Open source — logged, not scheduled: nothing logged for this day

Day 12 — · catch-up

Catch-up — rerun the experiment that surprised you

No new chapter, no new system, no new increment. One paper, and whatever slipped: finish the build that ran long, re-run the experiment that surprised you, or write the note you skipped.

  • Paper (AI): Dropout: A Simple Way to Prevent Neural Networks from Overfitting — Srivastava, Hinton, Krizhevsky, Sutskever, Salakhutdinov, 2014. The ensemble interpretation is the part worth arguing with. If your day-14 ablation disagreed with it, say so in the card.
  • Systems chapter: nothing new scheduled on a catch-up day
  • AI chapter: nothing new scheduled on a catch-up day
  • System: nothing new scheduled on a catch-up day
  • Open source — logged, not scheduled: nothing logged for this day

Day 13 —

ferrodb: eviction that respects the log

  • Paper (AI): Understanding the Difficulty of Training Deep Feedforward Neural Networks — Glorot, Bengio, 2010. Where initialization ablations come from. Reproduce one of its activation-variance plots on your own classifier this week.
  • Systems chapter: OSTEP, read in chapter order — Ch 18 · Paging: introduction. Leaves: Walk one virtual address through a linear page table by hand, then compute what that table costs for a 32-bit space with 4 KB pages and say why nobody ships it.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 4 · §4.2 poor conditioning. Leaves: Compute a 2x2 matrix's condition number from its eigenvalues by hand, then build the least-squares problem that loses four decimal digits to it and show them being lost. If §4.2 is too terse to convince you, Prince ch 6 plots the same surface before arguing about it — look once, then come back and write the eigenvalues down.
  • System (step 4 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Add LRU eviction to the buffer pool; assert no dirty page is evicted without a WAL flush. Measure: A test that fails if the assertion is removed — write the failing version first.
  • Open source — logged, not scheduled: nothing logged for this day

Day 14 —

Initialization, optimizers, and the curvature underneath both

  • Paper (AI): Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification — He, Zhang, Ren, Sun, 2015. The correction to Glorot for ReLU nets — a factor of two that decides whether deep stacks train at all. Run both initializations today.
  • Systems chapter: OSTEP, read in chapter order — Ch 19 · Translation lookaside buffers. Leaves: Predict the array stride that destroys TLB hit rate from your page size, then find the cliff with a stride benchmark and report the measured stride against the predicted one.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 4 · §4.3–4.5 gradient-based optimization, the Jacobian and Hessian, constrained optimization, linear least squares. Leaves: Take the Hessian of today's loss at both initializations, get its condition number from the eigenvalues, and say from that number alone which of your two ablations — Glorot against He, SGD against Adam — is fixing curvature and which is only fixing scale. The results table has to agree with the eigenvalues; if it does not, one of the two is wrong and you find out which.
  • System (atomic — whole in the day): Run controlled initialization and optimizer ablations on one small classifier: Glorot versus He, SGD versus momentum versus Adam, three seeds each. Measure: A results table with mean and spread, and one sentence naming the effect that survives the seed noise.
  • Open source — logged, not scheduled: nothing logged for this day

Day 15 —

Page tables that fit, and what the second walk costs

  • Paper (systems): Experience with Processes and Monitors in Mesa — Lampson, Redell, 1980. Why a condition variable wakes into a loop and not into a guarantee. Read it before ferrodb has concurrent readers, not after they deadlock.
  • Systems chapter: OSTEP, read in chapter order — Ch 20 · Paging: smaller tables. Leaves: Compute the memory a two-level table saves over a linear one for an address space with three sparse regions, and the extra memory reference per translation you paid for it.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 5 · Machine learning basics, §5.1–5.2 learning algorithms, capacity, overfitting and underfitting. Leaves: Write out the task, the experience and the performance measure for three things you have already built this summer, in §5.1's terms, then draw the capacity-against-error curve you expect for one of them and keep the drawing to check against later.
  • System (atomic — whole in the day): Build a two-level page table with valid and protection bits at both levels and a walker that faults at either, plus a linear table in the same file as the reference; run one address trace through both. Measure: Every address translates identically in the two, and the table memory of each is reported for an address space with three sparse regions.
  • Open source — logged, not scheduled: nothing logged for this day

Day 16 —

ferrodb: the B-tree, leaves first

  • Paper (AI): Gradient-Based Learning Applied to Document Recognition — LeCun, Bottou, Bengio, Haffner, 1998. LeNet, and the case for learned features over engineered ones. Long — read sections I–III today and stop there.
  • Systems chapter: OSTEP, read in chapter order — Ch 21 · Beyond physical memory: mechanisms. Leaves: Add a present bit and a swap slot to the day-15 walker, then trace one fault end to end — evict, write back, read in, restart — counting the memory and disk accesses that single instruction cost.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 5 · §5.3–5.4 hyperparameters and validation sets, estimators, bias and variance. Leaves: Define the train/validation/test protocol you will use for the next 700 days in writing — split sizes, how seeds are drawn, what is never touched — and derive the bias of the variance estimator you are going to report alongside it.
  • System (step 5 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Implement a B-tree: search and insert on leaf pages only, with a page-split test. Measure: The split test asserts key order across the two resulting pages and that no key was lost.
  • Open source — logged, not scheduled: nothing logged for this day

Day 17 —

im2col, and a CNN that trains

  • Paper (AI): ImageNet Classification with Deep Convolutional Neural Networks — Krizhevsky, Sutskever, Hinton, 2012. The same idea as LeNet fourteen years later with GPUs behind it. Note what changed: scale and engineering, not the concept.
  • Systems chapter: OSTEP, read in chapter order — Ch 22 · Beyond physical memory: policies. Leaves: Run FIFO, LRU, clock and random over one reference string by hand, then construct the string that makes FIFO show Belady's anomaly and show it.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 5 · §5.5–5.6 maximum likelihood estimation, and Bayesian statistics. Leaves: Derive least squares and cross-entropy from maximum likelihood, naming the distributional assumption each one is, then work the same problem as MAP under a Gaussian prior and watch weight decay fall out of it.
  • System (atomic — whole in the day): Implement convolution via im2col on your own autodiff, then train a compact CNN with a clean harness and fixed seeds. Measure: Your im2col output matches a reference conv2d to 1e-5, and the training run is reproducible from the seed alone.
  • Open source — logged, not scheduled: nothing logged for this day

Day 18 — · catch-up

Catch-up — write the note you skipped

No new chapter, no new system, no new increment. One paper, and whatever slipped: finish the build that ran long, re-run the experiment that surprised you, or write the note you skipped.

  • Paper (AI): Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift — Ioffe, Szegedy, 2015. The stated mechanism has since been disputed. Say in your card whether your own evidence supports it — you have run the ablation.
  • Systems chapter: nothing new scheduled on a catch-up day
  • AI chapter: nothing new scheduled on a catch-up day
  • System: nothing new scheduled on a catch-up day
  • Open source — logged, not scheduled: nothing logged for this day

Day 19 —

Virtual memory, assembled end to end

  • Paper (systems): Congestion Avoidance and Control — Jacobson, Karels, 1988. Slow start, RTT estimation, self-clocking. Read it as a control-loop paper — it is the same shape as the group-commit decision ferrodb makes later.
  • Systems chapter: OSTEP, read in chapter order — Ch 23 · Complete virtual memory systems. Leaves: Draw the complete path — translation, TLB, two-level walk, fault, eviction, restart — as one diagram carrying your own function names, and mark the three places VAX/VMS put a policy where you put a constant.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 5 · §5.7–5.8 supervised learning algorithms, and unsupervised learning algorithms. Leaves: Implement one algorithm from each section on the same data — logistic regression and PCA — and write the one sentence about what each is estimating that makes them different problems rather than different code.
  • System (atomic — whole in the day): Join the day-15 walker, a small TLB in front of it and the swap path from day 16 into a single access() entry point, and push a real program's address trace through it. Measure: TLB hit rate, fault count and swap bytes for the trace, every reloaded page byte-identical, and a second run on the same trace producing the same three numbers.
  • Open source — logged, not scheduled: nothing logged for this day

Day 20 —

ferrodb: internal nodes and root splits

  • Paper (AI): Long Short-Term Memory — Hochreiter, Schmidhuber, 1997. The constant error carousel, stated as a fix to a specific failure. Read it before you train the RNN that diverges, and note what the gate is protecting.
  • Systems chapter: OSTEP, read in chapter order — Ch 26 · Concurrency: an introduction. Leaves: Disassemble the counter increment, mark the two instruction boundaries the race lives between, then run the two-thread version until it loses an update and record how many runs that took.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 3 · N-gram language models. Leaves: Compute perplexity by hand on a five-word held-out set, then in code, and get the same number.
  • System (step 6 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Add internal nodes and root splits; property-test that every key is still findable. Measure: Ten thousand random inserts, then every key found; tree height reported against key count.
  • Open source — logged, not scheduled: nothing logged for this day

Day 21 —

A character-level RNN, and why it fails

  • Paper (AI): On the Difficulty of Training Recurrent Neural Networks — Pascanu, Mikolov, Bengio, 2013. Names the exploding and vanishing gradient precisely enough to measure. Gives you clipping, and the reason for it.
  • Systems chapter: OSTEP, read in chapter order — Ch 27 · Interlude: thread API. Leaves: Write create, join and detach as three small programs, including the one whose detached thread outlives main, and record what each does to the exit status.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 5 · §5.9–5.11 stochastic gradient descent, building a machine learning algorithm, and the challenges motivating deep learning. Leaves: Write today's character RNN out as §5.10's four pieces — dataset, cost, model, optimization procedure — and then name which of §5.11's challenges the gradient-norm histogram you measured is evidence of, and which it rules out.
  • System (atomic — whole in the day): Train a character-level RNN on a small corpus; log gradient norm per step, then add clipping and rerun. Measure: The gradient-norm histogram before and after clipping, with the clip threshold justified from it.
  • Open source — logged, not scheduled: nothing logged for this day

Day 22 —

Locks, and what they cost under contention

  • Paper (systems): Development of the Domain Name System — Mockapetris, Dunlap, 1988. A retrospective on a live system: what the design got right, and what caching cost. Read it for the retrospective form — you will write these.
  • Systems chapter: OSTEP, read in chapter order — Ch 28 · Locks. Leaves: Write test-and-set, test-and-test-and-set and a ticket lock as three short loops over the atomic they need, and predict which one starves a thread before you measure it.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 6 · Vector semantics and embeddings. Leaves: Build a term-document matrix on a small corpus and compute PPMI by hand for three word pairs.
  • System (atomic — whole in the day): Implement a test-and-set lock, a test-and-test-and-set lock and a ticket lock over the same critical section, and benchmark all three from 1 to 16 threads. Measure: Throughput against thread count for each, and acquisition fairness as the ratio of most to fewest acquisitions per thread — which is where the ticket lock earns its extra cost.
  • Open source — logged, not scheduled: nothing logged for this day

Day 23 —

ferrodb: delete, merge, and a fuzz loop

  • Paper (AI): A Neural Probabilistic Language Model — Bengio, Ducharme, Vincent, Jauvin, 2003. Distributed word representations and the curse of dimensionality, a decade before it was obvious. This is the baseline word2vec is beating.
  • Systems chapter: OSTEP, read in chapter order — Ch 29 · Lock-based concurrent data structures. Leaves: State the hand-over-hand list's protocol as an invariant — which two locks are held at the moment a node is unlinked — and mark the line of the coarse-grained version it replaces.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 6 · continued: word2vec and skip-gram. Leaves: Derive the skip-gram objective and write why negative sampling is not the same objective.
  • System (step 7 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Implement delete and merge; check the tree invariant after every operation in a fuzz loop. Measure: A million random operations with the invariant checked after each, and the seed of any failure recorded.
  • Open source — logged, not scheduled: nothing logged for this day

Day 24 — · catch-up

Catch-up — land what the last stretch left open

No new chapter, no new system, no new increment. One paper, and whatever slipped: finish the build that ran long, re-run the experiment that surprised you, or write the note you skipped.

  • Paper (systems): Cramming More Components onto Integrated Circuits — Moore, 1965. Three pages, an economic argument rather than a physical law. Worth reading once, properly, instead of quoting.
  • Systems chapter: nothing new scheduled on a catch-up day
  • AI chapter: nothing new scheduled on a catch-up day
  • System: nothing new scheduled on a catch-up day
  • Open source — logged, not scheduled: nothing logged for this day

Day 25 —

word2vec, implemented

  • Paper (AI): Efficient Estimation of Word Representations in Vector Space — Mikolov, Chen, Corrado, Dean, 2013. word2vec. What was thrown away to make it fast is the interesting part, not the analogy arithmetic.
  • Systems chapter: OSTEP, read in chapter order — Ch 30 · Condition variables. Leaves: Produce the missed wakeup with one condition variable over a bounded buffer, then write the two-variable fix and the reason the wait sits inside a while loop and not an if.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 6 · continued: evaluating embeddings. Leaves: Pick one intrinsic and one extrinsic evaluation, run both, and say where they disagree.
  • System (atomic — whole in the day): Train skip-gram with negative sampling on a small corpus, on your own autodiff. Measure: Nearest neighbours for ten hand-chosen words, and one pair where the embedding is clearly wrong.
  • Open source — logged, not scheduled: nothing logged for this day

Day 26 —

Semaphores, built out of what you already have

  • Paper (systems): The Case for the Reduced Instruction Set Computer — Patterson, Ditzel, 1980. Eight pages, and a design argument rather than a specification. Read it now; riscv-vm implements the descendant of this argument in December.
  • Systems chapter: OSTEP, read in chapter order — Ch 31 · Semaphores. Leaves: Derive the two semaphore operations from a mutex and a condition variable on paper, then write the initial value each of the three uses needs — lock, ordering, bounded buffer — and why.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 6 · Deep feedforward networks, §6.1–6.2 the XOR example, and gradient-based learning. Leaves: Derive algebraically why XOR needs a hidden layer, not by appeal to a picture, then work §6.2's output-unit table: for each output unit, the distribution it parameterises and the loss that follows from it. If §6.1 will not open, Prince ch 3 draws the piecewise-linear function first — look, then come back and write the algebra.
  • System (atomic — whole in the day): Implement a semaphore from a mutex and a condition variable, then build a bounded buffer and a reader-writer lock on top of it, both under a thread sanitizer. Measure: The bounded buffer moves a million items with no element lost or duplicated, and writer starvation in the reader-writer lock is measured as a wait time rather than assumed away.
  • Open source — logged, not scheduled: nothing logged for this day

Day 27 —

ferrodb: every mutation logged before it is applied

  • Paper (AI): Neural Machine Translation by Jointly Learning to Align and Translate — Bahdanau, Cho, Bengio, 2015. Attention before transformers, invented to fix a fixed-length bottleneck. Implement this form before the scaled dot-product one.
  • Systems chapter: OSTEP, read in chapter order — Ch 32 · Common concurrency problems. Leaves: Write the two-lock deadlock and an atomicity violation as the two smallest programs that can show them, then give the deadlock a lock-ordering fix and name which of the four conditions it removes.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 9 · RNNs and LSTMs. Leaves: Draw the LSTM cell from memory, then check it against the figure and mark what you got wrong.
  • System (step 8 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Wire the B-tree through the pager so every mutation is logged before it is applied. Measure: An assertion that no page is written without a preceding log record, checked by the harness rather than by review.
  • Open source — logged, not scheduled: nothing logged for this day

Day 28 —

Attention, from the matrix operations up

  • Paper (AI): Effective Approaches to Attention-based Neural Machine Translation — Luong, Pham, Manning, 2015. The controlled comparison of scoring functions — the ablation you would otherwise have to run yourself.
  • Systems chapter: OSTEP, read in chapter order — Ch 33 · Event-based concurrency. Leaves: Write the same worker twice, as threads and as an event loop over a readiness API, and say which one ferrodb wants in terms of what actually blocks in its write path.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 6 · §6.3 hidden units. Leaves: Write the derivative of ReLU, leaky ReLU, maxout and tanh at zero and at saturation, and for each say which of your own trained models it would have stalled — you have four of them now and the gradient logs to check against.
  • System (atomic — whole in the day): Implement scaled dot-product attention and multi-head attention from matrix operations on your own autodiff, with shape tests. Measure: Attention weights sum to one along the right axis, checked as a test; one head visualised on a toy sequence.
  • Open source — logged, not scheduled: nothing logged for this day

Day 29 —

What a path actually resolves to

  • Paper (systems): An Efficient Algorithm for Exploiting Multiple Arithmetic Units — Tomasulo, 1967. Register renaming and reservation stations, 1967. Read it as the first out-of-order design; the pipeline you write in riscv-vm stalls where this one does not.
  • Systems chapter: OSTEP, read in chapter order — Ch 39 · Interlude: files and directories. Leaves: Resolve one absolute path by hand with stat and readdir, naming every inode touched, then make a hard link and a symlink to the same file and write down what each did to the link count.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 6 · §6.4 architecture design: depth, width, and the universal approximation theorem. Leaves: State in two sentences what universal approximation does and does not promise, then count the linear regions of a 2-layer and a 4-layer network at the same parameter count and say which of the two facts the theorem is silent about.
  • System (atomic — whole in the day): Write a resolver that walks a path component by component with openat and readdir, and a tool that prints inode number, link count and size for every entry it touches; run both over a tree you build with hard links, symlinks and one deliberate symlink loop. Measure: The resolver agrees with realpath on a hundred paths in that tree, and the loop is reported as a loop rather than hanging or recursing to the open-file limit.
  • Open source — logged, not scheduled: nothing logged for this day

Day 30 — · catch-up

Catch-up — the ferrodb failure classes, written up

No new chapter, no new system, no new increment. One paper, and whatever slipped: finish the build that ran long, re-run the experiment that surprised you, or write the note you skipped.

  • Paper (AI): Deep Residual Learning for Image Recognition — He, Zhang, Ren, Sun, 2016. The degradation problem is an optimization failure, not an overfitting one. That distinction is the one your own training notes keep getting wrong.
  • Systems chapter: nothing new scheduled on a catch-up day
  • AI chapter: nothing new scheduled on a catch-up day
  • System: nothing new scheduled on a catch-up day
  • Open source — logged, not scheduled: nothing logged for this day

Day 31 —

ferrodb: crash recovery

  • Paper (AI): Language Models are Unsupervised Multitask Learners — Radford, Wu, Child, Luan, Amodei, Sutskever, 2019. GPT-2: the decoder-only stack you implement tomorrow, and the zero-shot claim that made scale the story.
  • Systems chapter: OSTEP, read in chapter order — Ch 40 · File system implementation. Leaves: Work out block by block what open, write and read cost in the vsfs layout — inode bitmap, data bitmap, inode, data — and total the I/Os for creating a five-block file from empty.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 10 · Transformers and large language models. Leaves: Write the causal mask as a matrix and show what changes if you get the off-by-one wrong.
  • System (step 9 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Implement crash recovery: replay the WAL to the last checkpoint, then verify the tree. Measure: Recovery from a log of 10k records timed, and the tree invariant checked after every recovery.
  • Open source — logged, not scheduled: nothing logged for this day

Day 32 —

A causal decoder block that generates

  • Paper (AI): On Layer Normalization in the Transformer Architecture — Xiong et al., 2020. Pre-LN versus post-LN, with the gradient analysis. Decides whether the block you write today needs a warmup schedule.
  • Systems chapter: CS:APP 3e, by section — Ch 1 · A tour of computer systems. Leaves: Follow one hello-world from source to process, naming every artifact the toolchain produced along the way.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 6 · §6.5–6.6 back-propagation and other differentiation algorithms, and the historical notes. Leaves: Draw the computational graph of your day-3 autodiff engine the way §6.5 draws it, mark every place the book's algorithm and your code differ, and say which of those differences is a bug rather than a choice. Twenty-seven days late is the right time to read this: you already know what it cost.
  • System (atomic — whole in the day): Implement a causal decoder block with mask tests and a KV cache for incremental generation. Measure: Generation with and without the cache produces identical tokens, and the per-token time of each is measured.
  • Open source — logged, not scheduled: nothing logged for this day

Day 33 —

What a number actually is on this machine

  • Paper (systems): First Draft of a Report on the EDVAC — von Neumann, 1945. Where the stored-program machine is argued from logic elements up. Read the first twenty pages; you are about to spend a day on how it represents a number.
  • Systems chapter: CS:APP 3e, by section — Ch 2 · §2.1–2.3 information storage and integer arithmetic. Leaves: Write the program that demonstrates signed overflow being undefined and unsigned wrapping being defined.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 2 · Regular expressions, text normalization, edit distance. Leaves: Implement minimum edit distance with the backtrace, not just the score.
  • System (atomic — whole in the day): Write a small suite that demonstrates each integer trap: overflow, sign extension, shift beyond width, and comparison between signed and unsigned. Measure: Every case produces the documented value on your machine, and the one that differs from the standard is named.
  • Open source — logged, not scheduled: nothing logged for this day

Day 34 —

ferrodb: crash injection

  • Paper (AI): Neural Machine Translation of Rare Words with Subword Units — Sennrich, Haddow, Birch, 2016. BPE, and the open-vocabulary problem it was invented for. This is the tokenizer you implement tomorrow.
  • Systems chapter: CS:APP 3e, by section — Ch 2 · §2.4–2.5 floating point. Leaves: Find the smallest float where x + 1 == x, predict it from the format first, then measure.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 2 · continued: byte-pair encoding. Leaves: Run BPE by hand on a ten-word corpus for five merges, and write the merge list out.
  • System (step 10 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Build a crash-injection harness that kills the process at a random fsync and re-opens. Measure: The harness kills at a uniformly random fsync, and every reopen either recovers or reports a named failure class.
  • Open source — logged, not scheduled: nothing logged for this day

Day 35 —

A tokenizer you wrote

  • Paper (AI): SentencePiece: A Simple and Language Independent Subword Tokenizer and Detokenizer for Neural Text Processing — Kudo, Richardson, 2018. What breaks when tokenization assumes whitespace. The reversibility requirement is the design constraint to steal.
  • Systems chapter: CS:APP 3e, by section — Ch 3 · §3.1–3.4 machine-level representation, data movement. Leaves: Compile one function at -O0 and -O2 and diff the assembly; explain three differences.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 2 · continued: normalization and detokenization. Leaves: Write the round-trip test: detokenize(tokenize(s)) == s over a corpus with punctuation and Unicode.
  • System (atomic — whole in the day): Implement a simplified BPE tokenizer: training the merge list, encoding, and exact detokenization. Measure: Round-trip is exact on a corpus with Unicode; vocabulary size versus mean tokens-per-word is plotted.
  • Open source — logged, not scheduled: nothing logged for this day

Day 36 — · catch-up

Catch-up — rerun the last surprising experiment

No new chapter, no new system, no new increment. One paper, and whatever slipped: finish the build that ran long, re-run the experiment that surprised you, or write the note you skipped.

  • Paper (AI): Mixed Precision Training — Micikevicius et al., 2018. Loss scaling and the master-weights copy. Read it before you profile the transformer in a few days — it explains the memory numbers you are about to see.
  • Systems chapter: nothing new scheduled on a catch-up day
  • AI chapter: nothing new scheduled on a catch-up day
  • System: nothing new scheduled on a catch-up day
  • Open source — logged, not scheduled: nothing logged for this day

Day 37 —

Control flow, as the machine sees it

  • Paper (systems): The UNIX Time-Sharing System — Ritchie, Thompson, 1974. Everything is a file, including the device. Read it for how much of an operating system fits in eleven pages.
  • Systems chapter: CS:APP 3e, by section — Ch 3 · §3.5–3.6 arithmetic and control. Leaves: Take one loop, write the assembly you expect, then compile and compare — including which comparison the compiler chose.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 7 · Regularization, §7.1–7.3 parameter norm penalties, norm penalties as constrained optimization, under-constrained problems. Leaves: Show L2 regularization rescaling the parameters along the eigenvectors of the Hessian, in the notation you set up on day 14, and then say what L1 does instead that makes it sparse where L2 is not.
  • System (atomic — whole in the day): Write three small functions in assembly — a loop, a branch, a switch — and verify each against a C reference on random inputs. Measure: All three agree with the C version on ten thousand random inputs.
  • Open source — logged, not scheduled: nothing logged for this day

Day 38 —

ferrodb: a thousand crashes

  • Paper (AI): BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding — Devlin, Chang, Lee, Toutanova, 2019. The encoder you fine-tune shortly, and the masked-LM objective that makes bidirectionality possible.
  • Systems chapter: CS:APP 3e, by section — Ch 3 · §3.7 procedures and the stack. Leaves: Draw the stack frame for a three-deep call by hand, then verify it in a debugger.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 11 · Fine-tuning and masked language models. Leaves: Write why the [MASK] token creates a train/test mismatch, and what BERT does about it.
  • System (step 11 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Run the crash harness a thousand times; fix whatever it finds and write down the failure class. Measure: A table of failure classes with counts, and every one either fixed or written down as a known limitation.
  • Open source — logged, not scheduled: nothing logged for this day

Day 39 —

Train the small transformer, and profile it

  • Paper (AI): RoBERTa: A Robustly Optimized BERT Pretraining Approach — Liu et al., 2019. A replication that found the original was undertrained. The clearest example in NLP of why you rerun the baseline yourself.
  • Systems chapter: CS:APP 3e, by section — Ch 3 · §3.8–3.9 arrays and structures. Leaves: Work out the address arithmetic for a 2-D array access by hand, then check it against the generated code.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 7 · §7.4–7.8 dataset augmentation, noise robustness, semi-supervised and multi-task learning, early stopping. Leaves: Follow §7.8's derivation that early stopping is L2 regularization for a quadratic loss, then find the step at which today's training run would have stopped and state the weight decay that step count is equivalent to.
  • System (atomic — whole in the day): Train the decoder-only model on a small corpus end to end; log loss, gradient norm, memory and tokens per second. Measure: A profile naming the single largest time cost, and one sentence on whether it is compute or memory bound.
  • Open source — logged, not scheduled: nothing logged for this day

Day 40 —

What the optimizer can and cannot do for you

  • Paper (systems): LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation — Lattner, Adve, 2004. Why the IR is the interface. Read it while you are looking at what -O2 did to your loop yesterday.
  • Systems chapter: CS:APP 3e, by section — Ch 5 · §5.1–5.7 optimizing program performance. Leaves: Take one hot loop through code motion, reduction in strength and loop unrolling, timing after each.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 11 · continued: fine-tuning in practice. Leaves: Write the exact split protocol for tomorrow's fine-tune, including the seed and what is held out.
  • System (atomic — whole in the day): Optimize one hot loop by hand through four versions, timing each, then compare against what the compiler does at -O3. Measure: A table of the four timings, and an explanation of the one the compiler beat you on.
  • Open source — logged, not scheduled: nothing logged for this day

Day 41 —

ferrodb: checkpointing

  • Paper (AI): GLUE: A Multi-Task Benchmark and Analysis Platform for Natural Language Understanding — Wang et al., 2019. What a benchmark is trying to be, and the diagnostic set most people ignore. Your evaluation script's error buckets start here.
  • Systems chapter: CS:APP 3e, by section — Ch 6 · §6.1–6.4 the memory hierarchy and cache organization. Leaves: Compute the cache parameters of your own machine from the numbers, then confirm them with a stride benchmark.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 4 · Naive Bayes and sentiment classification. Leaves: Train the Naive Bayes baseline for tomorrow's task. If the encoder cannot beat it, that is the result.
  • System (step 12 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Add checkpointing and WAL truncation; measure recovery time against log length. Measure: Recovery time plotted against log length before and after checkpointing, on the same hardware.
  • Open source — logged, not scheduled: nothing logged for this day

Day 42 — · catch-up

Catch-up — the summer's open branches, closed

No new chapter, no new system, no new increment. One paper, and whatever slipped: finish the build that ran long, re-run the experiment that surprised you, or write the note you skipped.

  • Paper (systems): Dynamo: Amazon's Highly Available Key-value Store — DeCandia et al., 2007. The availability argument for giving up consistency, made concretely and with the operational consequences admitted. Read it before autumn's distributed-systems term.
  • Systems chapter: nothing new scheduled on a catch-up day
  • AI chapter: nothing new scheduled on a catch-up day
  • System: nothing new scheduled on a catch-up day
  • Open source — logged, not scheduled: nothing logged for this day

Day 43 —

Fine-tune an encoder, and report it honestly

  • Paper (AI): Show Your Work: Improved Reporting of Experimental Results — Dodge et al., 2019. Why a single number with a single seed is not a result. This is where your reporting standard comes from, today, not later.
  • Systems chapter: CS:APP 3e, by section — Ch 6 · §6.5–6.7 cache-friendly code. Leaves: Write the two matrix-multiply orderings and measure the cache-miss difference with a profiler.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 4 · continued: evaluation, precision, recall, F1. Leaves: Compute precision, recall and F1 by hand from a confusion matrix before your script prints them.
  • System (atomic — whole in the day): Fine-tune a small encoder on a classification task with fixed splits, three seeds, and the Naive Bayes baseline alongside. Measure: Mean and spread over three seeds, against the baseline, with the seeds recorded in the README.
  • Open source — logged, not scheduled: nothing logged for this day

Day 44 —

What the linker is doing to your program

  • Paper (systems): How To Write Shared Libraries — Drepper, 2011. ELF segments, relocation, the GOT and PLT, from the person who maintained the loader. Sections 1–2 today.
  • Systems chapter: CS:APP 3e, by section — Ch 7 · Linking, §7.1–7.7. Leaves: Produce a duplicate-symbol error and a missing-symbol error deliberately, and read what the linker actually said.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 14 · Question answering and information retrieval. Leaves: Implement BM25 and score five queries by hand against your own toy corpus.
  • System (atomic — whole in the day): Build the same program statically and dynamically; inspect both with a symbol dumper and trace the dynamic loader. Measure: Binary sizes, symbol counts, and the first library call's resolution observed in the trace.
  • Open source — logged, not scheduled: nothing logged for this day

Day 45 —

ferrodb: iterators and snapshots

  • Paper (AI): Sequence to Sequence Learning with Neural Networks — Sutskever, Vinyals, Le, 2014. Encoder-decoder in its first form, fixed-length bottleneck and all. The thing the attention paper on day 27 was fixing.
  • Systems chapter: OSTEP, read in chapter order — Ch 42 · Crash consistency: FSCK and journaling. Leaves: Write the three journal writes in order with the crash point between each pair, and say which of them leaves a state fsck can only repair by guessing.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 14 · continued: dense retrieval. Leaves: State what a dual encoder cannot express that a cross encoder can, with an example query.
  • System (step 13 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Implement iterators: range scan, reverse scan, and a snapshot that does not see later writes. Measure: A concurrent test where the snapshot is opened, writes land, and the scan still returns the old view.
  • Open source — logged, not scheduled: nothing logged for this day

Day 46 —

A retrieval pipeline, with the errors separated

  • Paper (AI): Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer — Raffel et al., 2020. T5, and a systematic ablation across a whole design space. Read it as an experiment design, not as an architecture.
  • Systems chapter: OSTEP, read in chapter order — Ch 43 · Log-structured file systems. Leaves: Compute the cleaner's cost for a segment that is 70 percent live, then set it beside ferrodb's WAL truncation and name the one job LFS has that ferrodb does not.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 14 · continued: evaluating retrieval. Leaves: Compute recall@k and MRR by hand for one query set before your script does.
  • System (atomic — whole in the day): Build a dense-retrieval pipeline over a small corpus: encode, index, retrieve, then a reader on top. Measure: Retrieval error and reader error attributed separately, with the counts of each.
  • Open source — logged, not scheduled: nothing logged for this day

Day 47 —

Flash, and the write amplification underneath everything

  • Paper (systems): A Unified Theory of Garbage Collection — Bacon, Cheng, Rajan, 2004. Tracing and reference counting are duals. Read it as an argument that two things you thought were different are one thing.
  • Systems chapter: OSTEP, read in chapter order — Ch 44 · Flash-based SSDs. Leaves: Compute the write amplification of a page-mapped FTL for a random 4 KB workload on a 256 KB erase block, and say what changes in ferrodb's fsync argument on a device with no seek time.
  • AI chapter: Jurafsky & Martin, Speech and Language Processing 3e — Ch 14 · continued: retrieval-augmented generation. Leaves: Write the three failure modes a RAG system has that a generator alone does not.
  • System (atomic — whole in the day): Simulate a flash device with erase blocks, a page-mapped FTL and a garbage collector, then drive it with a sequential and a random workload. Measure: Write amplification for both workloads, and the over-provisioning fraction at which the random number stops getting worse.
  • Open source — logged, not scheduled: nothing logged for this day

Day 48 — · catch-up

Catch-up — the two repositories, made presentable

No new chapter, no new system, no new increment. One paper, and whatever slipped: finish the build that ran long, re-run the experiment that surprised you, or write the note you skipped.

  • Paper (AI): Scaling Laws for Neural Language Models — Kaplan et al., 2020. The empirical claim that made the last five years look inevitable. Read the fit methodology as carefully as the conclusion.
  • Systems chapter: nothing new scheduled on a catch-up day
  • AI chapter: nothing new scheduled on a catch-up day
  • System: nothing new scheduled on a catch-up day
  • Open source — logged, not scheduled: nothing logged for this day

Day 49 —

ferrodb: MVCC

  • Paper (AI): Dense Passage Retrieval for Open-Domain Question Answering — Karpukhin et al., 2020. The dual encoder your pipeline is a version of, plus the in-batch negatives trick that makes it trainable.
  • Systems chapter: OSTEP, read in chapter order — Ch 45 · Data integrity and protection. Leaves: Add a checksum to ferrodb's page header and decide in writing which layer verifies it — the end-to-end argument from day 11, applied — then produce a misdirected write and show the checksum catching it.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 7 · §7.9–7.11 parameter tying and sharing, sparse representations, bagging and other ensembles. Leaves: Write a convolution out as a dense layer with tied, sparse weights — §7.9's argument, made concrete — as an explicit matrix for one small input, and count the parameters the tying removed.
  • System (step 14 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Add MVCC: per-key version chains and a read timestamp; test with concurrent readers. Measure: A test with readers at three timestamps against a live writer, each seeing exactly its own snapshot.
  • Open source — logged, not scheduled: nothing logged for this day

Day 50 —

RAG, audited

  • Paper (AI): Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks — Lewis et al., 2020. Where retrieval error and generation error separate — the audit you did on day 46, done first here.
  • Systems chapter: OSTEP, read in chapter order — Ch 48 · Distributed systems: an introduction. Leaves: Write ferrodb's failure model down — what can fail, what you assume cannot, and what the client is told in each case — and mark the assumption a network makes false.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 7 · §7.12–7.14 dropout, adversarial training, and tangent propagation. Leaves: Write why dropout is not exactly an ensemble, using the weight-scaling inference rule §7.12 gives, and construct one small model where that approximation is visibly wrong.
  • System (atomic — whole in the day): Take your day-46 pipeline and label fifty failures by cause: retrieval miss, retrieval rank, reader hallucination, or ambiguity. Measure: A count per bucket, and the single change that would fix the largest one.
  • Open source — logged, not scheduled: nothing logged for this day

Day 51 —

Attention is memory-bound

  • Paper (systems): Scalable Parallel Programming with CUDA — Nickolls, Buck, Garland, Skadron, 2008. The execution model — threads, blocks, warps, shared memory — as its designers explain it. Read it before the first kernel, which is next summer.
  • Systems chapter: CS:APP 3e, by section — Ch 6 · §6.6 revisited: the memory mountain. Leaves: Reproduce the memory mountain on your own machine and mark where each cache level ends.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 8 · Optimization for training deep models, §8.1–8.2 how learning differs from pure optimization, and the challenges. Leaves: List §8.2's failure modes — ill-conditioning, local minima, plateaus and saddle points, cliffs, vanishing and exploding gradients, inexact gradients — and write the one diagnostic that tells you it is that one. This is the checklist you use for the next two years, so it has to be yours.
  • System (atomic — whole in the day): Measure memory and time against sequence length for your decoder, then implement one fused operation and rerun. Measure: The measured scaling exponent against the predicted one, and the fusion's effect on both.
  • Open source — logged, not scheduled: nothing logged for this day

Day 52 —

ferrodb: the lock manager

  • Paper (AI): FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness — Dao, Fu, Ermon, Rudra, Ré, 2022. The systems thread and the AI thread meeting: attention is memory-bound, and the fix is tiling, not approximation. You measured this yesterday.
  • Systems chapter: OSTEP, read in chapter order — Ch 49 · Sun's Network File System. Leaves: Trace one client write through a server crash and back, and name the property of each request that made the blind retry safe.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 8 · §8.3 basic algorithms: SGD, momentum, and Nesterov momentum. Leaves: Derive momentum's effective learning rate as a function of the decay coefficient, then run plain SGD, momentum and Nesterov on the same quadratic and check the measured speedup against what the derivation predicted.
  • System (step 15 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Implement a simple lock manager and a write path that detects write-write conflicts. Measure: Two concurrent writers to one key: exactly one commits, and the loser is told why.
  • Open source — logged, not scheduled: nothing logged for this day

Day 53 —

The same result from the algebra instead of the hardware

  • Paper (AI): Self-attention Does Not Need O(n²) Memory — Rabe, Staats, 2021. The same result as yesterday's paper argued from the algebra rather than the hardware. Say in the card which framing you find more useful, and why.
  • Systems chapter: OSTEP, read in chapter order — Ch 50 · The Andrew File System. Leaves: Compare AFS's whole-file caching and callbacks against NFS's per-block protocol on one workload of many small reads, and say which of the two ferrodb's buffer pool resembles.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 8 · §8.4 parameter initialization strategies. Leaves: Re-derive the Glorot and He variances from §8.4 rather than quoting them, mark the assumption each one makes about the nonlinearity, and say which of the two your day-14 ablation actually supported once the seed noise was taken out.
  • System (atomic — whole in the day): Implement the streaming (online) softmax and use it for a memory-bounded attention pass. Measure: Output matches the naive implementation to 1e-5, at measured constant memory in sequence length.
  • Open source — logged, not scheduled: nothing logged for this day

Day 54 — · catch-up

Catch-up — the first lab emails, sent

No new chapter, no new system, no new increment. One paper, and whatever slipped: finish the build that ran long, re-run the experiment that surprised you, or write the note you skipped.

  • Paper (AI): Training Compute-Optimal Large Language Models — Hoffmann et al., 2022. Chinchilla, which corrected the paper you read yesterday by rerunning it properly. Two papers, one lesson about baselines.
  • Systems chapter: nothing new scheduled on a catch-up day
  • AI chapter: nothing new scheduled on a catch-up day
  • System: nothing new scheduled on a catch-up day
  • Open source — logged, not scheduled: nothing logged for this day

Day 55 —

Group commit, and the last measurement

  • Paper (systems): The Google File System — Ghemawat, Gobioff, Leung, 2003. A file system designed around the failure rate of its hardware and the shape of one workload. The clearest example of assumptions stated up front.
  • Systems chapter: OSTEP, read in chapter order — Ch 53 · Introduction to security. Leaves: Write ferrodb's threat model in one paragraph — who the attacker is, what they can reach, what you are not defending — and mark the one place the code currently trusts bytes it did not write.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 8 · §8.5–8.6 algorithms with adaptive learning rates, and approximate second-order methods. Leaves: Write Adam out as a diagonal preconditioner on the Hessian you computed on day 14, and say what that framing predicts about the case where it loses to plain SGD — then find that case in your own logs or admit you have not hit it.
  • System (step 16 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Add group commit; measure the throughput change and explain it from the fsync count. Measure: Throughput against batch size, with the fsync count per commit, and the explanation tied to the two numbers.
  • Open source — logged, not scheduled: nothing logged for this day

Day 56 —

The benchmark that goes in the README

  • Paper (AI): Distilling the Knowledge in a Neural Network — Hinton, Vinyals, Dean, 2015. Soft targets carry more than the label does. Read it as the first serious answer to "make it smaller without making it worse".
  • Systems chapter: OSTEP, read in chapter order — Ch 54 · Authentication. Leaves: Work out why a password file stores a salted hash rather than a hash, with the cost of the offline attack on each written as a number for a ten-million-password list.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 8 · §8.7 optimization strategies and meta-algorithms: batch normalization, coordinate descent, Polyak averaging, curriculum. Leaves: Write the two competing explanations §8.7 gives for why batch normalization helps, then say which one this summer's ablations support and which two of them your setup simply cannot distinguish between.
  • System (step 17 of 20 on ferrodb — crash-recoverable storage engine (Rust)): Benchmark: random and sequential read/write, varying value size; publish a table. Measure: The table, with the machine, the fsync policy and the value sizes stated next to it.
  • Open source — logged, not scheduled: nothing logged for this day

Day 57 —

Summer closes: two repositories someone else could run

  • Paper (AI): LoRA: Low-Rank Adaptation of Large Language Models — Hu et al., 2021. The parameter-efficient method you will actually use during term, when the compute budget is a laptop and an hour.
  • Systems chapter: CS:APP 3e, by section — Ch 8 · §8.1–8.3 exceptional control flow. Leaves: Write the signal-handling program that demonstrates a race with the handler, then fix it correctly.
  • AI chapter: Goodfellow, Bengio & Courville, Deep Learning — Ch 9 · Convolutional networks, §9.1–9.2 the convolution operation, and the motivation. Leaves: Name the three properties §9.2 says convolution buys — sparse interactions, parameter sharing, equivariant representations — and give one case for each where it is the wrong assumption about the data.
  • System (atomic — whole in the day): Write the README for ferrodb and for the transformer repo: interface, invariants, one-command run, benchmark, known limits, and your own contribution stated. Measure: A clean clone on a second machine runs both from the README alone, with nothing added.
  • Open source — logged, not scheduled: nothing logged for this day

Autumn 2026 — days 58–138, to

CSE 446 + 452 term · in term, ~45 hours a week · 81 days

  • Day 58 — : What a data system is being asked for. System: Write the failure model out: what can fail, what you assume cannot, and what the engine promises under each. Then find one promise the code does not actually keep.
  • Day 59 — : ferrodb: the benchmark table. System: Benchmark: random and sequential read/write, varying value size; publish a table.
  • Day 60 — · catch-up: Catch-up — the quarter has started; land what slipped
  • Day 61 — : Linear regression, properly derived. System: Implement ridge and lasso on your own autodiff and on the closed form where one exists; sweep the regularization path.
  • Day 62 — : LSM trees against the B-tree you wrote. System: Build a memtable, an SSTable writer and a two-level compaction; put it behind the same interface as ferrodb.
  • Day 63 — : ferrodb: the profile, and one thing made faster. System: Profile the hot path and cut one allocation or one copy; report the before/after.
  • Day 64 — : Boosting, implemented rather than imported. System: Implement AdaBoost over decision stumps from the paper's pseudocode, not from a library.
  • Day 65 — : Encoding is a compatibility problem. System: Write a round-trip suite that encodes with schema v1 and decodes with v2 and the reverse, across an added, removed and renamed field.
  • Day 66 — · catch-up: Catch-up — rerun whatever surprised you this week
  • Day 67 — : ferrodb: the README that makes it usable. System: Write the README: interface, invariants, how to run the crash harness, and known limits.
  • Day 68 — : An SVM you can explain. System: Implement a linear SVM by solving the dual with a simple SMO or projected-gradient routine, then add the RBF kernel.
  • Day 69 — : Replication: one leader, and what it costs. System: Add a follower that replays ferrodb's WAL stream, and a lag metric; kill the leader mid-stream and measure what the follower is missing.
  • Day 70 — : riscv-vm starts: the instruction set. System: Implement the RV32I integer instruction set with a decoder table and an instruction-level test ROM.
  • Day 71 — : Calibration, and the ML engineering that gets skipped. System: Extend the evaluation harness with reliability diagrams, expected calibration error, and temperature scaling fitted on validation only.
  • Day 72 — · catch-up: Catch-up — write the note you skipped
  • Day 73 — : Partitioning, and the hot key. System: Put a partitioner in front of two ferrodb instances — range and hash, switchable — and route a skewed workload through both.
  • Day 74 — : riscv-vm: traps and CSRs. System: Add the CSR file, traps and exceptions; verify against the official riscv-tests where they apply.
  • Day 75 — : Latent variables, and the model that has them. System: Implement a small VAE end to end: encoder, reparameterization, decoder, and the two loss terms separately logged.
  • Day 76 — : Transactions: what the letters actually promise. System: Write the two-transaction schedules that produce dirty read, non-repeatable read, phantom and write skew against ferrodb's MVCC.
  • Day 77 — : riscv-vm: privilege modes. System: Implement machine and supervisor modes and the trap delegation registers.
  • Day 78 — · catch-up: Catch-up — midterms; the lanes that matter are the reading ones
  • Day 79 — : Diffusion, from the loss backwards. System: Train a small diffusion model on a 2-D toy distribution, with the noise schedule and sampler written by hand.
  • Day 80 — : Unreliable clocks, unreliable networks. System: Implement logical and vector clocks in a small message-passing simulator; produce a pair of concurrent events each detects differently.
  • Day 81 — : riscv-vm: a device, and an interrupt. System: Add a UART device and a timer; boot a bare-metal program that prints and takes an interrupt.
  • Day 82 — : Learning without labels. System: Implement SimCLR's objective — two views, a projection head, NT-Xent — and pretrain a small encoder, then linear-probe it.
  • Day 83 — : Linearizability, defined precisely enough to test. System: Implement a small checker: record a concurrent history of operations against ferrodb and search for a valid linearization.
  • Day 84 — · catch-up: Catch-up — close the open branch on riscv-vm
  • Day 85 — : riscv-vm: Sv32 paging. System: Implement Sv32 paging: page-table walk, TLB, and a fault handler.
  • Day 86 — : Explaining a model you did not design. System: Implement LIME for a tabular classifier: perturbation sampling, local weighting, and a sparse linear surrogate.
  • Day 87 — : Batch processing, and what a job actually guarantees. System: Implement leader election with randomized timeouts against a network simulator that drops and delays messages.
  • Day 88 — : riscv-vm: the allocator underneath a kernel. System: Write a physical page allocator and a kernel heap on top of it.
  • Day 89 — : The quarter's ML artifact takes shape. System: Set up the reproducible skeleton for the course project: fixed seeds, a config file, a results table generated from a single command.
  • Day 90 — · catch-up: Catch-up — write the mentor update you have been putting off
  • Day 91 — : The log is the abstraction. System: Implement AppendEntries with conflict backtracking against a lossy, reordering network simulator.
  • Day 92 — : riscv-vm: processes. System: Implement process control blocks and a round-robin scheduler with a timer tick.
  • Day 93 — : The 446 experiment, run properly. System: Run the full ablation grid for the course project with fixed seeds, three repeats, and results written to a file the report reads from.
  • Day 94 — : Sharding a replicated store. System: Implement a hash ring with virtual nodes and a rebalancing routine; measure key movement when a node joins and leaves.
  • Day 95 — : riscv-vm: system calls. System: Add system calls: write, exit, getpid, and a user-mode trampoline.
  • Day 96 — · catch-up: Catch-up — the quarter is loud; keep the reading lanes only
  • Day 97 — : Transfer learning, in the form that started it. System: Fine-tune the same encoder three ways — all layers, last layer only, gradual unfreezing — on the same split.
  • Day 98 — : Two-phase commit, and what blocks. System: Implement 2PC across two of your shards, then kill the coordinator between prepare and commit and observe the participants.
  • Day 99 — : riscv-vm: fork and copy-on-write. System: Implement fork and exec with copy-on-write pages; test that parent and child diverge.
  • Day 100 — : What the benchmark is not telling you. System: Build three adversarial slices of your evaluation data — negation, length, rare vocabulary — and score every model on each.
  • Day 101 — : Day 101: a filesystem inside your own kernel. System: Add a block device and a minimal filesystem: superblock, inodes, directory lookup.
  • Day 102 — · catch-up: Catch-up — close the open branch on riscv-vm
  • Day 103 — : Attention that does not read everything. System: Implement sliding-window attention with a few global tokens, on your own autodiff, against the dense baseline.
  • Day 104 — : Position, and why it is a design choice. System: Implement sinusoidal, learned and rotary position encodings in the same model and train each on the same data.
  • Day 105 — : Files, descriptors and the interface a program sees. System: Implement open/read/write/close against that filesystem with a file-descriptor table.
  • Day 106 — : The distributed artifact takes its final shape. System: Distil the fine-tuned encoder into a smaller student with soft targets, then ablate the loss terms.
  • Day 107 — : The report, written while the evidence is fresh. System: Produce the reproducible package: fixed seeds, one command, a results table, an ablation, a model card and a limitations section.
  • Day 108 — · catch-up: Catch-up — send the mentor update, and one lab email
  • Day 109 — : A shell inside the kernel you wrote. System: Add a pipe and a shell that can fork, exec and redirect.
  • Day 110 — : Evaluation as infrastructure. System: Build an evaluation runner: scenarios, metrics, per-example records, and a summary table generated from them.
  • Day 111 — : Preference learning, before it is needed. System: Train a Bradley-Terry reward model on pairwise preferences you generate from a known rule, then check what it learned.
  • Day 112 — : A frame in and a frame out. System: Implement virtio-net in the emulator; get a raw frame in and out.
  • Day 113 — : Instruction fine-tuning, read as a systems artifact. System: Implement DPO on the reward-model data from day 111 and compare against supervised fine-tuning on the same preferences.
  • Day 114 — · catch-up: Catch-up — finals; one paper, nothing else
  • Day 115 — : ARP, and the layer boundary that leaks. System: Write the Ethernet and ARP layers; answer an ARP request correctly.
  • Day 116 — : IPv4, implemented rather than described. System: Implement IPv4: header parsing, checksum, fragmentation refused explicitly.
  • Day 117 — : The contact list, and the emails that follow it. System: Build the small relevant artifact that goes with each of two outreach emails — a reproduction, a plot, or a script that runs their code on new data.
  • Day 118 — : What the quarter proved. System: Finish the READMEs, the result tables and the limitations for both quarter artifacts, and push them.
  • Day 119 — : ICMP, and a machine that answers ping. System: Implement ICMP echo; ping your own kernel from the host.
  • Day 120 — · catch-up: Catch-up — land whatever the quarter left open
  • Day 121 — : Finals week: the reading lanes carry it. System: Implement multi-query attention in your decoder and measure KV-cache size and decode latency against the baseline.
  • Day 122 — : The quarter closes; the break is build time. System: Decide and write the break's scope: which riscv-vm steps, which reading, and what "done" means for each.
  • Day 123 — : A socket layer of your own. System: Implement UDP with a socket layer; echo a datagram.
  • Day 124 — : How a large model is actually trained. System: Split a matrix multiply across two processes with an explicit all-reduce, simulating the collective over sockets.
  • Day 125 — : Memory is the constraint, not compute. System: Instrument your training loop to report parameter, gradient, optimizer-state and activation memory separately.
  • Day 126 — · catch-up: Catch-up — the accomplishment ledger for the quarter
  • Day 127 — : The TCP state machine, implemented. System: Implement the TCP state machine: handshake, sequencing, retransmit, teardown.
  • Day 128 — : Serving, as a memory-allocation problem. System: Reimplement your decoder's KV cache as fixed-size blocks with a block table, and support two sequences sharing a prefix.
  • Day 129 — : Decoding faster without changing the answer. System: Implement speculative decoding with a small draft model against your own decoder, with the exact acceptance test.
  • Day 130 — : Congestion control you can measure. System: Add a congestion-control policy and measure it against a lossy link emulator.
  • Day 131 — : Eight bits, and what they cost. System: Implement INT8 weight quantization with per-channel scales for your decoder, and keep the outlier channels in higher precision.
  • Day 132 — · catch-up: Catch-up — the backlog, and one paper worth an unhurried hour
  • Day 133 — : Four bits, and the flagship question. System: For each of the three candidate questions, write the smallest experiment that would tell you whether it is worth a summer.
  • Day 134 — : How fast is the machine you wrote. System: Benchmark instructions per second; profile the interpreter and try a decode cache.
  • Day 135 — : Serving your own model, end to end. System: Put your decoder behind a request queue with continuous batching, and load it with concurrent clients.
  • Day 136 — : The quarter, written down. System: Write the private accomplishment ledger for the quarter: every artifact, what it proves, and what it does not.
  • Day 137 — : The design note: what is faithful and what is not. System: Write the design note: what is faithful to the spec, what is deliberately not, and why.
  • Day 138 — · catch-up: Catch-up — close what is open, then read

Winter break 2026 — days 139–153, to

unblocked build time · free, ~70 hours a week · 15 days

  • Day 139 — : One question for the winter. System: Pick the one question from the flagship shortlist and write its proposal: claim, baseline, ablations, failure modes.
  • Day 140 — : Autumn closes: three repositories, all runnable. System: ferrodb, riscv-vm and the quarter's ML artifact: verify each runs from a clean clone with one command, on a machine that is not yours.
  • Day 141 — : tensorforge opens: a tensor is three numbers and a buffer. System: Step 1, first half: define the tensor as shape, stride, offset over one flat buffer, with views that share storage.
  • Day 142 — : Agreement when a replica lies. System: Implement the oral-messages algorithm for n=4, f=1 with a traitor that sends different values to different peers, and enumerate every assignment of the traitor.
  • Day 143 — : tensorforge: views that lie about memory, correctly. System: Step 1, second half: negative strides, non-contiguous slicing, and a contiguity predicate that is right about both.
  • Day 144 — · catch-up: Catch-up — the break starts slack; take the classic slowly
  • Day 145 — : Logical time, and what a clock can decide. System: Implement vector clocks and a causal-delivery buffer over a network simulator that reorders and delays messages.
  • Day 146 — : A consistent cut of a system that never stops. System: Step 2, first half: broadcasting and reshape, with the shape rules written as a function you can test in isolation.
  • Day 147 — : The chart parser, written rather than imported. System: Implement CKY over a binarized PCFG, then add parent annotation and re-measure on the same development sentences.
  • Day 148 — : tensorforge: the shape algebra, property-tested. System: Step 2, second half: permute and slicing, then property-test the whole shape algebra against NumPy.
  • Day 149 — : A snapshot of your own cluster. System: Implement Chandy-Lamport over the Raft KV store from autumn, taking a snapshot while a write workload runs.
  • Day 150 — · catch-up: Catch-up — pick what the winter is actually for
  • Day 151 — : tensorforge: every elementwise op, one iteration order. System: Implement elementwise kernels on CPU with one generic iteration order that handles arbitrary strides.
  • Day 152 — : A transition parser with a perceptron, and no framework. System: Implement the arc-eager transition system with a static oracle and an averaged perceptron over hand-written features.
  • Day 153 — : CSE 447 begins, and the reduction layer with it. System: Step 4, first half: reductions over a single axis, with keepdims and the identity element per operation.

Winter 2027 — days 154–231, to

CSE 447 term · in term, ~45 hours a week · 78 days

  • Day 154 — : The treebank is the paper. System: Step 4, second half: multi-axis reductions and the backward-facing shape bookkeeping they will need later.
  • Day 155 — : Statistics, done rather than cited. System: Implement the percentile and BCa bootstrap and run both on the accuracy of an autumn model, with the resampling unit being the example.
  • Day 156 — · catch-up: Catch-up — close the autumn repositories properly
  • Day 157 — : Lock-free, and what it actually means. System: Implement a Treiber stack with compare-and-swap, then construct the ABA interleaving deliberately and fix it with tagged pointers.
  • Day 158 — : Features, before the embeddings replaced them. System: Build the sparse-feature logistic-regression baseline for the 447 task before touching a pretrained model, with the feature templates written down.
  • Day 159 — : tensorforge: matmul, and why the naive one is slow. System: Step 5, first half: the naive triple-loop matmul, correct first, with the loop order left deliberately naive.
  • Day 160 — : tensorforge: blocking, and the cache effect made visible. System: Step 5, second half: the blocked matmul, with the block size swept rather than guessed.
  • Day 161 — : A tokenizer that survives a real corpus. System: Train BPE from scratch on the 447 corpus with a proper pre-tokenizer, and make encode/decode exactly invertible on the raw bytes.
  • Day 162 — · catch-up: Catch-up — first week of term; one paper, nothing else
  • Day 163 — : Where the tokenizer is wrong, in a table. System: Build the failure table for your tokenizer: numbers, URLs, code, emoji, non-Latin scripts, and one language the corpus barely contains.
  • Day 164 — : Two tokenizers, one protocol. System: Implement unigram-LM tokenization with EM pruning and compare it against your BPE on the same corpus and the same vocabulary size.
  • Day 165 — : tensorforge: the tape. System: Step 6, first half: the tape itself — node graph, operation records, and a topological order that is stable.
  • Day 166 — : tensorforge: accumulation, and the bug everyone has. System: Step 6, second half: backward accumulation, with a node used twice accumulating rather than overwriting.
  • Day 167 — : The corpus is the experiment. System: Add byte-level fallback to your tokenizer so that no input is ever unrepresentable, and fuzz it with random bytes.
  • Day 168 — · catch-up: Catch-up — the 447 reading pile, cleared
  • Day 169 — : Does the tokenizer change the answer. System: Fine-tune the same small model on the same 447 task under three tokenizers, with everything else held fixed and three seeds each.
  • Day 170 — : Deduplication, and what it does to your numbers. System: Implement MinHash with LSH banding over document shingles and find the near-duplicate clusters in the 447 corpus.
  • Day 171 — : tensorforge: backward for the four that matter. System: Step 7, first half: backward for add and mul, with a numerical gradient check as the acceptance test.
  • Day 172 — : tensorforge: matmul backward, and the transpose you will get wrong. System: Step 7, second half: backward for matmul and sum, derived on paper before it is written.
  • Day 173 — : The datasheet, generated rather than written. System: Write a script that produces the datasheet — sources, sizes, language mix, length distribution, duplicate rate, filter effects — directly from the data.
  • Day 174 — · catch-up: Catch-up — reset the tensorforge branch and the notes
  • Day 175 — : Senses, before contextual embeddings pretended to solve them. System: Sample fifty tokens of five ambiguous words and annotate their senses yourself twice, a day apart, without looking at the first pass.
  • Day 176 — : The most-frequent-sense baseline nobody beats. System: Build the WSD evaluation harness, fill in most-frequent-sense and a nearest-neighbour contextual-embedding system, and score both.
  • Day 177 — : tensorforge: the gradient reduction that breaks everyone. System: Step 8, first half: derive the rule — a gradient must be summed over every axis that broadcasting expanded.
  • Day 178 — : tensorforge: broadcasting gradients, implemented. System: Step 8, second half: implement broadcasting-aware gradient reduction and prove it on the cases you wrote out yesterday.
  • Day 179 — : Who did what to whom, as a labelling problem. System: Build a span-based argument classifier, then run it with and without the dependency-path features from your day-152 parser.
  • Day 180 — · catch-up: Catch-up — midterm week; read and nothing else
  • Day 181 — : Frames, and the inventory problem. System: Build a frame identification baseline using the lexical unit lookup alone, then measure the ceiling a perfect frame identifier would give the argument classifier.
  • Day 182 — : A cache simulator, because the book's numbers deserve checking. System: Write a configurable cache simulator — size, associativity, block size, LRU and random replacement — driven by a memory trace from your own matmul.
  • Day 183 — : tensorforge: softmax that does not overflow. System: Step 9, first half: ReLU and a numerically stable log-sum-exp, with the overflow case constructed deliberately.
  • Day 184 — : tensorforge: cross-entropy, fused and checked. System: Step 9, second half: cross-entropy fused with softmax, and the gradient derived rather than composed.
  • Day 185 — : The cache simulator, made to say something. System: Sweep associativity and replacement policy across three block sizes on your matmul trace, then rerun with the blocked matmul.
  • Day 186 — · catch-up: Catch-up — the tensorforge branch, merged and green
  • Day 187 — : Relation extraction, supervised badly on purpose. System: Build the distant-supervision pipeline end to end — knowledge base alignment, negative sampling, a bag-level classifier — on your own corpus.
  • Day 188 — : The fine-tuning harness, built once and reused all quarter. System: Build the harness: a config file per run, fixed seeds, logged metrics per step, checkpoint selection stated, and results appended to one file.
  • Day 189 — : tensorforge: an MLP trained on nothing you did not write. System: Step 10, first half: the data loader, the two-layer model and the training loop, on your own autograd only.
  • Day 190 — : tensorforge: it learns, and the number says so. System: Step 10, second half: your own SGD with momentum, and MNIST trained to a number worth quoting.
  • Day 191 — : One seed is not a result. System: Run the 447 fine-tuning task under ten seeds through your harness, with no other change, and plot the distribution of the metric.
  • Day 192 — · catch-up: Catch-up — write the mentor update you have been postponing
  • Day 193 — : A branch predictor, simulated against a real trace. System: Write bimodal, gshare and tournament predictors, driven by a branch trace dumped from your riscv-vm interpreter loop.
  • Day 194 — : The predictor that learns, and the threshold that decides. System: Add a perceptron predictor to yesterday's simulator and compare all four at equal hardware budget rather than equal table count.
  • Day 195 — : tensorforge: the device appears. System: Step 11, first half: CUDA device memory, host-device copies, and one elementwise kernel that is correct.
  • Day 196 — : tensorforge: the first kernel that is yours. System: Step 11, second half: the full elementwise family on device, with a launch-configuration sweep.
  • Day 197 — : Coreference as span scoring. System: Implement span enumeration, width-limited pruning and antecedent scoring over a frozen encoder, trained on a small OntoNotes subset.
  • Day 198 — · catch-up: Catch-up — the term is loud; keep the reading only
  • Day 199 — : The metric disagrees with itself. System: Implement MUC, B-cubed and CEAF yourself from their papers, and score the same system output with all three.
  • Day 200 — : Reading a codebase you did not write. System: Run the lab's released pipeline end to end on your own small dataset, fixing whatever breaks, and keep a log of every fix.
  • Day 201 — : Where the mention detector is wrong, bucketed. System: Bucket your mention detector's errors by span length, mention type, nesting depth and whether the head is a pronoun.
  • Day 202 — : tensorforge: a tiled GEMM, written honestly. System: Step 12, first half: a tiled CUDA GEMM with shared-memory staging, correct before it is fast.
  • Day 203 — : tensorforge: the gap to cuBLAS, stated in a number. System: Step 12, second half: measure against cuBLAS across shapes, and diagnose the gap rather than excuse it.
  • Day 204 — · catch-up: Catch-up — the annotation backlog, cleared
  • Day 205 — : The coreference number, produced by a script. System: Wrap the official scorer, your own metric implementations and the data preparation into a single reproducible evaluation entry point.
  • Day 206 — : Coherence, and the baseline that is embarrassingly hard to beat. System: Build the sentence-ordering discrimination task from your own corpus and score a centering-transition baseline against a neural one.
  • Day 207 — : The entity grid, implemented. System: Implement the entity grid with syntactic role and salience, then ablate each feature on the ordering task from yesterday.
  • Day 208 — : Discourse relations, shallow but annotatable. System: Train a four-way implicit-relation classifier and compare it against the explicit-connective classifier on the same relation set.
  • Day 209 — : An annotation tool built for one real task. System: Build the tool: span selection, the label set from your guideline, keyboard-first interaction, per-item timing, and an append-only store with annotator identity.
  • Day 210 — · catch-up: Catch-up — one long walk and one paper
  • Day 211 — : The update email, and the artifact that makes it worth reading. System: Produce the single self-contained page the email points at: the question, the table, the plot, the command that regenerates both.
  • Day 212 — : Agreement, computed properly. System: Have two people annotate the same hundred items with your tool, then compute Cohen's kappa, Krippendorff's alpha and per-label agreement.
  • Day 213 — : A pilot batch, and what it costs. System: Run a fifty-item pilot with embedded gold checks and two annotators per item, then compute the aggregation with a simple worker model.
  • Day 214 — : Three papers from one group, read as one line of work. System: Pick one table from one of those papers, and write down exactly which rows you will reproduce, on what data, at what scale, and what counts as agreement.
  • Day 215 — : Dialogue, and the metric that keeps not working. System: Build the evaluation: static context sets, per-turn model responses, an automatic metric, and a rating interface for the human track.
  • Day 216 — · catch-up: Catch-up — the project is due soon; read and sleep
  • Day 217 — : Task-oriented dialogue, where the metric is real. System: Implement a slot-filling state tracker for one MultiWOZ domain and score it with joint goal accuracy and per-slot accuracy.
  • Day 218 — : The replication: data, exactly as they had it. System: Reproduce their preprocessing exactly — splits, filtering, casing, tokenization — and diff your example counts against the ones in the paper.
  • Day 219 — : The replication: the baseline row. System: Run their baseline configuration under your harness with three seeds and put the number next to theirs in the same table.
  • Day 220 — : Reading the evaluation code, not the paper. System: Run their evaluation code and your harness's evaluation over one identical prediction file and reconcile the two numbers.
  • Day 221 — : The replication: the row you expected to disagree. System: Run the configuration whose result you doubt, at the same three seeds, and record it whether or not it agrees.
  • Day 222 — · catch-up: Catch-up — the annotation guideline, revised once more
  • Day 223 — : Error buckets, defined before they are counted. System: Bucket every error in the replicated system by the categories you defined this morning, with the bucketing done by a script from a rule file.
  • Day 224 — : Tests, not just metrics. System: Write invariance, directional and minimum-functionality tests for your task, generated from templates rather than hand-written.
  • Day 225 — : A results log a stranger can read. System: Backfill every run of the replication into one append-only log, and generate the report's table directly from it.
  • Day 226 — : The error analysis that changes the claim. System: Rewrite your bucketing as queries over the full prediction set, and re-run every claim in your draft against them.
  • Day 227 — : The claim, made falsifiable. System: Write the report: claim, method, the table, the error analysis, and the limitations section drafted before the results section.
  • Day 228 — · catch-up: Catch-up — sit with the thing you are least sure of
  • Day 229 — : The component, handed to someone who did not build it. System: Have someone in the group run your evaluation component from a clean clone against their own model, and fix everything they hit without helping them.
  • Day 230 — : Significance, computed once and reported honestly. System: Run the appropriate significance test on each of the quarter's system comparisons, with the multiple-comparison correction applied once across all of them.
  • Day 231 — : The winter closes: a component, a replication, and a log. System: Write the ledger — the evaluation component, the replication, the results log, the annotated data, tensorforge through the first CUDA kernels — each with a link and one number, then write the half-page proposal for what spring does next.

Spring break 2027 — days 232–237, to

unblocked build time · free, ~70 hours a week · 6 days

  • Day 232 — : Spring break: one thing, and the one thing is the GEMM. System: First half of the step: stage the A and B tiles through shared memory with a double-buffered load, so the global loads overlap the compute.
  • Day 233 — : Register blocking, and the number that finally moves. System: Second half: give each thread a 4x4 register tile, re-measure, and attribute each gain to one change rather than to the pair.
  • Day 234 — · catch-up: Catch-up — the break ends; read the argument, not the manual
  • Day 235 — : The roofline of a kernel you actually wrote. System: Compute arithmetic intensity by hand for the GEMM, the elementwise kernels and the reduction; measure achieved GFLOP/s and GB/s for each; place all of them on one plot.
  • Day 236 — : What the winter quarter left open, closed. System: Take the two artifacts the winter quarter left half-finished, fix the README, pin the versions, and have one other person run both from a clean clone.
  • Day 237 — : The quarter, scoped before it can scope you. System: Decide and write the quarter: which tensorforge steps, which inferd steps, which component becomes the invariant-bearing artifact, and what the proposal has to contain by day 315.

Spring 2027 — days 238–315, to

CSE 451 + 331 term · in term, ~45 hours a week · 78 days

  • Day 238 — : The term opens: two courses, one machine. System: Implement a fused bias+activation epilogue; measure the memory-traffic saving.
  • Day 239 — : A feature that survives being looked at twice. System: Implement the Harris and Shi-Tomasi responses over the same scale-space, with subpixel refinement of the maxima.
  • Day 240 — · catch-up: Catch-up — clear the backlog, then read the shortest terrifying paper there is
  • Day 241 — : Scheduling, stated as a policy before it is written as code. System: Implement lottery and stride scheduling over the same workload of weighted threads, with a compensation ticket path for threads that block.
  • Day 242 — : A softmax that reads its input once. System: Write a fused softmax kernel with one pass for max and sum.
  • Day 243 — : Virtual memory, from the fault upward. System: Build a demand-paged region with userfaultfd: a fault handler, a shadow page table, and copy-on-write on the first write to a shared page.
  • Day 244 — : The page-replacement policy, measured against the oracle. System: Implement FIFO, clock, LRU and Belady's OPT over a reference trace you captured from a real program.
  • Day 245 — : Layernorm, backward as well as forward. System: Implement layernorm forward and backward as fused kernels.
  • Day 246 — · catch-up: Catch-up — the long one, read properly rather than skimmed again
  • Day 247 — : A pool that steals rather than waits. System: Implement a Chase-Lev deque per worker with stealing on empty, and run a recursive fork-join workload over it.
  • Day 248 — : Filtering in the frequency domain, and when it pays. System: Implement direct convolution and FFT-based convolution over the same images and sweep the kernel size.
  • Day 249 — : An allocator you can actually measure. System: Implement a segregated-fit allocator with per-thread caches, then run it, glibc malloc and mimalloc over the same recorded allocation trace.
  • Day 250 — : Weights, packed the way the kernel wants them. System: First half of the step: pack INT8 and INT4 weights into the layout the kernel wants, and write the packer's round-trip test.
  • Day 251 — : Dequantize inside the kernel, not before it. System: Second half: dequantize inside the matmul so the INT weights never materialise in fp16.
  • Day 252 — · catch-up: Catch-up — send the mentor update, then read what a spec buys you
  • Day 253 — : The filesystem, from the on-disk structure up. System: Implement a hashed directory index over your own on-disk format, with the invariant written first: every committed entry is reachable after recovery from any crash point.
  • Day 254 — : Detection, in the form that ran on a 2001 CPU. System: Train a boosted cascade over Haar-like features with integral images, for one object class.
  • Day 255 — : Quantization costs accuracy; say how much, per layer. System: First half of the step: measure accuracy loss from INT8 and INT4 on a real model, per layer.
  • Day 256 — : The quantization plot, with a knee on it. System: Second half: plot accuracy against speedup across every quantization configuration you can run.
  • Day 257 — : Fitting a model to points that are mostly wrong. System: Implement RANSAC over point correspondences with a normalised DLT estimate and a final least-squares refit on the inliers.
  • Day 258 — · catch-up: Catch-up — the term is loud; keep the reading lane and nothing else
  • Day 259 — : A profiler you wrote, for kernels you wrote. System: First half of the step: build the timing side of the profiler — per-kernel wall time, with a measurement protocol that is stable.
  • Day 260 — : Occupancy and bandwidth, reported rather than guessed. System: Second half: add occupancy and achieved bandwidth, computed from the launch geometry and the bytes each kernel must move.
  • Day 261 — : Stereo, and the cost volume underneath it. System: Implement rectified block matching with SSD costs, a left-right consistency check and subpixel disparity refinement.
  • Day 262 — : The worst kernel, diagnosed rather than rewritten. System: Use the profiler to find the worst kernel and fix it; write the diagnosis down.
  • Day 263 — : An event loop, and the syscall it is built on. System: Build an epoll event loop with edge-triggered sockets and a fair-drain policy, and a select-based loop for comparison.
  • Day 264 — · catch-up: Catch-up — the first quantum paper, read ahead of any building
  • Day 265 — : Optical flow, two ways, on the same pair. System: Implement both on a synthetic sequence with known flow, with a pyramid on the Lucas-Kanade version.
  • Day 266 — : The storage component gets its invariant. System: Implement an append-only segment with checksummed records and a recovery scan, and state the invariant as one sentence before writing the recovery.
  • Day 267 — : tensorforge, finished and readable by a stranger. System: Write the README with a one-command benchmark and a table against a real baseline.
  • Day 268 — : Structure from motion, understood before it is called. System: Estimate the essential matrix from matches, recover pose, triangulate, and refine both cameras and points with a small bundle adjustment.
  • Day 269 — : A benchmark that is not quietly lying to you. System: Profile the segment writer: where wall time goes between memcpy, checksum, allocation and fsync, under two workloads.
  • Day 270 — · catch-up: Catch-up — one paper, and it is about your own benchmarks
  • Day 271 — : inferd opens: a checkpoint is a file format. System: First half of the step: parse the safetensors header and map every tensor without copying it.
  • Day 272 — : Logits that match, to the last decimal you are entitled to. System: Second half: run a single forward pass and match Hugging Face logits.
  • Day 273 — : Evaluation code is code, and it has bugs. System: Implement IoU, non-maximum suppression and mean average precision from their definitions, then diff against a reference implementation on the same predictions.
  • Day 274 — : The tokenizer is where the bug will actually be. System: Implement the tokenizer path and verify token-for-token against the reference.
  • Day 275 — : The vision book closes; keep one baseline from it. System: Train and record one small detection baseline with a fixed split, fixed seeds, and a one-command evaluation you will reuse all summer.
  • Day 276 — · catch-up: Catch-up — the second quantum paper, still reading ahead of building
  • Day 277 — : Greedy decoding, which has to be boring. System: Implement greedy decoding; check the output matches the reference for a fixed prompt.
  • Day 278 — : Bandits: the smallest decision worth studying. System: Implement the 10-armed testbed with epsilon-greedy, optimistic initialisation, UCB and the gradient bandit, 2000 runs each.
  • Day 279 — : Hennessy & Patterson opens: what the machine does between your instructions. System: Write three loops with identical instruction counts and different dependence chain lengths; measure IPC with hardware performance counters.
  • Day 280 — : Branch prediction is a learning problem in disguise. System: Implement bimodal, gshare and a perceptron predictor over a branch trace you captured from one of your own programs.
  • Day 281 — : The KV cache, and the memory it costs. System: Add a KV cache; measure the per-token latency change and the memory cost.
  • Day 282 — · catch-up: Catch-up — read the paper that re-ran a whole field's experiments
  • Day 283 — : Dynamic programming, when you are given the model. System: Implement both on a stochastic gridworld, instrumented so that sweeps, backups and wall time are all counted.
  • Day 284 — : Speculation, and the two attacks that read across it. System: Implement Flush+Reload over a shared read-only page and recover a secret-dependent access pattern from a victim process you wrote.
  • Day 285 — : Monte Carlo, when the model is gone. System: Implement first-visit MC prediction and MC control with exploring starts, and render the value surface for usable and unusable aces.
  • Day 286 — : Paged attention: the allocator comes first. System: First half of the step: implement the block table and the block allocator for paged attention.
  • Day 287 — : Off-policy, and the variance it hides in the tail. System: Estimate the value of a target policy from behaviour-policy data with ordinary and weighted importance sampling on the same trajectories.
  • Day 288 — · catch-up: Catch-up — the third quantum paper; a speedup that is not exponential
  • Day 289 — : Attention over pages rather than over an array. System: Second half: make the attention kernel read K and V through the block table.
  • Day 290 — : Bootstrapping, and the argument for it. System: Implement both on the 19-state random walk and sweep the step size, averaging over a hundred runs.
  • Day 291 — : The cliff, and the policy that is afraid of it. System: Implement both on cliff walking with an identical exploration schedule and identical seeds.
  • Day 292 — : n-step, and the parameter nobody tunes. System: Implement n-step TD prediction and n-step SARSA and sweep both n and the step size on one task.
  • Day 293 — : Continuous batching: the scheduler returns, one layer up. System: Add continuous batching: a scheduler that admits and evicts sequences mid-flight.
  • Day 294 — · catch-up: Catch-up — the testing idea that is worth more than a hundred unit tests
  • Day 295 — : Sharing a cache line by accident. System: Write a counter array touched by N threads three ways: unpadded, padded to a cache line, and accumulated per thread with a final reduction.
  • Day 296 — : A world that changes while you are planning in it. System: Implement Dyna-Q and Dyna-Q+ on the blocking maze and the shortcut maze from the book.
  • Day 297 — : Multicore, put together, and a curve you can explain. System: Scale the storage component from 1 to 16 threads, measure, then attribute the shortfall to lock contention, coherence traffic or I/O.
  • Day 298 — : PMPP opens: the programming model the hardware wants. System: Implement tile coding with configurable tilings and offsets, then run semi-gradient TD on a continuous two-dimensional task.
  • Day 299 — : Prefill and decode are two different programs. System: Implement prefill/decode separation and measure the two phases independently.
  • Day 300 — · catch-up: Catch-up — the fourth quantum paper, and it is not about computers
  • Day 301 — : Day 301: the proposal starts as one sentence. System: Write the claim three ways — as a systems claim, as a learning claim, and as a measurement claim — and the experiment that would falsify each.
  • Day 302 — : Semi-gradient control, and the divergence you must respect. System: Implement it over your tile coding, with five seeds and an evaluation protocol fixed before the first run.
  • Day 303 — : Baselines, chosen before the method exists. System: Name three baselines for the claim that survived, say which one is the honest strongest, and run the cheapest of them today.
  • Day 304 — : Sampling, and the seed that turns it into a test. System: First half of the step: implement temperature, top-k and top-p sampling against the reference implementation.
  • Day 305 — : A kernel with an ablation, not an anecdote. System: Ablate your best kernel one change at a time: no shared-memory tiling, no register blocking, no coarsening, no vectorised loads.
  • Day 306 — · catch-up: Catch-up — where the word invariant came from
  • Day 307 — : Reproducible sampling, which is harder than it sounds. System: Second half: add the seeded reproducibility test across the whole sampling path.
  • Day 308 — : The invariant, tested rather than asserted. System: Write property tests for the segment store: any prefix of the log recovers, no recovered state contains a torn record, and recovery is idempotent.
  • Day 309 — : Ablations, designed before they are run. System: Write the ablation table for the surviving claim, empty, with the GPU-hours each row costs beside it.
  • Day 310 — : The proposal, handed to two people who will disagree. System: Give the proposal to two readers — one who knows systems, one who knows learning — and record every objection verbatim, without answering any of them in the room.
  • Day 311 — : Narrowing, which means deleting. System: Cut the proposal to a single claim, one baseline set and three ablations; move everything else to an appendix rather than deleting it.
  • Day 312 — · catch-up: Catch-up — the last quantum paper, and the honest state of the field
  • Day 313 — : The term's end state, assembled into one repository. System: Assemble the term's storage and kernel work into one repository: the invariant stated in the README, the property tests, the crash harness, the benchmark and the profile.
  • Day 314 — : Finals week: the reading lanes carry it. System: Produce one table across every artifact this term: what was measured, on what hardware, with which command, on which date.
  • Day 315 — : The term closes; the summer is the flagship, chosen from the proposal. System: Write the flagship plan: the claim, the baselines, the ablations, the hardware, and week-by-week milestones with the first week specified to the day.

Summer 2027 — days 316–420, to

flagship ML-systems project · free, ~70 hours a week · 105 days

  • Day 316 — : The summer has one claim; write it down before any code. System: Write the claim inferd is meant to support, the metric that would falsify it, the workloads, the two baselines, the seeds, and the stopping rule. One page, committed before any of this summer's code.
  • Day 317 — : inferd: a draft model proposes, the target model verifies. System: First day on step 9: wire in a small draft model, generate gamma draft tokens, and run the target model once across all of them in a single forward pass.
  • Day 318 — · catch-up: Catch-up — close the week, and read the paper that frames the third destination
  • Day 319 — : The baseline is measured before your own number exists. System: Install vLLM, run it on the day-316 workload at three concurrency levels, and record throughput, p50/p95/p99, the exact commit, the driver version and the machine.
  • Day 320 — : inferd: acceptance without changing the distribution. System: Second day on step 9: implement the modified rejection sampler so that accepted tokens are distributed exactly as the target model alone would have produced them.
  • Day 321 — : Alignment, with the traceback and not just the score. System: Implement Needleman-Wunsch, Smith-Waterman and affine gaps over a real protein pair, with the traceback.
  • Day 322 — : Atomics, privatization, and a kernel that is nothing but memory. System: Implement a GPU histogram naively with global atomics, then with per-block privatization, then with aggregation of repeated values; time all three at two contention levels.
  • Day 323 — : inferd: what fraction of the draft survives. System: Third day on step 9: measure acceptance rate against gamma and against prompt type, and find the gamma that maximises tokens per second rather than acceptance.
  • Day 324 — · catch-up: Catch-up — finish what the block left open, then read
  • Day 325 — : Viterbi, forward-backward, and the underflow that eats them. System: Implement Viterbi, forward, backward and posterior decoding for a CpG-island model; do it once in probability space and once in log space.
  • Day 326 — : inferd: weights that are four bits wide. System: First day on step 10: load INT8 and INT4 quantized checkpoints, with the group-wise scales and zero points, and dequantize inside the matmul rather than materialising the weights.
  • Day 327 — : Every figure regenerates from raw logs, or it is not a figure. System: Build the figure pipeline: raw measurements land as append-only JSON lines, a single make target turns them into every plot, and no plot is ever edited by hand.
  • Day 328 — : A reduction that reaches the bandwidth it should. System: Measure peak bandwidth and peak FLOPs on your GPU with microbenchmarks, draw the roofline, and place the convolution, stencil, histogram and reduction kernels on it.
  • Day 329 — : inferd: what four bits cost in quality. System: Second day on step 10: measure quality against throughput for FP16, INT8 and INT4 on the same prompts, with perplexity and a task metric, three seeds each.
  • Day 330 — · catch-up: Catch-up — the block that ran long, and one paper
  • Day 331 — : The number is a mean and a spread or it is not a number. System: Rewrite the benchmark runner so every measurement is a set of repeats: n runs, a seed per run, warm-up discarded, and mean plus a bootstrap confidence interval written into the results file.
  • Day 332 — : inferd: two devices, and the collectives between them. System: First day on step 11: split the attention heads and the MLP across two devices, and place the all-reduce where the mathematics requires rather than where it is convenient.
  • Day 333 — : A profile HMM for one protein family. System: Build a profile HMM from a Pfam seed alignment, implement the Viterbi and forward scores against it, and search a small database.
  • Day 334 — : Sorting, and the pattern underneath every scheduler. System: Implement a multi-pass radix sort using your own scan for the digit offsets, and compare against a library sort on the same keys.
  • Day 335 — : inferd: the collective is the cost. System: Second day on step 11: measure the two-device configuration against one device — tokens per second, and the fraction of step time spent in collectives.
  • Day 336 — · catch-up: Catch-up — rerun whatever surprised you, then read
  • Day 337 — : The ablation is designed before it is run. System: Write the ablation grid for step 9 before running it: draft model size, gamma, batch size, prompt length, and which of them you expect to interact. Predict the sign of each effect in writing.
  • Day 338 — : inferd: three devices worth of behaviour on the hardware you have. System: Third day on step 11: if a second device is not available, simulate the partition and model the collectives from measured link bandwidth; state plainly in the README which numbers are measured and which are modelled.
  • Day 339 — : Phylogeny, and a tree you can put an error bar on. System: Implement Felsenstein pruning for a small alignment under a simple substitution model, optimize branch lengths, and bootstrap the tree.
  • Day 340 — : Sparse matrices, where the format is the algorithm. System: Implement sparse matrix-vector multiply in CSR, ELL and hybrid ELL-COO, and run all three on matrices with very different row-length distributions.
  • Day 341 — : inferd: an API somebody else can call. System: First day on step 12: an OpenAI-compatible HTTP endpoint — chat completions, the request and response schemas, and server-sent-event streaming of tokens.
  • Day 342 — · catch-up: Catch-up — the grid that ran long, and one paper
  • Day 343 — : Contacts out of a multiple alignment, the way it was done before AlphaFold. System: Build an MSA for one protein family, compute mutual information between columns, apply average-product correction, and compare the top-L predicted contacts against the true contact map from the PDB structure.
  • Day 344 — : inferd: streaming, cancellation, and the clock at the socket. System: Second day on step 12: client disconnection cancels the sequence and frees its blocks, and time-to-first-token and inter-token latency are measured at the socket rather than inside the engine.
  • Day 345 — : The ablation, run exactly as designed. System: Run the day-337 grid: draft size x gamma x batch size x prompt length, three seeds per cell, results written by the day-331 harness.
  • Day 346 — : The convolution layer, from both ends. System: Implement forward and backward convolution as matrix multiplies, then compare against cuDNN with algorithm selection turned off and then on.
  • Day 347 — : inferd: a load generator that does not lie to you. System: First day on step 13: an open-loop load generator with a Poisson arrival process, a prompt-length distribution taken from a real trace, and coordinated-omission correction in the latency accounting.
  • Day 348 — · catch-up: Catch-up — write the note you skipped, then read
  • Day 349 — : Twists, screws, and the algebra that makes a robot arm one object. System: Implement SO(3) and SE(3): matrix exponential and logarithm, adjoint, twist and wrench transforms, with property tests.
  • Day 350 — : The same loop nest, scheduled four ways. System: Take the MRI reconstruction kernel and write four versions differing only in loop order, tiling, and what is precomputed; time all four and record the schedule as data rather than as code comments.
  • Day 351 — : Forward kinematics for a real arm, from a URDF. System: Parse a real 6-DOF arm's URDF, build the screw axes, and implement forward kinematics in both space and body form.
  • Day 352 — : Scatter or gather, and the memory system decides. System: Implement the potential-map computation both ways, with the scatter version using atomics, and measure both at three atom densities.
  • Day 353 — : inferd: the ninety-ninth percentile is a different system. System: Second day on step 13: sweep concurrency and report throughput with p50, p95 and p99 latency, separating time-to-first-token from inter-token latency.
  • Day 354 — · catch-up: Catch-up — the report that ran long, and one paper
  • Day 355 — : The Jacobian, and the configuration where the arm loses a direction. System: Compute the Jacobian across the workspace of a planar 3R arm and plot the manipulability measure and the ellipsoid at a grid of configurations.
  • Day 356 — : inferd: the load-generator report. System: Third day on step 13: write the throughput-latency report — every point with its interval, the workload definition, and the exact command that reproduces it.
  • Day 357 — : Numerical inverse kinematics, and where it refuses to converge. System: Implement Newton-Raphson IK on your 6-DOF arm, then add Levenberg-Marquardt damping, and run both from a thousand random seeds toward reachable and unreachable targets.
  • Day 358 — : A scanner, and the beginning of the other half of the summer. System: Implement the scanner and the expression AST for a Lox-sized language, with a printer that round-trips source to tokens to tree to source.
  • Day 359 — : inferd: where the curve bends. System: First day on step 14: sweep arrival rate against throughput until the curve flattens, and instrument GPU utilization, memory bandwidth, KV-cache occupancy and queue depth at every point.
  • Day 360 — · catch-up: Catch-up — the post-mortem, finished properly, and one paper
  • Day 361 — : The speculative-decoding win does not survive a realistic batch size. System: Rerun the day-345 speculative-decoding win at the batch sizes the day-359 knee says are realistic. It disappears, because at those batch sizes the target model is already compute-bound and the free capacity speculation was spending has gone. Reproduce it cleanly, three seeds, and write down exactly what the earlier measurement was measuring.
  • Day 362 — : The day after: is the claim wrong, or is it narrow?. System: Write the failure up: what was claimed, what the confound was, which regime the claim survives in. Then change the harness so that no benchmark can be run without recording batch size and arrival rate alongside the number, and re-run one earlier result to prove the guard works.
  • Day 363 — : inferd: which resource gives out first. System: Second day on step 14: name the resource that saturates at the knee and prove it — raise the ceiling on that one resource alone and show the knee moves.
  • Day 364 — : Statements, environments, and who owns a name. System: Add statements, variables and block scope to the interpreter, and build the test runner that executes a directory of programs against expected output.
  • Day 365 — : inferd: the system prompt everybody shares. System: First day on step 15: a radix-tree prefix cache over KV blocks, with reference counting so a shared prefix is not evicted while a sequence still needs it.
  • Day 366 — · catch-up: Catch-up — the planner benchmark that ran long, and one paper
  • Day 367 — : Sampling-based planning, and what it gives up. System: Implement RRT-Connect and a PRM over the 6-DOF arm's configuration space with a real collision checker, and run both on the same start-goal pairs.
  • Day 368 — : The resolver: the first real static analysis you write. System: Add a resolver that turns each variable reference into a fixed scope depth and slot index, and keep the pre-resolver interpreter alongside it.
  • Day 369 — : A controller with a measured tracking error. System: Implement a PD controller and a computed-torque controller for the 2R arm on your own dynamics, and track the same trajectory with both under a model-parameter error of 10%.
  • Day 370 — : Inheritance, and the end of the tree-walking interpreter. System: Complete inheritance and super-calls, run the whole test suite, then profile the interpreter on a recursive benchmark and attribute the time.
  • Day 371 — : inferd: how often is the prefix actually shared. System: Second day on step 15: measure prefix-cache hit rate on a realistic trace with a mixture of shared system prompts, few-shot examples and unique user turns.
  • Day 372 — · catch-up: Catch-up — the memory table, finished, and one paper
  • Day 373 — : The Kalman filter, and the extended one that lies to you. System: Implement a Kalman filter and an extended Kalman filter for a planar robot with odometry and range-bearing landmarks, on a logged trajectory.
  • Day 374 — : inferd: every gigabyte is accounted for. System: First day on step 16: instrument allocation so that at peak the engine reports weights, KV cache, activations, CUDA context, allocator fragmentation and everything else, in bytes, summing to what nvidia-smi says.
  • Day 375 — : A bytecode VM that beats the tree walker. System: Compile expressions to bytecode with a Pratt parser, run them on a stack VM, and benchmark against the tree-walking interpreter on the same programs.
  • Day 376 — : A particle filter that does not collapse. System: Implement a particle filter for the same robot as day 373, with low-variance resampling, and deliberately reproduce depletion and the kidnapped-robot failure.
  • Day 377 — : inferd: the memory model, written down. System: Second day on step 16: turn the instrumentation into a memory model — a formula that predicts peak memory from model size, batch size, sequence length and block size — and validate it against measurements.
  • Day 378 — · catch-up: Catch-up — write the related-work rows you skipped, then read
  • Day 379 — : Strings, interning, and a hash table you can reason about. System: Add interned strings and a hash table with tombstones to the VM, and benchmark string equality and table lookup before and after interning.
  • Day 380 — : The related work, read before the draft rather than after. System: Read the eight serving systems your work sits next to and build a table: what each one optimizes, what it measures, what hardware, and which of its numbers you could reproduce.
  • Day 381 — : Localization on a grid, before it gets clever. System: Implement grid-based Markov localization on a real map with a logged laser scan sequence, from a uniform initial belief.
  • Day 382 — : Locals, slots, and the scope stack the compiler keeps. System: Implement block scope in the bytecode compiler with slot allocation, and benchmark local versus global variable access.
  • Day 383 — : inferd: the same workload, both engines. System: First day on step 17: run inferd and vLLM on one identical workload — same model, same prompts, same arrival process, same hardware, same measurement code.
  • Day 384 — · catch-up: Catch-up — the draft that ran long, and one paper
  • Day 385 — : Monte Carlo localization, and a model you did not learn. System: Implement MCL with the likelihood-field sensor model and adaptive particle counts, on the same map and log as day 381.
  • Day 386 — : inferd: where yours loses, in writing. System: Second day on step 17: attribute the gap — kernel by kernel and phase by phase, decide how much of the difference is attention, how much is scheduling, and how much is Python overhead in your own loop.
  • Day 387 — : The draft: claim, method, evidence. System: Write the four sections that have to exist: the claim, the method, the evidence, and what would falsify it. Every number in it comes from the figure pipeline; no number is typed by hand.
  • Day 388 — : Upvalues, and a variable that outlives its frame. System: Implement upvalue capture and closing, including the shared-capture case, and test a counter closure and a loop-variable capture.
  • Day 389 — : inferd: the comparison, written for a reader who is sceptical. System: Third day on step 17: write the comparison up — the table, the workload definition, the configuration of both engines, and the paragraph naming what yours does worse and why.
  • Day 390 — · catch-up: Catch-up — close the block, then read
  • Day 391 — : Pose graphs, and an error you can distribute. System: Build the pose graph from a public 2-D SLAM dataset, add loop closures, and optimize it with Gauss-Newton on the sparse information matrix.
  • Day 392 — : Collecting garbage without collecting something live. System: Implement mark-sweep collection with the tri-colour invariant, a write barrier, and a stress mode that collects on every allocation.
  • Day 393 — : The limitations section, written as conditions rather than caveats. System: Write the limitations properly: the experiments not run and why, the hardware you did not have, the configurations where the claim is not tested, and the two results that are modelled rather than measured.
  • Day 394 — : From a tree to a linear IR, and the other lane opens. System: Lower the expression and statement AST to a linear three-address IR with a printer and a small interpreter for the IR itself.
  • Day 395 — : inferd: the design document. System: First day on step 18: write the design document — the scheduling policy stated as a rule with its admission and eviction conditions, and the memory model from day 377 as the second section.
  • Day 396 — · catch-up: Catch-up — finish the design document, then read
  • Day 397 — : Dynamic mode decomposition: the linear model you are allowed to fit. System: Run DMD on a public fluid-flow dataset, reconstruct the field from the leading modes, and forecast forward past the training window.
  • Day 398 — : inferd: the failure modes, named before they happen. System: Second day on step 18: the failure-modes section — every way the engine can fail, the symptom, the detection, and whether it currently degrades or falls over. Include the ones you have not fixed.
  • Day 399 — : SINDy: an equation rather than a fit. System: Recover the Lorenz equations from simulated data with SINDy, then add measurement noise at four levels and rerun.
  • Day 400 — : Code shape: the same source, three different instruction sequences. System: Implement numeric, positional and short-circuit code shape for boolean expressions in your compiler, and benchmark all three on branch-heavy and branch-light programs.
  • Day 401 — : inferd: refusing work is a feature. System: First day on step 19: bounded request and KV-block queues, admission control with a stated policy, and a 503 with a retry hint rather than an unbounded wait.
  • Day 402 — · catch-up: Catch-up — the PINN write-up, and one paper
  • Day 403 — : The PINN will not converge, and it is not the learning rate. System: Implement a PINN for the 1-D convection equation at a high convection coefficient, with a spectral solver as the reference. It will not converge to the right solution. Establish that it is the optimization and not the code: check the residual, check the exact solution against the network at initialization, and check that a smaller coefficient does converge.
  • Day 404 — : The day after: a weighting fix, a curriculum, or the wrong tool. System: Try adaptive loss weighting, then a curriculum over the convection coefficient, then a sequence-to-sequence time-marching scheme, on the same failing problem with three seeds each.
  • Day 405 — : Value numbering, and what it cannot see. System: Implement local and superlocal value numbering in your IR, with constant folding and algebraic identities, and measure instruction count on the test corpus.
  • Day 406 — : A neural operator against a solver, on the solver's terms. System: Train an FNO on Burgers or Darcy flow, and evaluate it against a numerical solver on accuracy, wall-clock time at matched accuracy, and generalization to a resolution it never saw.
  • Day 407 — : inferd: degrading rather than dying. System: Second day on step 19: graceful degradation — shed the longest-tail work first, cap generation length under pressure, and shrink the batch rather than dropping it, with every decision logged.
  • Day 408 — · catch-up: Catch-up — act on the critique, then read
  • Day 409 — : The critique, including the parts you disagree with. System: Send the draft, the design document and the reproduction instructions to a mentor or a graduate student in the area, ask for the harshest reading they have time for, and then work through every point — including the two you think are wrong, which get a written rebuttal rather than a shrug.
  • Day 410 — : inferd: the benchmark scripts, published. System: First day on step 20: the benchmark scripts — one entry point, pinned dependencies, the workload definitions as data, the exact hardware recorded, and every figure in the draft produced by them.
  • Day 411 — : A posterior from a simulator, without a likelihood. System: Take a simulator with a known posterior — a Lotka-Volterra or an SIR model — and fit the posterior with sequential neural posterior estimation, then check calibration with simulation-based coverage.
  • Day 412 — : tensorforge: one kernel, matched against the real thing. System: Take tensorforge's tiled CUDA GEMM from the spring and apply what PMPP taught you: register blocking, vectorized loads, double buffering, and an occupancy target chosen from the roofline rather than from habit. One shape, taken as far as it goes.
  • Day 413 — : inferd: the hardware, stated exactly. System: Second day on step 20: record the hardware exactly — GPU model, driver, CUDA version, clocks and power cap, host CPU and memory — and make the benchmark refuse to run silently on a machine that differs from the recorded one.
  • Day 414 — · catch-up: Catch-up — fix what the clean-machine run exposed, then read
  • Day 415 — : A flow that gives you a density you can sample and score. System: Implement a RealNVP-style coupling flow, train it on a two-moons and a funnel density, and verify the log-density against a numerical change-of-variables computation.
  • Day 416 — : Scheduling a dependence graph, which is what the whole summer was. System: Build the dependence DAG for your IR with latencies, implement list scheduling with two priority functions, and measure the schedule length against the critical-path lower bound.
  • Day 417 — : Somebody else, a clean machine, one command. System: Hand the repository to somebody who has not seen it, on a machine you do not control, and watch them run it without helping. Write down every place they stop.
  • Day 418 — : One thesis, one command, one claim. System: Assemble the one document the autumn applications point at: the claim, the method, the measured evidence with intervals, the comparison against vLLM, the memory model, the limitations, and the reproduction instructions. Every number regenerated, nothing typed.
  • Day 419 — : The release, and the next step somebody else signed off on. System: Cut a tagged release with an archive link, a README that states the claim and the limits, and the benchmark entry point. Then write the next experiment down: the one the mentor critique pointed at, with its design, its metric and what would falsify it.
  • Day 420 — · catch-up: Catch-up — the summer, closed, and the paper the autumn opens on

Autumn 2027 — days 421–504, to

independent research term, and the quantum turn · in term, ~45 hours a week · 84 days

  • Day 421 — : The machine that does not work like the one underneath it. System: Represent an n-qubit state as 2^n complex amplitudes; write the index arithmetic and a basis-state test.
  • Day 422 — : The résumé, rebuilt around an artifact that now exists. System: Rewrite the résumé so that every bullet names a system, a thing measured about it, and the number.
  • Day 423 — : The flagship's headline number, ten times. System: Rerun the flagship's headline experiment ten times with different seeds and nothing else changed.
  • Day 424 — : One gate, applied to 2^n amplitudes. System: Apply a single-qubit gate by pairing amplitudes across one stride; verify against a hand-computed 2-qubit case.
  • Day 425 — : What cannot be copied. System: Compute ⟨x⟩, ⟨p⟩, σx and σp by quadrature for a Gaussian and for the first excited state of the oscillator.
  • Day 426 — · catch-up: Catch-up — the first week of the turn is over; read the paper that named the era
  • Day 427 — : The target list: twenty rows, a reason each. System: Build the list of twenty groups and teams: name, the paper or repository you read, the sentence connecting it to something you built, and the deadline.
  • Day 428 — : Controlled gates, and the first complexity you added on purpose. System: Add controlled gates and the general two-qubit apply; test CNOT, CZ and SWAP against their matrices.
  • Day 429 — : The flagship benchmark becomes one command. System: Collapse the flagship's benchmark suite behind a single entry point that fetches data, runs, and writes the results table the report reads.
  • Day 430 — : An eigensolver, so the book's answers can be checked. System: Discretise the time-independent Schrödinger equation on a grid and solve the resulting symmetric eigenproblem.
  • Day 431 — : Measurement, sampling, and collapse. System: Implement measurement: probabilities, sampling with a seeded RNG, and collapse.
  • Day 432 — · catch-up: Catch-up — the applications backlog, and one argument about how a field reports itself
  • Day 433 — : CI, so the flagship stays true while you are busy. System: Add a workflow that runs the correctness tests and the fast benchmark on every push, and fails the build on a regression past a stated tolerance.
  • Day 434 — : The project narrative someone else can read. System: Write 300 words on the flagship: the problem, what you built, what you measured, and what you did not do.
  • Day 435 — : The states the textbook promises. System: Check the Bell state, GHZ, and a teleportation circuit produce the textbook distributions.
  • Day 436 — : The GitHub landing page, treated as a product. System: Write the profile README and rewrite the top of each pinned repository: one claim, one number, one command that reproduces it.
  • Day 437 — : Two bits down one qubit. System: Encode two classical bits into one qubit of a shared Bell pair and decode them on your simulator.
  • Day 438 — · catch-up: Catch-up — close the open branch on qsim
  • Day 439 — : The number that decides everything else. System: Write the memory table: bytes against qubit count, and the qubit count your machine dies at.
  • Day 440 — : The inequality that made this a physical question. System: Implement split-step Fourier propagation of a Gaussian packet in free space and against a barrier.
  • Day 441 — : Reversibility, from the classical side. System: Compile a small boolean function into Toffoli and CNOT gates, with explicit ancilla allocation and uncomputation.
  • Day 442 — : Fusing gates before applying them. System: Add gate fusion: combine adjacent single-qubit gates before applying them, and measure the saving.
  • Day 443 — : Shooting for the bound states. System: Find the bound states by integrating from both ends and matching the logarithmic derivative.
  • Day 444 — · catch-up: Catch-up — the claim, as it was made
  • Day 445 — : The letter that could not be sent to anyone else. System: Write four letters, each with one paragraph that names their work and one that names yours and the connection.
  • Day 446 — : The amplitude loop meets the cache. System: Reorder the amplitude loop for cache locality; measure against the naive order.
  • Day 447 — : Deferred measurement, and a Gram matrix. System: Build the Gram matrix of the first ten oscillator eigenfunctions numerically on a finite grid.
  • Day 448 — : The first four applications go out. System: Send the first four: tailored letter, résumé, the narrative, and the one link that proves it, each logged with date and contact.
  • Day 449 — : Threads, and the qubit count where they start to pay. System: Multithread the apply loop; find the qubit count where threading starts to pay.
  • Day 450 — · catch-up: Catch-up — the claim, as it was attacked
  • Day 451 — : Approximating a gate you do not have. System: Hand the repository to one other person on a machine you have never touched, watch, and fix everything they hit without helping them.
  • Day 452 — : What the machine was invented for. System: Represent a bound state in a finite momentum basis and measure the error against basis size.
  • Day 453 — : The transform that everything downstream depends on. System: Implement the quantum Fourier transform and check it against a classical DFT of the amplitudes.
  • Day 454 — : The four referral asks. System: Write four asks: a specific role, a specific artifact they can look at, a specific deadline, and an easy way to say no.
  • Day 455 — : Reading an eigenvalue out of a phase. System: Compute σx σp numerically for the first ten harmonic-oscillator states and for a squeezed Gaussian.
  • Day 456 — · catch-up: Catch-up — the claim, as it stands now
  • Day 457 — : Amplitude, rotated toward the answer. System: Implement Grover's algorithm on a small oracle; verify the amplitude peaks where the theory says.
  • Day 458 — : Ladder operators as matrices. System: Build a and a† as truncated matrices, verify [a, a†] = 1, and reconstruct x and p from them.
  • Day 459 — : Counting how many answers there are. System: Generate Y_lm up to l = 4 from the associated Legendre functions and check orthonormality by quadrature on the sphere.
  • Day 460 — : Period-finding, end to end. System: Implement Shor's period-finding on a small modulus, end to end, using your QFT.
  • Day 461 — : What factoring would actually cost. System: Solve the reduced radial equation on a grid for l = 0, 1, 2 and extract the bound-state energies.
  • Day 462 — · catch-up: Catch-up — send the follow-ups, then read
  • Day 463 — : Hidden structure, and four more applications. System: Send the next four, each tailored against the paper you read for it, with the artifact chosen per group rather than reused.
  • Day 464 — : Grover is optimal, and that is a limitation. System: Sweep Grover past the optimal iteration count on your simulator and record the success probability all the way round.
  • Day 465 — : The other two systems, in one page each. System: Write the one-page narrative for riscv-vm and for ferrodb: what it does, what was measured, what it refuses to do.
  • Day 466 — : One query, and the classical cost avoided. System: Implement Deutsch-Jozsa, Bernstein-Vazirani and Simon, each with its classical baseline running beside it.
  • Day 467 — : The state that does not fit in memory any more. System: Add a density-matrix mode for mixed states; check purity is 1 for a pure state.
  • Day 468 — · catch-up: Catch-up — the algorithm everyone cites
  • Day 469 — : How close is close. System: Implement both measures for density matrices and check the inequalities relating them on random pairs.
  • Day 470 — : The limitations section, written before it is asked for. System: Write the limitations section: the regimes not tested, the baselines not run, the claims that rest on one seed.
  • Day 471 — : Three channels, as Kraus operators. System: Implement noise channels — depolarizing, amplitude damping, dephasing — as Kraus operators.
  • Day 472 — : Spin, and a network that learned a phase. System: Evolve a spin-1/2 state in a uniform magnetic field and track the three expectation values.
  • Day 473 — : Nothing hidden: the probabilities have to add up. System: Verify the Kraus operators are trace-preserving as a test, not as an assumption.
  • Day 474 — · catch-up: Catch-up — and the fine print on it
  • Day 475 — : Three qubits that survive one flip. System: Encode one logical qubit into three, inject bit flips at rate p, syndrome-measure and majority-vote.
  • Day 476 — : Many trajectories instead of one matrix. System: Add Monte Carlo trajectory simulation and check it agrees with the density matrix in the limit.
  • Day 477 — : The last four applications, and twelve in the log. System: Send the last four, then read the whole log: dates, artifacts, contacts, follow-up dates.
  • Day 478 — : T1, from a curve you fitted yourself. System: Simulate amplitude damping over time, sample the excited-state population, and fit the exponential.
  • Day 479 — : Expectations without building the matrix. System: Implement expectation values of Pauli strings without materialising the observable.
  • Day 480 — · catch-up: Catch-up — simulability, and the resource that controls it
  • Day 481 — : Every channel, drawn on the sphere. System: Draw the image of the Bloch sphere under each channel in your library, at several noise strengths.
  • Day 482 — : The technical report, started. System: Write claim, method and evidence for the flagship, with every figure generated by the one-command pipeline.
  • Day 483 — : Gates that take an angle. System: Add a parameterised circuit interface: gates that take angles from a vector.
  • Day 484 — : Recovering a number you injected. System: Run random Clifford sequences with their inverse, at several lengths, under a depolarizing channel you injected.
  • Day 485 — : The two pillars meet: a quantum gradient on your own autograd. System: Implement the parameter-shift rule for gradients, on top of tensorforge autograd.
  • Day 486 — · catch-up: Catch-up — and the other resource that controls it
  • Day 487 — : Recovering a channel from its outputs. System: Prepare a tomographically complete input set, measure, and reconstruct the chi matrix for a known channel.
  • Day 488 — : The technical report, posted. System: Finish it: claim, method, evidence, limitations, related work, and a link that runs.
  • Day 489 — : A variational circuit that converges. System: Train a variational circuit on a two-qubit problem and watch it converge.
  • Day 490 — : What a machine has to be able to do. System: Compute the Fermi energy and degeneracy pressure for a real metal's electron density, and for white-dwarf densities.
  • Day 491 — : Why an oscillator is not a qubit. System: Simulate a driven anharmonic oscillator truncated at four levels and measure population reaching |2⟩.
  • Day 492 — · catch-up: Catch-up — the boundary, drawn as carefully as anyone has
  • Day 493 — : The gradient that vanishes with the qubit count. System: Reproduce a barren-plateau measurement: gradient variance against qubit count and depth.
  • Day 494 — : Photons, and a hardness result that is not about qubits. System: Solve the Kronig-Penney model on a grid and extract the band edges for several barrier strengths.
  • Day 495 — : The interview loop, rehearsed against a system you wrote. System: Explain ferrodb's recovery path, riscv-vm's trap handling and qsim's memory wall on a whiteboard, timed, to someone who will interrupt.
  • Day 496 — : Measured against the tools everyone else uses. System: Benchmark against Qiskit Aer and Cirq on the same circuits; publish the table.
  • Day 497 — : The other way to simulate. System: Contract a shallow circuit as a tensor network with a simple contraction order and compare against the statevector path.
  • Day 498 — · catch-up: Catch-up — finals week; one paper on what it would cost to be useful
  • Day 499 — : The application ledger, read honestly. System: Read the log, write what the pattern says, then send four more applications shaped by it.
  • Day 500 — : The worst kernel, found and fixed. System: Profile and fix the worst kernel; write the diagnosis down.
  • Day 501 — : Day 501: many properties, few measurements. System: Predict fifty Pauli expectation values from randomised single-qubit measurements and compare against direct estimation.
  • Day 502 — : A release someone can cite. System: Cut a tagged release of the flagship with a permanent archive link, a changelog, and the report linked from it.
  • Day 503 — : The term closes: a simulator that runs, and a README that says what it will not do. System: Write the README: what it simulates, what it refuses to, and the memory wall in bytes.
  • Day 504 — · catch-up: Catch-up — and one that says the advantage is already provable somewhere

Winter break 2027 — days 505–516, to

unblocked build time · free, ~70 hours a week · 12 days

  • Day 505 — : Stabilizers, from the thesis that named them. System: Implement the tableau: n stabilizer generators as 2n+1 bit rows, with the phase bit, and a printer that shows the generators as Pauli strings.
  • Day 506 — : Every figure, from a machine that has never seen the project. System: On a fresh container with nothing cached, clone the repository and regenerate all figures in the paper from raw data. Fix whatever breaks, in the repository, not in your shell history.
  • Day 507 — : The Heisenberg picture is the data structure. System: Apply H, S and CNOT as tableau row operations, deriving each rule from the conjugation relation rather than copying it.
  • Day 508 — : The appendix nobody writes. System: Write the appendix: hardware, versions, seeds, wall-clock cost per figure, and the one experiment that is not deterministic and why. Pin every dependency to an exact version and record the container digest.
  • Day 509 — : Destabilizers, and measurement in quadratic time. System: Add the destabilizer half of the tableau so measurement is O(n^2) rather than a Gaussian elimination per shot.
  • Day 510 — · catch-up: Catch-up — close the figure regressions, then read
  • Day 511 — : The rebuttal you would write if you wanted the paper rejected. System: Write the strongest possible reject review of your own submission: three objections, each with the specific figure or table it attacks and the experiment that would settle it. Do not soften anything.
  • Day 512 — : Measurement: the deterministic case and the random one. System: Implement measurement: the deterministic case by row reduction against the destabilizers, and the random case with the rank update.
  • Day 513 — : The talk, and the questions you cannot answer. System: Give the twelve-minute version of the paper to a recording, twice. Then write the ten questions you would least like to be asked, and answer each in two sentences or mark it as one you cannot answer yet.
  • Day 514 — : Gottesman-Knill, tested rather than quoted. System: Test the Gottesman-Knill claim empirically: 1000 qubits of random Clifford circuit, depth 100, timed, with memory measured.
  • Day 515 — : Submit it. System: Assemble everything: manuscript, appendix, artifact link, data statement, and the cover letter. Run the venue checklist line by line. Submit.
  • Day 516 — · catch-up: Catch-up — the break closes; write the log for the whole twelve days

Winter 2028 — days 517–594, to

LLM research and submission term · in term, ~45 hours a week · 78 days

  • Day 517 — : Deferring the Cliffords. System: Add Pauli frame tracking so a run of Cliffords after a measurement can be deferred into a classical frame rather than applied.
  • Day 518 — : Interview prep is a systems artifact or it is nothing. System: Answer the standard "design a feature store" prompt as an actual document: interfaces, consistency model between training and serving, a capacity table with numbers, and three failure modes with what each one looks like in a dashboard.
  • Day 519 — : Random Cliffords as a measuring instrument. System: Implement randomised benchmarking: sample uniform random Clifford sequences of increasing length, append the inverse, and measure survival probability.
  • Day 520 — : Sampling the Clifford group, uniformly and provably. System: Implement uniform sampling from the n-qubit Clifford group by the canonical-form construction, not by composing random gates and hoping.
  • Day 521 — : Recovering the error rate you put in. System: Inject a known depolarizing error per Clifford, fit the exponential decay with the three-parameter model, and recover the injected rate.
  • Day 522 — · catch-up: Catch-up — the term has started and the backlog is already real
  • Day 523 — : Breaking your own benchmark on purpose. System: Inject three noise models the protocol is known to misreport — coherent over-rotation, leakage out of the computational subspace, and a slow drift between sequences — and fit each with the standard model anyway.
  • Day 524 — : Sampling from a stabilizer state. System: Add stabilizer-state sampling: draw bitstrings from the state without materialising any amplitude.
  • Day 525 — : Turning a coherent error into an honest one. System: Implement randomized compiling over a fixed circuit: insert random Pauli frames around each two-qubit gate and compile them away, then run the same circuit with a deliberate coherent over-rotation on every CX.
  • Day 526 — : A file format is an interoperability claim. System: Implement the CHP file format, in and out, so circuits can be exchanged with other stabilizer tools.
  • Day 527 — : Teleportation as a gate, not a trick. System: Build the one-bit teleportation circuit and the gate-teleportation construction for T, with the classically conditioned S correction.
  • Day 528 — · catch-up: Catch-up — reading week is not a week; take the day back
  • Day 529 — : The T gate is the expensive one. System: Add T-gate counting and magic-state injection as an explicit fallback: the injection circuit, the branch, and the cost bookkeeping.
  • Day 530 — : Distillation, simulated. System: Implement the 15-to-1 magic-state distillation protocol on your simulator with an input error rate you control, and iterate it twice.
  • Day 531 — : The cliff, measured. System: First half: build the sweep. Random Clifford circuits on 40 qubits with T-count from 0 to 30, five seeds each, wall-clock and memory recorded per run to a results file the plot reads from.
  • Day 532 — : The cliff, drawn. System: Second half: plot runtime against T-count on a log axis, fit the exponential base, and mark the point where stab loses to qsim on the same circuit.
  • Day 533 — : Timed problems, treated as an experiment. System: Build a harness that serves problems under a clock, records the time to first correct submission, and files every failure into a taxonomy you define — misread spec, wrong data structure, off-by-one, gave up.
  • Day 534 — · catch-up: Catch-up — finish the cliff plot properly, then read something old
  • Day 535 — : Losing to Stim, in public. System: Benchmark against Stim on the same circuit families: random Clifford, repetition-code memory, and a surface-code-shaped syndrome circuit.
  • Day 536 — : Coefficients you generate rather than look up. System: Implement the recursive ladder construction that generates Clebsch-Gordan coefficients for arbitrary j1, j2, with exact rational arithmetic.
  • Day 537 — : What stabilizer simulation buys, written down. System: Write the note: what stabilizer simulation buys, exactly what it cannot represent, and the three numbers from this month that prove both.
  • Day 538 — : Cross-entropy benchmarking, on a machine you wrote. System: Implement linear XEB against qsim as the ideal reference: random circuits, sampled bitstrings, the estimator, and the noise model that degrades it.
  • Day 539 — : Order finding, end to end. System: Factor 15 and 21 by the full route: modular exponentiation as a circuit, phase estimation, continued fractions, and the classical fallback when the order comes back odd.
  • Day 540 — · catch-up: Catch-up — the midterm ate two days; take them back
  • Day 541 — : Contraction order is the whole algorithm. System: Build the tensor network for a shallow random circuit, find a contraction order with a greedy heuristic, and contract it to a single amplitude.
  • Day 542 — : Entanglement as the thing that costs money. System: Measure the bipartite entanglement entropy across the middle cut of a random circuit as a function of depth, on qsim.
  • Day 543 — : Free fermions, free of charge. System: Implement free-fermion simulation via the covariance matrix: matchgates on nearest neighbours, evolution as an orthogonal transformation, and measurement by Pfaffian.
  • Day 544 — : One measured ML-systems contribution, scoped. System: Choose the one ML-systems contribution this quarter will carry — a kernel, a scheduler change, a memory-layout fix in tensorforge or inferd — and write the scope: the baseline you will beat, how it is measured, and the number that counts as failure.
  • Day 545 — : Grover, with the iteration count measured rather than quoted. System: Implement Grover for a 12-qubit search with 1, 2 and 4 marked items, and sweep the iteration count past the optimum.
  • Day 546 — · catch-up: Catch-up — the ML-systems baseline needs a second run; do it, then read
  • Day 547 — : qroute: the circuit gets a representation. System: Define the circuit IR: qubits, gates with parameters, a stable text form, and a parser that is the inverse of the printer.
  • Day 548 — : Somebody else's format, parsed. System: Write a parser and printer for the OpenQASM 2 subset your IR needs — gate declarations, registers, barriers, measurement — with real error messages that name the line.
  • Day 549 — : The DAG, and the critical path. System: Build the dependency DAG from the IR and compute circuit depth and the critical path.
  • Day 550 — : A latency budget is an answer, a paragraph is not. System: Answer the "design a model serving system" prompt as a document with a latency budget allocated per stage — routing, batching, prefill, decode, serialisation — that sums to the SLO.
  • Day 551 — : The machine has a shape, and it is not a clique. System: Parse a coupling map from a real device description, including the per-edge error rates, and render the graph.
  • Day 552 — · catch-up: Catch-up — three problem sets are open; close them
  • Day 553 — : A trivial layout, so you know what you improved. System: Implement a trivial identity layout and count the SWAPs a naive nearest-neighbour router inserts.
  • Day 554 — : Reading the graph before routing on it. System: Compute and cache all-pairs shortest paths on the device graph, the diameter, the degree distribution, and the pair of qubits that is most expensive to connect.
  • Day 555 — : SABRE, forward. System: First half: implement the forward SABRE pass — the front layer, the candidate SWAP set, and the distance-based cost function, with no lookahead yet.
  • Day 556 — : The lookahead window, tuned rather than guessed. System: Second half: add the extended lookahead set with a decay weight, and sweep the window size and weight over the benchmark suite.
  • Day 557 — : A quantum service, designed on architecture you already own. System: Design the service: job submission, admission control against a memory bound that grows exponentially in qubit count, queueing, cancellation, and result caching keyed by circuit hash.
  • Day 558 — · catch-up: Catch-up — the routing benchmark suite needs finishing before it is used
  • Day 559 — : The reverse pass, and where the initial layout comes from. System: Add the reverse traversal pass: run the router backwards from the final mapping to refine the initial layout, and iterate.
  • Day 560 — : The contribution, measured. System: Implement the change scoped on day 544 and measure it against the baseline with the protocol you wrote then — same seeds, same hardware, same number of repeats.
  • Day 561 — : Down to the basis the hardware actually has. System: Implement gate decomposition into the CX, RZ, SX, X basis, including arbitrary single-qubit unitaries via ZXZ Euler angles.
  • Day 562 — : Solovay-Kitaev, implemented rather than cited. System: Implement the recursive Solovay-Kitaev algorithm over the Clifford+T set with a base-case lookup table, and approximate a set of random z-rotations.
  • Day 563 — : Proving the mapped circuit is still the circuit. System: Verify decomposition and routing together against qsim: the mapped, decomposed circuit must equal the original up to the final qubit permutation.
  • Day 564 — · catch-up: Catch-up — the decomposition verifier found three failures; fix them
  • Day 565 — : The reviews. System: Read every review twice, then build a table: one row per distinct objection, with the reviewer, the claim it attacks, whether it is factual or a judgement, and the specific change or experiment that answers it.
  • Day 566 — : Gates that commute, cancelled. System: Implement commutation-aware cancellation: build the commutation rules for the basis set, then cancel adjacent inverse pairs across gates they commute with.
  • Day 567 — : Rewriting a circuit as a graph. System: Take a 20-gate circuit, convert it to a ZX diagram, apply spider fusion and local complementation by hand to simplify it, then convert back and verify.
  • Day 568 — : Merging rotations, and the depth that falls out. System: Implement single-qubit rotation merging across the DAG and measure the depth reduction on the routed circuits.
  • Day 569 — : The response to reviewers, as a table. System: Write the response from the day-565 table: one paragraph per objection, each naming the change made or the reason no change is warranted. Concede the ones that are right, in plain words, first.
  • Day 570 — · catch-up: Catch-up — the response needs a night away from it before sending
  • Day 571 — : The number against Qiskit. System: Run both routers over the same twenty circuits on the same coupling map: Qiskit at optimization level 3, qroute with everything implemented so far. Record depth, SWAP count, two-qubit gate count and compile time.
  • Day 572 — : Counting the resources a program would need. System: Extend qroute with a pass that reports logical qubit count, T-count, T-depth, and total depth for a circuit, without simulating it.
  • Day 573 — : Explaining the thing you built, twice, at two lengths. System: Record two explanations of the router: the five-minute version for someone who has not thought about qubit mapping, and the forty-five-minute version with the design decisions and their alternatives.
  • Day 574 — : The revision, diffed. System: Produce the revised manuscript with a change-marked version, and an annotation on every substantive change naming the review comment that caused it.
  • Day 575 — : From circuit to instruction stream. System: Lower one routed circuit from the IR to a flat instruction stream with explicit classical registers and measurement-conditioned branches, then schedule it against a per-gate duration table.
  • Day 576 — · catch-up: Catch-up — the resource estimator disagrees with the hand count; find out why
  • Day 577 — : Computation by measurement. System: Build a 2-D cluster state on the stabilizer simulator, implement measurement patterns for H and CNOT with the byproduct-operator corrections, and run a small circuit entirely by measurement.
  • Day 578 — : The artifact, packaged for someone who does not like you. System: Package the artifact for an evaluation committee: one command, a container, a small-scale mode that finishes in under an hour, and a README that states exactly which figures the small mode reproduces and which it does not.
  • Day 579 — : Computing by staying in the ground state. System: Implement adiabatic evolution for small MAX-CUT instances: interpolate the Hamiltonian, integrate the Schrödinger equation, and diagonalize to find the minimum gap along the path.
  • Day 580 — : Trotter error, measured rather than bounded. System: Implement first- and second-order Trotter decomposition for a transverse-field Ising Hamiltonian and compare the evolved state against exact diagonalization.
  • Day 581 — : Explaining BQP to someone who is not a physicist. System: Write the two-minute answer to "what can a quantum computer actually do faster" that is correct: the factoring case, the quadratic case, the simulation case, and the class of problems where the answer is no.
  • Day 582 — · catch-up: Catch-up — the adiabatic gap computation has been running for two days; read while it finishes
  • Day 583 — : HHL, with every caveat listed. System: Implement HHL end to end for a 2x2 system on qsim: state preparation, phase estimation, the controlled rotation, and uncomputation.
  • Day 584 — : The fine print, applied. System: Take one current quantum-machine-learning claim and charge it for all four caveats: state preparation cost, condition number, output readout, and the classical baseline nobody ran.
  • Day 585 — : What the hardware makes cheap decides what gets invented. System: For three model architectures you know well, compute arithmetic intensity, memory traffic per token, and the hardware feature each one is betting on. Then do the same for two quantum gate sets.
  • Day 586 — : The contribution, written up as a result. System: Write the two-page result: what changed, the measurement protocol, the number with its interval, the workload where it does not help, and the upstream issue or PR it belongs to.
  • Day 587 — : Where a gate comes from. System: Integrate the driven two-level Hamiltonian exactly and under the rotating-wave approximation, and sweep drive amplitude and detuning.
  • Day 588 — · catch-up: Catch-up — interviews start next week; sleep, then read one survey
  • Day 589 — : A single number for a whole machine. System: Implement the quantum volume protocol against your own stack: random model circuits, your router, your simulator with an injected noise model, and the heavy-output test.
  • Day 590 — : Characterising a gate without assuming the measurement is perfect. System: Implement linear GST for a single qubit: the fiducial sequences, the germ selection, the linear inversion estimate, and the gauge fixing that follows.
  • Day 591 — : The router benchmark, written up honestly. System: Write the benchmark section: the table from day 571 re-run with everything since, one circuit family where qroute wins and one where it loses, and the explanation of both.
  • Day 592 — : Your own numbers, subjected to a variance study. System: Re-run every headline number in the router benchmark and the ML-systems writeup with five seeds and on two machines, and report distributions rather than best runs.
  • Day 593 — : The end state, assembled. System: Assemble the four things this period was for: the submission or revision with its artifact package, the measured ML-systems contribution, the rehearsed talk, and qroute benchmarked against Qiskit. Write the one-page statement of what each one shows and what it does not.
  • Day 594 — · catch-up: Catch-up — the quarter closes; write the log, then the applications

Spring break 2028 — days 595–600, to

unblocked build time · free, ~70 hours a week · 6 days

  • Day 595 — : A machine that has never seen your code. System: Provision a machine you have never used, clone the paper repository, and run the pipeline that produces the headline table.
  • Day 596 — : Fix it in the repository, not in your head. System: Fix each of yesterday's failures in the repository itself — pinned versions, a lockfile, an explicit data-fetch step, a seed — then rerun from a fresh clone.
  • Day 597 — : Every figure comes from a file you can hand someone. System: Rebuild every figure in the writeup so each is produced by one script from one data file that ships in the repository.
  • Day 598 — : qroute learns which edges are bad. System: Implement noise-aware routing: read per-edge two-qubit error rates from a real calibration snapshot and weight the SABRE heuristic by them.
  • Day 599 — : Fidelity is a number, so produce the number. System: Estimate circuit fidelity as the product of per-gate fidelities on a real calibration snapshot, before and after noise-aware routing.
  • Day 600 — · catch-up: Catch-up — the break closes; read something that is not a mechanism

Spring 2028 — days 601–678, to

first-author execution term · in term, ~45 hours a week · 78 days

  • Day 601 — : The term's anchor paper, and a schedule rather than an order. System: Add as-late-as-possible scheduling with per-qubit idle windows, and report idle time as a first-class output rather than a debug print.
  • Day 602 — : One sentence, and everything it obliges you to run. System: Write the single-sentence claim of the first-author paper, then list every experiment a reviewer would need to see before believing it.
  • Day 603 — : A text form other people's tools can read. System: Build the [[7,1,3]] code from the classical Hamming code, write its stabilizers, and correct every weight-one error by table lookup.
  • Day 604 — : OpenQASM, in and back out again. System: Implement the OpenQASM 3 subset you need, in and out: parse into your IR, then emit back, refusing what you do not support with a line number.
  • Day 605 — : A frame, not a state. System: Implement Pauli frame tracking: push Pauli corrections through a Clifford circuit as a classical bookkeeping update instead of applying them.
  • Day 606 — · catch-up: Catch-up — first week of term; let the queue drain
  • Day 607 — : The benchmark harness, built before the numbers exist. System: First half of the benchmark: fix the circuit families, the device, the seeds and the metrics, and wire Qiskit at optimization level 3 as the baseline runner.
  • Day 608 — : Depth and SWAPs, against a compiler with a large team behind it. System: Second half: run the full benchmark and write the table — depth, two-qubit gate count, SWAP count and compile time, for both compilers.
  • Day 609 — : The circuit you mapped is the circuit you meant. System: Verify mapped circuits against their originals by preparing random stabilizer states, running both, and comparing measurement statistics under the routing permutation.
  • Day 610 — : How much connectivity is worth. System: Generate synthetic coupling graphs at fixed qubit count and varying average degree, and route the same circuits on each.
  • Day 611 — : Where the router spends its time. System: Profile qroute on the largest benchmark circuit and attribute time to heuristic evaluation, graph queries and IR bookkeeping.
  • Day 612 — · catch-up: Catch-up — the benchmark table is written; stop tuning it
  • Day 613 — : Where you win, and where you lose. System: Find one circuit family where qroute beats Qiskit at level 3 and one where it loses, and explain both from the heuristic rather than from the numbers.
  • Day 614 — : Which logical gates come for free. System: For the 7-qubit code, search the transversal single-qubit Cliffords and identify the logical operation each one induces.
  • Day 615 — : The expensive part of a fault-tolerant machine. System: Implement the 15-to-1 distillation routine on your stabilizer simulator with injected T-state error, and measure the output infidelity.
  • Day 616 — : The design note: the heuristic, and the mode in which it fails. System: Cut the router's worst hot path — the one profiling found on day 611 — without changing the routing decisions it makes.
  • Day 617 — : Distillation is a cost, so cost it. System: Write a reader for Stim's detector error model format and build your own graph structure from it, rather than from your circuit description.
  • Day 618 — · catch-up: Catch-up — qroute is done; the desk is cleared for qdec
  • Day 619 — : The design note, then the last qroute commit. System: Write the design note: the heuristic, the calibration input, the failure mode found on day 613, and what a better router would need.
  • Day 620 — : What has already been said about this. System: Build a table of every surface-code decoder you can find, with columns for accuracy, latency, noise model and whether code is available.
  • Day 621 — : Wigner-Eckart, checked by a computer. System: Compute matrix elements of a rank-1 tensor operator between angular-momentum states directly, and against the theorem's factorisation.
  • Day 622 — : The rotated surface code, built rather than drawn. System: Construct the rotated surface code: data and measurement qubit layout, X and Z stabilizer groups, boundaries, and distance as a computed quantity.
  • Day 623 — : Boundaries are where the code stops being a torus. System: Compute the logical X and Z representatives of any stabilizer code from its check matrix by symplectic linear algebra, and reduce each to minimum weight by search.
  • Day 624 — · catch-up: Catch-up — the code exists; read the field it sits in
  • Day 625 — : Extraction circuits, and the order that matters. System: Implement syndrome extraction circuits with ancilla qubits and a fixed CNOT ordering, and verify the stabilizer generators commute after extraction.
  • Day 626 — : A reference sampler, so you can be wrong loudly. System: Sample syndromes from a d = 5 memory experiment with your own sampler and with Stim on the same circuit and seed policy.
  • Day 627 — : A rate is an estimate, and estimates have intervals. System: Implement Wilson score intervals and a bootstrap for a Bernoulli logical error rate, and compare both against the normal approximation at low rates.
  • Day 628 — : Detection events become a graph. System: Build the matching graph: detection events as nodes, error mechanisms as weighted edges, boundary nodes for odd-parity syndromes.
  • Day 629 — : The bound you are nowhere near. System: Implement depolarizing noise as Kraus operators, as a Pauli twirl, and as Monte Carlo trajectories, then compare all three on the same circuit.
  • Day 630 — · catch-up: Catch-up — the graph is built; read a code you are not building
  • Day 631 — : Sample syndromes, and look at them before decoding them. System: Implement a phenomenological depolarizing noise model over the extraction circuit and sample syndromes from it with a seeded RNG.
  • Day 632 — : Predict the threshold before you measure it. System: Estimate your expected threshold from the code's error-configuration counting and the noise model, before running any simulation.
  • Day 633 — : A lookup decoder that provably corrects everything it should. System: Run randomised benchmarking on your stabilizer simulator with a known injected error rate and fit the decay curve.
  • Day 634 — : The smallest decoder that is definitely correct. System: Write a naive lookup decoder for distance 3: enumerate every single-qubit error, build the syndrome-to-correction table, and decode from it.
  • Day 635 — : The three objections a referee will raise. System: Write the three strongest objections to your claim, then for each write the experiment that would settle it and its cost in machine hours.
  • Day 636 — · catch-up: Catch-up — the lookup decoder works; the real one starts tomorrow
  • Day 637 — : Minimum-weight perfect matching, part one. System: First half of matching: implement the blossom algorithm's data structures — dual variables, alternating trees, blossom contraction — on small hand-built graphs.
  • Day 638 — : Minimum-weight perfect matching, part two. System: Second half: run the matcher on real surface-code syndromes, or bind a blossom implementation and prove your binding produces identical matchings.
  • Day 639 — : Union-find, on a graph with no physics in it. System: Implement union-find with union by rank and path compression, and measure amortised cost against the inverse-Ackermann prediction.
  • Day 640 — : A reference decoder to disagree with. System: Wire PyMatching in as a reference decoder behind the same interface as yours, and build a differential test that runs both on every syndrome.
  • Day 641 — : The methods section, written from the code. System: Write the paper's methods section by reading your own source, then diff it against the version you would have written from memory.
  • Day 642 — · catch-up: Catch-up — two decoders exist; read what everyone else built
  • Day 643 — : Measurements lie too. System: Add measurement errors to the noise model and measure how detector event rates change per round, separating them from data errors.
  • Day 644 — : The decoder, verified at three distances. System: Verify the decoder at distance 3, 5 and 7 at a fixed physical error rate, against both brute force and the reference decoder.
  • Day 645 — : A detector event is a difference, not a syndrome. System: Implement conversion from raw measurement records to detection events, and prove the result is invariant under flipping any deterministic measurement basis.
  • Day 646 — : The graph grows a time axis, part one. System: First half of the time dimension: build the 3-D matching graph over d rounds — space-like, time-like and diagonal edges, with the boundary in time.
  • Day 647 — : The graph grows a time axis, part two. System: Second half: decode over the 3-D graph with measurement errors present, and confirm distance-d protection survives d rounds.
  • Day 648 — · catch-up: Catch-up — the three-dimensional graph works; rest the hands
  • Day 649 — : The other decoder, and how often the two disagree. System: Implement the union-find decoder — cluster growth, parity tracking, peeling — and check it against MWPM on identical syndromes.
  • Day 650 — : How fast is fast enough. System: Compute the decoding throughput a d = 7 machine demands at a one-microsecond round, then measure where both of your decoders sit against it.
  • Day 651 — : Twelve minutes, timed, to an empty room. System: Give the twelve-minute version of the work out loud, recorded, with slides, then watch it back at full speed.
  • Day 652 — : Latency against distance, for both decoders. System: Measure decoding latency against code distance for MWPM and union-find, at fixed error rate and fixed shot count.
  • Day 653 — : The readout knows more than one bit. System: Feed analog readout confidence into the matching edge weights instead of hard-thresholding each measurement, and re-decode the same shots.
  • Day 654 — · catch-up: Catch-up — two decoders, both measured; read about the third problem
  • Day 655 — : The threshold simulation, part one: the sweep. System: First half of the threshold simulation: the sweep harness — distances, physical error rates, shot counts and seeds, writing one row per configuration.
  • Day 656 — : The threshold simulation, part two: the shots. System: Second half: run the full sweep — distances 3, 5, 7, 9 across a decade of physical error rate — with enough shots per point to resolve the crossing.
  • Day 657 — : How many shots does the crossing actually need. System: Compute the shot count each grid point needs for the confidence interval you want, given the logical error rate you observed.
  • Day 658 — : Finite-size scaling, fitted. System: Fit the standard scaling ansatz to the sweep data to extract the threshold and the critical exponent, and bootstrap both.
  • Day 659 — : The limitations section, written first. System: Write the limitations section of the paper in full, before the results section exists, listing the experiments you did not run and why.
  • Day 660 — · catch-up: Catch-up — the sweep is done; do not touch the data today
  • Day 661 — : The threshold plot, with error bars, produced by you. System: Plot the threshold: logical against physical error rate for every distance, with error bars, and state where the curves cross.
  • Day 662 — : One objection, answered with an experiment. System: Take the strongest objection from day 635 and run the experiment that settles it, whichever way it comes out.
  • Day 663 — : Circuit-level noise, specified before it is implemented. System: Write the full circuit-level noise specification — per-gate, per-idle, per-measurement, per-reset — as a document, before implementing any of it.
  • Day 664 — : Your number against the published number. System: Compare your threshold against the published surface-code number and account for the difference, factor by factor.
  • Day 665 — : Every figure has a file behind it. System: Give every figure in the paper a downloadable data file, a generating script, and a line in an appendix that says which produced which.
  • Day 666 — · catch-up: Catch-up — the plot exists; step back and read the whole arc
  • Day 667 — : Which weight in the graph is actually load-bearing. System: Ablate the matching graph's edge weights one class at a time — uniform, hook-error, boundary, time-like — and re-decode the same shots.
  • Day 668 — : Syndromes become a dataset. System: Generate a labelled training set: syndromes paired with the correction class, split by distance and by physical error rate, with the split written to disk.
  • Day 669 — : The same number, on someone else's machine. System: Reproduce a single point of the threshold curve on different hardware, from a clean clone, using only the committed commands.
  • Day 670 — : The two pillars, finally touching. System: Load the day-668 dataset into tensorforge, wire a two-layer network to it, and overfit five hundred examples deliberately to prove the whole path works.
  • Day 671 — : Audit the dataset before you trust anything trained on it. System: Audit the labelled dataset for class imbalance, seed leakage between splits, distance leakage, and syndromes that appear in both splits.
  • Day 672 — · catch-up: Catch-up — the dataset is clean; the learned decoder waits for next term
  • Day 673 — : The README a stranger reads first. System: Write the repository README from the point of view of someone with the paper open and no context: what it is, one command, what the numbers mean, and what it will not do.
  • Day 674 — : A check that runs whether or not you remember to. System: Add CI that runs the correctness tests, the fast decoder benchmark and a low-shot threshold run on every push.
  • Day 675 — : A version with a name that will not move. System: Cut a tagged release with the sweep data, the figures, the exact commands, and a permanent archive link with a DOI.
  • Day 676 — : Someone else runs it, and you say nothing. System: Sit with someone who has never used the repository, watch them go from clone to threshold plot, and take notes without helping.
  • Day 677 — : The handoff note: what is next, and what you would not do again. System: Write the note that lets someone else continue: the state of every experiment, the open questions, the dead ends, and the three things you would not do again.
  • Day 678 — · catch-up: Catch-up — the term closes; read the architecture the decoder serves

Summer 2028 — days 679–750, to

release and handoff · free, ~70 hours a week · 72 days

  • Day 679 — : The internship starts, and the day shrinks around it. System: Build the group's repository from a clean clone on your own machine, run the whole test suite, and write down every step the README does not mention.
  • Day 680 — : The learned decoder, finally trained. System: Train the small neural decoder on tensorforge against the labelled syndrome set step 14 generated: syndrome in, correction class out, training curve logged, no early stopping by eye.
  • Day 681 — : Why a transmon is shaped the way it is. System: Diagonalise the Cooper-pair-box Hamiltonian in the charge basis over a sweep of EJ/EC; plot the lowest three levels and the charge dispersion of each.
  • Day 682 — : Learned against matched, with nothing hidden. System: Compare the learned decoder against MWPM on accuracy, latency and generalisation to an unseen distance, holding the syndrome set, the noise model and the hardware fixed.
  • Day 683 — : The first patch into a codebase you did not write. System: Take the smallest real issue in the group's tracker, fix it in their style, and get it through review — including the review round you disagree with.
  • Day 684 — · catch-up: Catch-up — the first week, and the review that maps the whole family
  • Day 685 — : Off-distribution: the noise it was never trained on. System: Test the learned decoder off-distribution: sample syndromes from noise it never saw — biased dephasing, and a device-shaped model with correlated pairs — and re-measure everything.
  • Day 686 — : The bug, traced through code you did not write. System: Reproduce a real failure in the group's system, bisect it to the commit or the calibration that introduced it, and write the fix behind a regression test that fails without it.
  • Day 687 — : Where the dephasing actually comes from. System: Simulate free induction decay and a Hahn echo under a 1/f bath built as a sum of random telegraph fluctuators; fit both decays.
  • Day 688 — : Circuit-level noise, which is the only kind that counts. System: Replace the phenomenological noise model with circuit-level noise — errors on every gate, measurement and reset in the extraction circuit — and rebuild the matching graph from the detector error model that falls out.
  • Day 689 — : Readout is a signal-to-noise problem. System: Model dispersive readout as two coherent-state pointers separated by twice the dispersive shift: integrate the resonator response, add amplifier noise at a stated quantum efficiency, and compute separation error against integration time.
  • Day 690 — · catch-up: Catch-up — the long review about noise, read properly for once
  • Day 691 — : The correlated burst your decoder cannot absorb. System: Inject a correlated burst — a whole row of data qubits depolarised for several rounds — into your syndrome sampler and run both decoders across it.
  • Day 692 — : A design document read by people who did not write it. System: Write the design document for the subsystem you own — problem, two designs, the one chosen, the interface, the failure modes — and put it in front of two people who did not write it.
  • Day 693 — : A two-qubit gate you can simulate. System: Simulate the cross-resonance drive on two coupled transmons with three levels each; extract the ZX rate and the spurious IX and ZI terms against drive amplitude.
  • Day 694 — : Benchmarked against the tools people actually use. System: Benchmark against PyMatching and Stim on identical circuits and identical shots: the same detector error model in, the same decisions out, on the same machine.
  • Day 695 — : Measurement error, mitigated with a matrix you built. System: Build the assignment matrix from calibration shots on a simulated 5-qubit readout with correlated errors; invert it with a constrained least-squares solve and apply it to a biased distribution.
  • Day 696 — · catch-up: Catch-up — the calibration paper, read as a procedure
  • Day 697 — : Making one decoder measurably faster. System: Profile the hot path and make one of the two decoders measurably faster — the graph rebuild, the priority queue, or syndrome ingestion, whichever the profile actually names rather than whichever you suspect.
  • Day 698 — : The subsystem you own: first feature, end to end. System: Ship one feature of your subsystem end to end: interface, implementation, tests, documentation, and the migration for existing callers.
  • Day 699 — : Recalibrate only what went stale. System: Implement the calibration DAG: nodes with a check and a recalibrate action, staleness from timestamps and from failing checks, and a runner that walks dependencies instead of recalibrating everything.
  • Day 700 — : The report, written as a paper. System: Write the paper-shaped report: claim, method, the threshold plot under circuit-level noise, the learned-versus-matched comparison, and a limitations section naming the noise you never modelled.
  • Day 701 — : DRAG, and the leakage it removes. System: Simulate a single-qubit X gate on a three-level transmon with a Gaussian envelope, then with the DRAG correction, sweeping the DRAG coefficient.
  • Day 702 — · catch-up: Catch-up — control from inside the fridge
  • Day 703 — : One command, every figure. System: Package it: pinned dependencies, one fixed seed per figure, and a single command that reproduces every figure in the report from a clean checkout.
  • Day 704 — : The benchmark harness the team keeps. System: Build the group's benchmark harness: fixed circuit families, a device-agnostic runner, results written to a schema, and a regression check against last week's numbers.
  • Day 705 — : The Josephson junction as a circuit element. System: Implement the RCSJ model and integrate it: the tilted washboard potential, the I-V curve, and the hysteresis that appears when the junction is underdamped.
  • Day 706 — : Choosing the one system that survives. System: Choose which system the research actually needs — qsim, stab, qroute, qdec or the flagship — and write the decision down with the ones you rejected and why; archive the rest.
  • Day 707 — : Archive READMEs that tell the truth. System: Write the archive README for each: what it does, the last benchmark it passed and on what hardware, the known bugs, and the one thing you would fix first.
  • Day 708 — · catch-up: Catch-up — the sweet spot, discovered
  • Day 709 — : What is yours, what is borrowed, what is new. System: Write the contribution statement: what is yours, what is borrowed with a citation, and what is actually novel — three lists, with the novel list allowed to be short or empty.
  • Day 710 — : Reviewing someone else's change properly. System: Review a substantial change from somebody else: run it, try to break it, and write the review as questions rather than as instructions.
  • Day 711 — : One command, every number. System: Rebuild the benchmark suite so one command reproduces every number in the writeup: inputs pinned, hardware recorded, output a machine-readable table rather than a log to be read by eye.
  • Day 712 — : Quantum volume, measured on a machine you wrote. System: Implement the quantum volume protocol against your own simulator under a device-shaped noise model: random model circuits, the heavy-output test, and a bootstrap confidence interval.
  • Day 713 — : The test that fails once in forty runs. System: Take a test in the group's suite that fails intermittently, instrument it until the failure reproduces from a seed, then either fix the code or make the test honest about what it asserts.
  • Day 714 — · catch-up: Catch-up — a design revisited until it was reproducible
  • Day 715 — : CI, on a repository nobody but you runs. System: Add CI: correctness tests and the fast benchmark on every push, the slow benchmark on a schedule, and a red build that blocks a merge rather than being noted and ignored.
  • Day 716 — : Timing is part of the program. System: Implement the OpenQASM 3 timing subset: durations, stretch resolution as a linear program, and a lowering pass that turns stretch into concrete delays.
  • Day 717 — : The gate that compiles to nothing. System: Implement the virtual-Z pass in your own compiler: commute Z rotations forward, absorb them into the phases of subsequent pulses, and verify equivalence against qsim.
  • Day 718 — : Someone else runs it, on a machine you have never seen. System: First half: have one other person run it from a clean machine while you watch without helping, and write down every place they stopped.
  • Day 719 — : Profiling a hot loop you did not write. System: Profile the slowest thing your team runs daily, find where the time actually goes, and make one change that is measurably faster without changing behaviour.
  • Day 720 — · catch-up: Catch-up — the wiring problem, taken seriously
  • Day 721 — : Fixing everything they hit. System: Second half: fix everything on the list from the clean-machine run — every item, including the ones that are "obvious" — then have them run it again from scratch.
  • Day 722 — : Crosstalk, scheduled around. System: Add crosstalk-aware scheduling to qroute: a measured interference matrix, and a scheduler that serialises pairs above a threshold while tracking the decoherence it spends doing so.
  • Day 723 — : Compiling against the device you have, not the one in the manual. System: Feed qroute a downloaded calibration snapshot — per-edge two-qubit error, per-qubit T1 and readout error — and choose the layout by estimated success probability instead of by SWAP count.
  • Day 724 — : The limitations section, written honestly. System: Write the limitations section properly: the experiments you did not run, the regimes never tested, the baselines you chose to leave out, and the reason for each.
  • Day 725 — : Turning coherent error into stochastic error on purpose. System: Implement randomized compiling: twirl each hard cycle with random Paulis, compensate in the neighbouring easy cycles, and average over randomisations.
  • Day 726 — · catch-up: Catch-up — learning the noise instead of assuming it
  • Day 727 — : Figures with the data behind them. System: Draw the figures that would go in a paper: one claim per figure, axes labelled with units, and the data behind each one downloadable as a file the plotting script reads.
  • Day 728 — : The subsystem, hardened. System: Harden your subsystem for the way it actually fails: bound every queue, define the behaviour under overload, and make one failure mode degrade instead of crashing.
  • Day 729 — : The report skeleton: claim first. System: First half: write the report skeleton — claim, method, evidence — with each section reduced to the sentences it must contain and nothing written that is not one of them.
  • Day 730 — : What it would actually cost. System: Write a resource estimator for one real algorithm: logical qubits, T-count, code distance from a target logical error rate, then physical qubits and hours at a stated physical error rate.
  • Day 731 — : Related work, and where you actually sit. System: Second half: write related work and the limits — place your result against the three closest published results with their numbers, and say plainly where each one beats you.
  • Day 732 — · catch-up: Catch-up — the argument that a quadratic speedup is not enough
  • Day 733 — : The design review you did not run. System: Sit the design review for a change you are not writing: read the document beforehand, write your objections down before the meeting, and afterwards record which of them survived.
  • Day 734 — : The critique, and the parts you disagree with. System: Get a critique from a mentor or a peer: hand them the report and the repository, then act on the parts you disagree with as well as the parts you accept.
  • Day 735 — : Three architectures, one coupling map. System: Extend qroute’s device description until it can express a fixed lattice, an all-to-all ion trap and a reconfigurable array; route the same circuit on all three.
  • Day 736 — : The migration nobody wanted. System: Take a half-finished migration in the group's codebase and finish it: convert the remaining callers, delete the compatibility shim, and remove the old path entirely.
  • Day 737 — : Fluxonium against transmon, spectrum for spectrum. System: Extend your transmon diagonalisation to the fluxonium Hamiltonian in the phase basis; compute both spectra, their charge dispersion and their 0-1 matrix elements.
  • Day 738 — · catch-up: Catch-up — the review that contains the whole field
  • Day 739 — : The last feature, shipped. System: Ship the final feature of your subsystem, then spend the rest of the day deleting everything you added this summer that nobody used.
  • Day 740 — : The reproduction script the team runs without you. System: Write the script that regenerates every result your subsystem produced this summer — data, figures, tables — and run it on a machine carrying none of your dotfiles.
  • Day 741 — : The handoff document, read back to you. System: Write the handoff document — architecture, invariants, how to run it, what breaks first, and the three things you would do next — then have the person taking it over land a change using only the document.
  • Day 742 — : The exit review. System: Write your own review of the internship before anybody writes one of you: what you owned, what you shipped, what you broke, what you did not finish, and what you would do differently.
  • Day 743 — : The last experiment, on the real device's noise. System: Run your decoder's threshold measurement using an error model fitted to your team's actual device rather than a textbook one, and compare against the depolarizing-model threshold.
  • Day 744 — · catch-up: Catch-up — how you would actually build a bigger one
  • Day 745 — : The release. System: Cut the tagged release: a version number, a changelog, an archived snapshot with a DOI, and a citation file somebody else can paste without editing.
  • Day 746 — : The talk. System: Give the talk to the group: one claim, three figures, the limitations on a slide of their own, and the question you would ask if you were sitting in the audience.
  • Day 747 — : The ledger. System: Count it honestly: papers read, chapters finished, systems shipped, benchmarks that beat their baseline and benchmarks that did not, open-source contributions merged, and days missed.
  • Day 748 — : A model of computation that is not circuits. System: Take the assumption list from this morning and, for each one, write what qdec would have to change to decode a fusion-based architecture instead. Do not implement any of it.
  • Day 749 — : The retrospective, written to be argued with. System: Write the retrospective: what the plan got right, what it got wrong, the three decisions that mattered most, and the advice you would give someone starting it — stated strongly enough to be disagreed with.
  • Day 750 — : The question. System: Write down the three questions these 750 days produced that you cannot answer. Choose one. Then write the first day of the next plan against it: its paper, its chapter, its first system, and the artifact each has to leave.

Workflow changes