Two issues caused the deployed slide PDFs to be unusable:
1. Every chapter .tex declared `\setsansfont{Helvetica Neue}` — proprietary
to Apple, not installed on the Ubuntu CI runner. xelatex bombed mid-frame,
the workflow's `|| true` swallowed the error, and the resulting PDF had
most text never typeset (blank pages with only logos/rules surviving).
Switch all 35 decks to TeX Gyre Heros (sans) and TeX Gyre Cursor (mono),
both bundled with texlive-fonts-extra — no external font downloads needed.
Drop the JetBrains Mono wget step and fonts-liberation from both slide
workflows accordingly.
2. Vol1 and Vol2 each ship `00_course_overview.pdf` and `01_introduction.pdf`.
The publish workflow uploaded them to a flat GitHub Release namespace, so
the second upload silently overwrote the first — clicking Vol I's Course
Overview actually downloaded Vol II's deck. Stage prefixed copies
(vol1_*.pdf, vol2_*.pdf) before upload, and update slides/vol{1,2}.qmd
plus the mlsysim cross-links to point at the new prefixed URLs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Added font-family='Arial, Helvetica, sans-serif' to all SVG root tags to ensure clean, consistent textbook styling.
- Enforced strict high-contrast text colors, replacing pure black with a slightly softer dark gray (#333) for primary labels to adhere to the semantic style guide.
Audited all SVG figures in Volume 2 to align with textbook aesthetic guidelines.
- Replaced rounded corners (rx, ry) on <rect> elements with sharp corners.
- Converted assorted unapproved colors to the rigorous semantic palette
defined in the style guide (e.g. #cfe2f3 for compute, #d4edda for data,
#f9d6d5 for errors, plus standard grays).
- Automated a headless browser check (Puppeteer) to evaluate the rendered
layout, identifying and rectifying ~87 text element overlaps caused by
the font or box shifting. Adjusted coordinate spacing on problem files
such as the WSE and HBM architecture diagrams.
~75 new slides across 35 decks based on systematic review of
slide content vs textbook chapters. All new slides have 5-component
speaker notes (LINK/NARRATE/ENGAGE/WARN/FLEX).
Quantitative exercises added (~20):
- Iron Law, roofline, memory budget, training cost calculations
- Chinchilla scaling, ZeRO memory, AllReduce crossover
- Tail latency SLO, DP noise calibration, Fermi estimates
War stories / case studies added (~8):
- Knight Capital $440M (deployment), COVID drift (data engineering)
- DistilBERT (compression), Tail at Scale (serving)
- OPT-175B failures (fault tolerance), Tesla IP theft (security)
Missing concept slides added (~25):
- Scaling law breakdowns, PFC deadlocks, checkpoint coordination
- Energy roofline, machine unlearning, robustness in GenAI
- Horowitz energy table, Pareto efficiency, diagnostic flowcharts
Generic backup slides replaced with chapter-specific content (all 35).
~15 new SVGs created for diagrams that needed visual support.
Section counters and pre-existing LaTeX bugs fixed across multiple decks.
Research-grounded speaker note upgrade across all 35 slide decks.
Every \note{} now follows the LINK/NARRATE/ENGAGE/WARN/FLEX structure
based on Shulman PCK, Chi ICAP, Rosenshine, Ambrose, Merrill, Bain,
Wiggins UbD, and Garner & Alley frameworks.
28 chapters upgraded in this commit (7 were upgraded in prior commit).
- NARRATE + FLEX on 100% of slides
- LINK, ENGAGE, WARN on key concept slides (~70%)
- ~70% CORE / ~30% OPTIONAL tags for pacing flexibility
- Every line unique to its specific slide — no generic filler
- No slide content changed — only speaker notes rewritten
- Fix leaderboard script: unterminated string literal (line 60) and
python-level typo in setup-python
- Fix instructors _quarto.yml: duplicate href key (Labs/Slides entries)
- Fix 2 SVGs: escape < in text content (ml-cicd-pipeline, precision-engineering)
- Fix codespell: add 'rithm' and 'Activ' to ignore list (split-word SVG text)
- Fix labs plans: add YAML front matter to 6 .md files to prevent
Quarto YAML alias errors from **Story patterns
- Fix labs-validate-dev: use regular install instead of editable for mlsysim
(hatchling sources remap incompatible with editable mode)
- Fix mlsysim hardware.qmd: replace Registry.list() with direct attribute
iteration (Registry class shadowed by package __init__)
Parallel-agent generation of Beamer lecture slides for the entire
ML Systems curriculum. Each deck follows the Ch1 gold-standard template
with speaker notes, active learning, and semantic SVG diagrams.
Volume I (17 decks):
- Course overview + 16 chapter decks (Introduction through Conclusion)
- 128 SVGs, ~450 frames total, 50-75 min teaching time per deck
Volume II (18 decks):
- Course overview + 17 chapter decks (Introduction through Conclusion)
- 138 SVGs, ~450 frames total, 50-75 min teaching time per deck
Infrastructure:
- Extended Makefile with Vol2 build targets (v2ch01-v2ch17)
- All decks compile with xelatex, overflows under 10pt threshold
Every deck includes: learning objectives, 3-4 active learning moments,
fallacies and pitfalls, key takeaways, references, and next-lecture hooks.
Expert pedagogy review collected for future improvement pass.