Course Restructure Plan — SMaC (Statistics, Math, and Computing)

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.

1. Key structural insight

The “motion in a straight line” example is the hidden spine of the whole course, not just a Lecture 2 throwaway:

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.

Why the physics lines up perfectly

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²
  • The constant acceleration derived in L2 (currently the arbitrary “6 m/s²”) becomes g — the very number the mission needs.
  • Inferring g from the (tₖ, xₖ) marks is exactly the least-squares fit of L6 (regress x on ; slope = g/2, so ĝ = 2 · slope).

Two true, memorable hooks fall out for free

  1. The 1-kg label is a red herring — mass cancels in m·ẍ = m·g. That’s Galileo’s insight, confirmed on the actual Moon by Apollo 15’s hammer-and-feather drop.
  2. The Moon makes the experiment feasible. With 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.

Reference numbers (for plots / worked examples)

  • g_moon = 1.625 m/s² (true, “unknown” value to recover)
  • Tower height H = 100 m, red marks every 5 mx = 5, 10, …, 100 (20 marks)
    • 5 m (not 1 m) so the clicks are humanly spaced: 20 clicks over ~11 s, ~one every 0.5 s
  • Time at mark k: tₖ = √(2·xₖ / g) — first mark t ≈ 2.48 s, last t ≈ 11.09 s
  • Stopwatch / reaction noise ≈ 0.1 s on each reading

2. Requested change A — Lecture 1: “Programming and Statistics in the Age of AI”

Placement: 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.png
  • images/bias.png

Both 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.

3. Requested change B — Lecture 2: the Moon drop

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:

set.seed(12)
g <- 1.625               # true (unknown) lunar gravity, m/s^2
H <- 100                 # tower height, m
marks  <- seq(5, H, by = 5)  # 20 red marks, every 5 m
t_true <- sqrt(2 * marks / g)
t_obs  <- t_true + rnorm(H, 0, 0.1)   # stopwatch / reaction noise

The existing derivative algebra (v = 6t, a = 6) then carries over verbatim with 6 → g — minimal rewrite, maximal payoff.

4. Propagating the Moon thread (the through-line)

To turn the story into a genuine course-long mission, carry it into:

  • L3 (integration) — currently “From Velocity to Position Functions”. Make the worked example integrate ẍ = g twice to recover x(t) = ½ g t². This is the “solution we promised to derive later” in L2.
  • L6 (linear algebra) — the overdetermined X β̂ = y slides (06-lecture/06-lecture.qmd:881) become “fit the Moon-drop data to recover g”. Design matrix column is ; slope = g/2.
  • L7 (statistical inference) — the measurement-error model becomes “how uncertain is our estimate of g given noisy stopwatch readings?” This is also where the oxygen / sample-size question (§6.3) is answered: how many marks must we record before the confidence interval for ĝ is tight enough to read g to one decimal place, then two?

This is the resolved scope: full propagation across L2 → L3 → L6 → L7.

5. Smaller polish

  • Typos across decks:
    • “pricical” → “principal” (02-lecture/02-lecture-read.qmd)
    • “Bionomial” → “Binomial” (L1)
    • “Intergration” / “Ingegration” → “Integration” (L3)
    • “informative true prior” repeated 3× in the L1 IRT slide
  • Optional high-value addition: a recurring “verify the AI” micro-beat (e.g., have an LLM solve the L4 medical-testing base-rate problem, then check it with code). Operationalizes the L1 AI slide and the syllabus promise that the course “discusses the use of modern AI and LLMs in computational statistics.”

6. Decisions & open questions

  1. Scope of the Moon thread — RESOLVED: full propagation through L2 → L3 → L6 → L7. The mission is the spine.
  2. Old example — RESOLVED: throw away the generic straight-line example entirely; all narrative becomes the Moon mission.
  3. Oxygen / sample-size question (NEW, open as a teaching thread) — How many observations (marks recorded) do we need to estimate g to the first decimal place? To the second? This matters because oxygen is limited, so each extra reading has a cost — we want the fewest drops that buy the required precision. This becomes a recurring question:
    • Posed informally in L2 when the mission is introduced.
    • Made concrete in L7 via standard errors / confidence intervals on ĝ. With marks every 5 m (20 per drop, spanning the whole tower), the unit of cost is the drop: a single drop already nails the first decimal (CI half-width ≈ 0.012), and ~6 drops reach the second decimal (half-width < 0.005). The second decimal costs ~6× the oxygen of the first.
    • Can be explored by simulation (vary the number of drops, watch the CI shrink).
  4. Observation mechanism (NEW, resolved as narrative detail) — How does a person standing on top of the tower see the ball pass a mark? RESOLVED: each mark has a sensor that flashes a light as the ball passes; the observer reads the stopwatch at each flash. (Measurement noise then comes from reaction time / flash-reading, ≈ 0.1 s.)

7. Implementation checklist

8. Interactive data-collection app (JS)

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.

Core interaction

  • A ball is dropped from the tower on the Moon and falls under constant acceleration g_moon ≈ 1.625 m/s² (animation in real, slowed, or scaled time).
  • As the ball passes each red mark (every 5 m, 20 marks), the mark flashes a light.
  • The student clicks the mouse (or presses a key) at each flash; the app records the click timestamp t_k against the known mark height x_k.
  • The recorded (t_k, x_k) pairs are the dataset they then analyze in R to infer g — closing the loop with L2/L6/L7.

Why it’s pedagogically valuable

  • The noise is real and self-generated (human reaction time ≈ 100–250 ms), not rnorm() — students feel where measurement error comes from.
  • Connects directly to the oxygen / sample-size question (§6.3): they can stop early and see how few clicks still pin down g.
  • Natural class activity: everyone runs a trial, pool the data, compare individual vs. pooled estimates of g.

Rough requirements / open questions

  • Tech: vanilla JS + Canvas (or a tiny framework); embeddable in the reveal.js deck or standalone. Keep dependencies minimal.
  • Time scaling: a true 100 m Moon drop takes ~11 s; decide whether to run real-time, slow-motion, or let the student set the speed.
  • Data export: download (t_k, x_k) as CSV, or paste into R; optionally a “pool the class” mode.
  • Calibration: log the click latency so students can see their own bias (systematic late-clicking) vs. random error.
  • Fairness to the model: noise should land on t (click timing), matching the L2 narrative; reconcile with the OLS-on-position framing used in L6.
  • Scope: MVP = single drop, click-to-time, CSV export. Stretch = class pooling, latency calibration, adjustable tower height / gravity.

9. Separate read and show lecture decks

Create two versions of each lecture deck for different purposes:

  • Read version — a self-contained deck with the explanatory prose needed to understand the material without an instructor present. These decks will be posted online for students to read and review.
  • Show version — a presentation-first deck with almost no explanatory text. It should contain only images, plots, computer code, and equations, with concise labels where essential. Every externally sourced image, plot, or factual visual must include a proper reference.

For Lecture 1, replace 01-lecture/01-Lecture.qmd with:

  • 01-lecture/01-lecture-read.qmd
  • 01-lecture/01-lecture-show.qmd

Use 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.

Shared-content strategy

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.

Implementation considerations

  • Keep code, equations, data, and local assets synchronized between the two versions so corrections do not drift apart.
  • Update internal links, website navigation, and render/publish configuration to point students to the read versions.
  • Render both variants and verify that all plots, code, equations, citations, and local asset paths work independently.
  • After migration, remove 01-lecture/01-Lecture.qmd so there is a single, unambiguous source for each variant.

Read/show implementation checklist