Files
cs249r_book/slides/teaching.qmd
Vijay Janapa Reddi 460d385446 fix(links): suppress link-rot tracker noise + remove gitignored .claude link
Two surgical fixes for the nightly link-rot tracker (#1424):

1. **shared/config/.lycheeignore**: add two patterns that suppress
   confirmed false positives reported in the tracker.

   - JS template literals (`${m.github}`): when Lychee parses a .qmd
     containing JavaScript with template literals like
     `https://github.com/${m.github}`, the literal is URL-encoded in
     the AST as `$%7B…%7D` and reported as broken. The literal is
     substituted at runtime; it is never a real URL. Pattern matches
     any `${ANY.ANY}` template-literal residue.

   - GitHub avatar URLs (`github.com/<user>.png?size=N`): manually
     verified that every avatar URL flagged by the tracker
     (profvjreddi, Mjrovai, etc.) returns 200 in a browser. Lychee
     unreliably HEADs them due to GitHub's avatar throttling.

   Together these cover the 8 remaining "broken" links on the Unified
   Site that are not real failures.

2. **slides/teaching.qmd**: replace a markdown link to
   `.claude/rules/svg-style.md` with plain prose. The `.claude/`
   directory is gitignored in this repo, so the URL
   github.com/harvard-edge/cs249r_book/blob/main/.claude/rules/svg-style.md
   404s. Mention the SVG style guide in prose without the broken link.

Out of scope for this patch: the 329 `tinyMLx/courseware/raw/master/...`
links in slides/, which point to PDFs that don't exist in the upstream
repo (the directory exists, but the specific file numbers don't). That
is a content/strategic question — needs a decision on whether to
upload missing PDFs, switch repos, or remove the links — and is left
for a separate workstream.
2026-04-26 09:07:53 -04:00

197 lines
8.4 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Teaching Guide"
---
## How to Use These Slides
Each slide deck is designed for **50--75 minutes** of classroom teaching. The decks follow the textbook chapter structure exactly, so students can read the corresponding chapter before or after class.
Use the slides as the classroom layer of the broader curriculum: assign the [textbook](https://mlsysbook.ai) for reading, use [Co-Labs](https://mlsysbook.ai/labs/) for prediction and exploration, use [TinyTorch](https://mlsysbook.ai/tinytorch/) for implementation, use [Hardware Kits](https://mlsysbook.ai/kits/) for deployment, and use [The AI Engineering Blueprint](https://mlsysbook.ai/instructors/) for syllabi, rubrics, and TA workflows.
### Speaker Notes
Every slide has speaker notes containing:
- **Timing guidance** (`[N min]`) for pacing the lecture
- **Teaching tips** for explaining difficult concepts
- **Common student errors** to address proactively
- **Discussion prompts** for engaging the class
- **Transition cues** connecting each slide to the next
To view speaker notes in the PDF, use your PDF reader's presenter mode. In the LaTeX source, notes appear as `\note{...}` commands on each frame.
### Active Learning
Every deck includes **8--11 active learning moments**, distributed across these types:
- **Predict**: Students predict the outcome of a scenario before seeing the answer. Builds intuition about system behavior.
- **Exercise**: A short calculation or analysis task (2--5 minutes). Often involves the Iron Law, roofline analysis, or memory estimation.
- **Discussion**: Open-ended question for pair or group discussion (3--5 minutes). Explores trade-offs and design decisions.
- **Retrieval Practice**: Students recall key concepts from earlier in the lecture or from previous chapters without looking at notes.
- **Muddiest Point**: End-of-lecture check where students identify the concept they found most confusing.
These moments are marked with distinct frame titles and styling so they are easy to find in the deck.
## Customizing the Slides
### Source Format
The slides are **Beamer LaTeX**, not locked PDFs. The full source is open and designed for customization.
```
slides/
assets/beamerthememlsys.sty # Theme (colors, fonts, layout)
vol1/<chapter>/
<chapter>.tex # Slide source
images/ # SVGs, photos, generated PDFs
vol2/<chapter>/
<chapter>.tex
images/
Makefile # Build system
```
### Building
To build a single deck (PDF):
```bash
cd slides
make ch01 # Builds vol1/01_introduction PDF
```
To build everything (PDF):
```bash
make all
```
To build PowerPoint (PPTX) from PDFs:
```bash
make pptx-ch01 # Single chapter PPTX
make pptx-vol1 # All Vol1 PPTX
make pptx # All PPTX (both volumes)
```
PPTX conversion requires `poppler` (`brew install poppler` on macOS, `apt install poppler-utils` on Ubuntu) and `python-pptx` + `Pillow` (`pip install python-pptx Pillow`). The PPTX files are image-based at 300 DPI — visually identical to the PDF, suitable for presenter mode and annotations, but not editable text.
Output goes to `_build/vol1/` and `_build/vol2/` (PDFs and PPTX side by side).
### Editing Workflow
1. **Fork** the [repository](https://github.com/harvard-edge/cs249r_book)
2. **Edit** the `.tex` file for the chapter you want to change
3. **Rebuild** with `make chXX`
4. **Review** the PDF output in `_build/`
### SVG Figures
All diagrams are authored as **SVG files** in each chapter's `images/` directory. SVGs are the source of truth; the build system converts them to PDF via Inkscape for embedding in Beamer.
To modify a diagram:
1. Edit the `.svg` file in any vector editor (Inkscape, Illustrator, Figma)
2. Follow the SVG style guide (palette, typography, canvas conventions) used by the book figures
3. Rebuild the deck; the Makefile handles SVG-to-PDF conversion
### Theme Customization
The file `assets/beamerthememlsys.sty` controls the global look:
- **Accent color**: Deep Rose (`#BE185D`) used throughout
- **Header bar**: Section navigation with centered labels
- **Footer**: Book logo + chapter context (left), page number + institution (right)
- **Fonts**: Metropolis base with custom overrides
Change the accent color or institution branding in the theme file and all decks update on rebuild.
## Suggested Semester Plans
### 16-Week Plan: Volume I (Foundations)
```{=html}
<table class="slide-table">
<thead>
<tr>
<th>Week</th>
<th>Chapter</th>
<th>Topic</th>
<th>~Time</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td>0</td><td>Course Overview</td><td>53 min</td></tr>
<tr><td>2</td><td>1</td><td>Introduction</td><td>74 min</td></tr>
<tr><td>3</td><td>2</td><td>ML Systems</td><td>70 min</td></tr>
<tr><td>4</td><td>3</td><td>ML Workflow</td><td>79 min</td></tr>
<tr><td>5</td><td>4</td><td>Data Engineering</td><td>66 min</td></tr>
<tr><td>6</td><td>5</td><td>Neural Network Computation</td><td>68 min</td></tr>
<tr><td>7</td><td>6</td><td>Network Architectures</td><td>63 min</td></tr>
<tr><td>8</td><td colspan="3" style="text-align:center; font-style:italic;">Midterm / Review</td></tr>
<tr><td>9</td><td>7</td><td>ML Frameworks</td><td>73 min</td></tr>
<tr><td>10</td><td>8</td><td>Model Training</td><td>68 min</td></tr>
<tr><td>11</td><td>9</td><td>Data Selection</td><td>63 min</td></tr>
<tr><td>12</td><td>10</td><td>Model Compression</td><td>64 min</td></tr>
<tr><td>13</td><td>11</td><td>Hardware Acceleration</td><td>66 min</td></tr>
<tr><td>14</td><td>1213</td><td>Benchmarking + Model Serving</td><td>142 min</td></tr>
<tr><td>15</td><td>1415</td><td>ML Ops + Responsible Engineering</td><td>130 min</td></tr>
<tr><td>16</td><td>16</td><td>Conclusion + Final Review</td><td>51 min</td></tr>
</tbody>
</table>
```
### 16-Week Plan: Volume II (At Scale)
```{=html}
<table class="slide-table">
<thead>
<tr>
<th>Week</th>
<th>Chapter</th>
<th>Topic</th>
<th>~Time</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td>0</td><td>Course Overview: ML Systems at Scale</td><td>49 min</td></tr>
<tr><td>2</td><td>1</td><td>Introduction</td><td>76 min</td></tr>
<tr><td>3</td><td>2</td><td>Compute Infrastructure</td><td>72 min</td></tr>
<tr><td>4</td><td>3</td><td>Network Fabrics</td><td>68 min</td></tr>
<tr><td>5</td><td>4</td><td>Data Storage</td><td>69 min</td></tr>
<tr><td>6</td><td>5</td><td>Distributed Training Systems</td><td>70 min</td></tr>
<tr><td>7</td><td>6</td><td>Collective Communication</td><td>64 min</td></tr>
<tr><td>8</td><td colspan="3" style="text-align:center; font-style:italic;">Midterm / Review</td></tr>
<tr><td>9</td><td>7</td><td>Fault Tolerance and Reliability</td><td>68 min</td></tr>
<tr><td>10</td><td>8</td><td>Fleet Orchestration</td><td>74 min</td></tr>
<tr><td>11</td><td>9</td><td>Inference at Scale</td><td>71 min</td></tr>
<tr><td>12</td><td>10</td><td>Performance Engineering</td><td>72 min</td></tr>
<tr><td>13</td><td>1112</td><td>Edge Intelligence + Ops at Scale</td><td>132 min</td></tr>
<tr><td>14</td><td>1314</td><td>Security/Privacy + Robust AI</td><td>142 min</td></tr>
<tr><td>15</td><td>1516</td><td>Sustainable AI + Responsible AI</td><td>131 min</td></tr>
<tr><td>16</td><td>17</td><td>Conclusion + Final Review</td><td>47 min</td></tr>
</tbody>
</table>
```
### 32-Week Combined Plan
For a two-semester sequence, teach Volume I in the first semester and Volume II in the second. Volume I provides the single-machine foundations that Volume II builds upon for distributed systems. The combined plan covers the full ML systems stack from data engineering on a single accelerator to fleet-scale governance.
## Audio Lectures {.coming-soon-section}
```{=html}
<div class="info-section">
<h2>Coming Soon: Audio Lectures <span class="coming-soon">Coming Soon</span></h2>
<p>
Each slide deck will have a companion <strong>audio lecture</strong> generated from the
speaker notes written by the textbook author. These recordings will be:
</p>
<ul>
<li><strong>Synchronized</strong> with the slide deck for self-paced playback</li>
<li><strong>Based on author notes</strong>, not generic AI narration</li>
<li><strong>Designed for flipped classrooms</strong>: students listen before class, class time is for active learning</li>
<li><strong>Downloadable</strong> as MP3 for offline use</li>
</ul>
</div>
```