Branch: course-restructure-moon-ai
Goal: make the course more interesting and useful by (1) adding slides on programming and statistics in the age of AI, (2) replacing the generic “motion in a straight line” example with a memorable Moon-drop story, (3) turning that story into a unifying mission that pays off across multiple lectures, and (4) creating separate read and show versions of each lecture deck.
The “motion in a straight line” example is the hidden spine of the whole course, not just a Lecture 2 throwaway:
02-lecture/02-lecture-read.qmd — derivatives: position → velocity → acceleration03-lecture/03-lecture.qmd:381 — integration: “From Velocity to Position Functions” (the inverse)06-lecture/06-lecture.qmd:881 — linear algebra: the overdetermined system X β̂ = y fitting x = a + b t²Reframing this spine as a single Moon mission (infer the Moon’s gravity by dropping a ball) makes it emotionally memorable and gives it a concrete payoff that recurs four times across the course.
Newton’s second law on the airless Moon:
m · ẍ = m · g ⇒ ẍ = g (constant acceleration)
Integrate twice (released from rest at the top of the tower):
v(t) = g · t
x(t) = ½ · g · t²
g from the (tₖ, xₖ) marks is exactly the least-squares fit of L6 (regress x on t²; slope = g/2, so ĝ = 2 · slope).m·ẍ = m·g. That’s Galileo’s insight, confirmed on the actual Moon by Apollo 15’s hammer-and-feather drop.g_moon ≈ 1.62 m/s², a 100 m drop takes √(2·100/1.62) ≈ 11 s — leisurely enough to read marks with a stopwatch. On Earth it’s 4.5 s, too fast. Low gravity is a feature.g_moon = 1.625 m/s² (true, “unknown” value to recover)H = 100 m, red marks every 5 m → x = 5, 10, …, 100 (20 marks)
tₖ = √(2·xₖ / g) — first mark t ≈ 2.48 s, last t ≈ 11.09 sPlacement: right after SMaC: Why Bother? 01-lecture/01-lecture-read.qmd — it extends “why learn this?” into “why learn this when AI can do it?” and ties back to the existing Some Mistakes Are Silly / Deadly thread (humans err; now machines err confidently, at scale).
Implemented slides:
The original mockup of a confidently wrong chat response was replaced with empirical results from an actual frontier LLM. The first slide shows the root mean squared error and the second shows standardized bias across 20 independent ChatGPT Codex 5.2 submissions to the same statistical programming task. Three submissions did not run, while several others produced plausible-looking but catastrophically wrong results.
Assets:
images/rmse.pngimages/bias.pngBoth slides cite Perrett, Elliott, Hill, and Scott (2026), Flaws in the LLM Automation Narrative. The figures replace the now-removed images/ai-confident-wrong.png mockup and provide a concrete, real-world example of why statistical and programming knowledge remains necessary when using LLMs.
Replace the slide in 02-lecture/02-lecture-read.qmd (Example: Motion in a Straight Line) with a two-slide arc, then let the existing derivative slides flow on with the constants reinterpreted as g.
Draft slides:
## A Cruel Joke {.smaller}
A thousand years from now, your friends drug you, load you onto a ship,
and fire it at the Moon. You wake in a spacesuit on the surface: a ship,
a 100 m tower beside you, a metal ball stamped **1 kg**, and a stopwatch.
::: incremental
- The ship's autopilot has the equations of motion programmed in — but
it's missing one number: the Moon's gravitational acceleration g
- Your plan: climb the tower, drop the ball, and record the time it
passes each **red mark** (spaced 5 m apart, 20 marks down)
- Each mark has a sensor: as the ball passes, it **flashes a light**, so
from the top you read the time off your stopwatch at each flash
- From those (tₖ, xₖ) pairs you will *infer* g — and fly home
:::
## Setting Up the Equation of Motion {.smaller}
::: incremental
- No atmosphere on the Moon, so the only force is gravity. Newton's
second law:
$$ m\,\ddot{x} = m\,g \;\;\Rightarrow\;\; \ddot{x} = g $$
- The mass cancels — *that's why the 1 kg label is a red herring.*
Galileo's insight, confirmed on the Moon by Apollo 15's hammer & feather
- Integrating twice (we'll cover integration in Session 3) and dropping
from rest gives the solution we'll use:
$$ v(t) = g\,t, \qquad x(t) = \tfrac{1}{2}\, g\, t^2 $$
- So the **acceleration** is the second derivative of position — a
constant g — which is exactly the unknown the mission needs
:::…followed by a simulated-data plot (noisy stopwatch readings vs. the x = ½ g t² parabola) so the inference target is visual.
Draft simulation chunk:
The existing derivative algebra (v = 6t, a = 6) then carries over verbatim with 6 → g — minimal rewrite, maximal payoff.
To turn the story into a genuine course-long mission, carry it into:
x(t) = ½ g t². This is the “solution we promised to derive later” in L2.X β̂ = y slides (06-lecture/06-lecture.qmd:881) become “fit the Moon-drop data to recover g”. Design matrix column is t²; slope = g/2.This is the resolved scope: full propagation across L2 → L3 → L6 → L7.
02-lecture/02-lecture-read.qmd)Instead of only simulating the drop in R, students collect the data themselves in a small browser app. This app lives outside this repo at ~/Repos/apps/moon-experiment/. This makes the measurement-error story visceral: their own reaction time is the noise.
g_moon ≈ 1.625 m/s² (animation in real, slowed, or scaled time).t_k against the known mark height x_k.(t_k, x_k) pairs are the dataset they then analyze in R to infer g — closing the loop with L2/L6/L7.rnorm() — students feel where measurement error comes from.g.g.(t_k, x_k) as CSV, or paste into R; optionally a “pool the class” mode.t (click timing), matching the L2 narrative; reconcile with the OLS-on-position framing used in L6.Create two versions of each lecture deck for different purposes:
For Lecture 1, replace 01-lecture/01-Lecture.qmd with:
01-lecture/01-lecture-read.qmd01-lecture/01-lecture-show.qmdUse the same -read.qmd and -show.qmd naming convention when this structure is propagated to the remaining lectures. The current deck should serve as the starting point for the read version; the show version should then be distilled from it rather than independently rewritten.
The read deck is the canonical, self-contained source. The show deck is a separately curated presentation rather than an automatically stripped version of the read deck; automatic prose removal was rejected because it produces broken column layouts, orphaned citations, and unreadable slides.
Both versions share the same images/, data/, bibliography, and other local assets. Substantive changes begin in the read deck and must be synchronized into the show deck during review. Each synchronization ends by rendering both decks and checking code, equations, data assumptions, asset paths, and citations. As repeated executable sections are revised, move them into Quarto includes only when the same complete block can be reused without compromising either deck’s layout.
01-lecture/01-Lecture.qmd so there is a single, unambiguous source for each variant.