2026-07-17 –, Johnson Great Room
Graduate textbooks in applied mathematics are notoriously inscrutable, dense with symbolic derivations never connected to intuition, application, or executable code. This talk presents a teaching pattern: Motivate, Symbolize, Derive, Lambdify, Simulate, Validate. The infrastructure is stable self-contained marimo notebooks with tests and automated publishing via GitHub Actions. Within the notebook, SymPy handles the symbolic stages; NumPy, SciPy, and matplotlib handle numerics and visualization. We demonstrate the pattern through a complete interactive treatment of Isaacs' Homicidal Chauffeur, a classical pursuit-evasion differential game, and close with an invitation to collaborate on open-source educational content in advanced applied mathematics.
Why: The Gap in Advanced Applied Mathematics Education
The scientific Python ecosystem has transformed computational education. QuantEcon demonstrated that graduate-level economics can be taught through executable notebooks; the Executable Books Project built supporting infrastructure; the Scientific Python Lecture Notes teach scientific programming. These contributions work well when the subject is inherently numerical: the insight is in the computational behavior.
Advanced applied mathematics is different. In calculus of variations, optimal control, and differential game theory, the central insights are irreducibly symbolic: coordinate reductions, optimality conditions, conservation laws, geometric classifications of solution structure. A student who runs an ODE solver learns what the system does, not why the solution takes the form it does. The standard textbooks, Kirk's Optimal Control, Bryson and Ho's Applied Optimal Control, and Isaacs' Differential Games, present derivations as static prose to be followed, not arguments to be executed. The gap between following a derivation on the page and computing with it is left entirely to the reader.
What: A Six-Stage Didactic Pattern
We present a six-stage pattern structured around the learner's experience:
- Motivate — ground the problem in physical intuition and applications before any formalism
- Symbolize — define state, parameters, and dynamics as SymPy expressions before touching numerics
- Derive — execute the mathematical argument symbolically; learners witness structural results rather than being asked to trust them
- Lambdify — convert symbolic expressions to numerical functions via sp.lambdify, eliminating manual transcription and the silent errors it produces
- Simulate — integrate the lambdified dynamics and explore behavior interactively through marimo sliders
- Visualize — plot trajectories, reachable sets, and phase portraits to connect symbolic results to physical intuition
Above is the learner's arc. The author's responsibilities are separate: verification (does the code correctly implement the mathematics) and validation (is the numerical demonstration provide intuition). SymPy makes verification tractable: symbolic identities become pytest assertions that run in CI. Validation is achieved through the same simulations and visualizations the learner experiences. Crucially, this architecture affords a learner-to-author transition: a learner who forks the repo moves from consuming the author's V&V to owning it, extending derivations, updating tests, and validating through their own simulations. A static PDF cannot support this. A version-controlled repo with CI can.
How: The Toolchain
SymPy provides computer algebra for the Symbolize, Derive, and Lambdify stages. NumPy and SciPy supply the numerical substrate, in particular solve_ivp for trajectory integration. matplotlib handles visualization. marimo provides a reactive notebook environment: cells re-execute automatically when dependencies change, eliminating hidden state and keeping interactive controls consistent with the derivation. pytest and GitHub Actions close the loop: tests verify correctness on every commit and the notebook publishes automatically to GitHub Pages.
We demonstrate the full stack through the Homicidal Chauffeur problem (Isaacs, RAND, 1951; Merz, Stanford, 1971), a pursuit-evasion differential game between a fast-but-constrained pursuer and a slow-but-agile evader. The symbolic layer handles the 5-DOF to 2-DOF coordinate reduction, bang-bang optimal control, costate conservation, and Merz's singular surface taxonomy. The numerical layer simulates and visualizes what the analysis established. Source Code. Hosted Live
Dr. Michael Zargham is the Chief Engineer at BlockScience, a systems engineering firm that operationalizes emerging technology for high reliability organizations. His work focuses on digital infrastructures supporting ecosystems which span many geographies and jurisdictions. He serves roles in various non-profit organizations: advisor to Humane Intelligence, Board Member & Research Director at Metagov, Trustee for the Superset Data Trust, and is an advisor to NumFocus. Dr. Zargham received his PhD in Electrical and Systems engineering from the University of Pennsylvania with focus on optimal control for dynamic resource allocation in networks.