Teaching
Teaching is the thing I do best, and the thing I love most. The moment I work for isn’t the one where a student gets the right answer — it’s the one where they see why the idea had to arrive in that order, why I built the path the way I did. That click is the whole job.
Rigor and accessibility aren’t a trade-off; they’re the same job. If everyone deserves to understand something, then failing to make it understandable is the teacher’s failure, not the learner’s limit. I hold myself to that.
Different audiences don’t need different truths. They need the same truths built at different altitudes. Everything below is that claim, executed.
DATASCI 447: Generative Machine Learning (The Full Math Treatment)
DATASCI 447 is my advanced course in generative machine learning: twenty-eight lectures that build from probability foundations to the omnimodal models at the frontier of generative AI — in that order, on purpose. I built it around a conviction: the future of AI should be driven by the people who actually understand the math and the data structures underneath it. The arguments that matter most — what AI costs, who pays, what we owe each other once we can build these things — can’t be had well from the outside. They take the humanistic questions and the machine at once: enough command of the math to tell a real constraint from one that’s there only because the work is hard or nobody’s bothered yet. This class is my attempt to put that conviction into practice.
Two parts of the course have grown into standalone interactive walkthroughs — linked just below — and under them is every lecture in the course, in the order it’s taught.
ML is Bayesian, and Gen ML requires Bayes
An interactive written lecture showing that every model trained on data is already doing Bayesian inference, whether or not anyone says the word — the course’s central claim taught rather than asserted, and the floor everything after it stands on.
Interactive · runs in your browser
Modern methods in optimization
Modern ML needs an engine, and that engine is optimization. This module works through the computational methods that make it run — at both the code and the math level — and stays honest about the guarantees, and the lack of them, that shape how we actually use these models.
Standalone module ↗
The full course
- What is generative ML? (1)
- We can’t generate without encoding human beliefs (a.k.a. we’ve been Bayesian the whole time) (2, 3, 4)
- The Curse (or really blessing) of Dimensionality: Stone Bounds, PCA, and Compression (5, 6)
- Deep Learning is Structured Compression (7, 8)
- The Machine Goes Brr… (9, 10)
- A CNN is deep learning with strong priors (11, 12)
- Modern Computer Vision — Transfer Learning, LoRA, and Segmentation (13, 14)
- Generating Images with VAEs (15, 16, 17)
- GANs + VQ-VAEs are State of the Art (pre 2022, at least) (18, 19, 20)
- How I Learned to Stop Worrying and Love the Transformer (21, 22, 23)
- Autoregressive Generation and GPT — Generating Text (24)
- Everything is A Sequence? (Foundational Models under the Self-Supervised Paradigm) (25)
- Everything is everything all at once: CLIP, Stable Diffusion, and the Modern Multimodal Paradigm (26, 27)
- The Path Forward is Divergent Thinking: Model Singularity and How Stronger Priors Are the Way Forward (28)
DATASCI 110: Introduction to Data Science (The Accessible Altitude)
DATASCI 110 is the other altitude: an introductory course with no prerequisites and no calculus, where the same foundations are taught with coin flips, case studies, and a game where I cheat. Students of every background and skill level leave knowing why P(hypothesis | data) is never directly observable — which is to say, why data science can’t be objective, and why someone always has to choose the prior — years before they could follow the integral that says so. They leave knowing that causal questions are the meat of data science, but that the machinery for actually answering them is often out of reach. They leave knowing that the hype around AI is part real and part manufactured, and that once they can tell the two apart, they owe the world something. And they leave knowing that science is a human exercise at its core: no matter how much data we have, or how much of the analysis we automate, a person still has to interpret the result and carry it back to the world. This class is my best answer to why AI isn’t going to take over the world — real progress runs through the human parts of the work, and those are exactly what a model can’t replicate.
Every concept has been shaped over years of teaching to be accessible and engaging without shedding the rigor that keeps the ideas meaningful. The stakes are too high for sloppiness: the course is built so that students leave understanding the ideas, not just the mechanics.
What is causation?
Correlation, causation, and the fundamental problem of causal inference — thinking clearly with data as the thing that has to come before any of the machinery.
Bayes’ Theorem and Belief Propagation
Why data science cannot be objective: P(hypothesis | data) is never directly observable, so the posterior needs a prior and somebody has to choose it. This is the book’s thesis, taught with algebra.
AI Ethics
Judging AI’s limitations on sight, for the audience that will live with them longest.
P-hacking, hype, and what you owe the world now that you know some data science
How findings get manufactured, how hype travels, and what you owe the world once you can tell the difference.
The Psychic App
Prior is close to a dirty word in data science. It names the place where objectivity leaks out, so the instinct is to avoid saying it. But data science was never objective: a human has to interpret the data, and a human has to decide what the finding means.
This app makes that concrete by proving that I am psychic and my students are not. I call twenty coin flips and get twenty right. They call twenty and they don’t. There is a trick, and I am not going to reveal it here — but the app, and the explanation that follows it, are the best way I know to show that even a perfectly constructed data exercise needs a prior before anyone can say whether a finding is good or BS.
The full course
- What this class is and why it is all about correlation (1, 2)
- Correlation is Necessary but not Sufficient for Causation. (3, 4)
- A Common Sin: Selecting on The DV (5)
- The All Else Equal Condition and Why the World Doesn’t Work This Way (6, 7)
- Forcing AEE Through Randomization is Rarely Both Possible and Ethical (8, 9, 10, and 11)
- Sometimes, The World Gives Us Randomization with No Blood on Our Hands (but we can’t force it by controlling for confounding) (12, 13)
- Difference-In-Differences, Regression Discontinuity Designs, and Instrumental Variables Can be Used but Only When Every Assumption Holds (14, 15, 16, 17)
- Human Logic Can Offset Lack of Causal Identification - How Bayes’ Theorem Allows Us to Answer Questions Anyways (18, 19)
- Is Prediction Causation? Is it Sufficient? An Ideas-First Intro to Machine Learning (20, 21, 22)
- AI Is Fancy K-Nearest Neighbors. Why We Shouldn’t Trust KNN to Replace Human Judgment (23)
- P-Values Don’t Tell Lies - People Do (intentionally or unintentionally) (24)
- The Modern State of Science and What You Owe The World Now That You Know Some Stuff (25)
Priors All the Way Down — the book
Priors All the Way Down: Modern Machine Learning, From Foundations to Generative AI is a graduate textbook in progress. It opens on a classifier that tells frogs from airplanes at 88% accuracy and asks what the model actually knows about frogs. Nothing: it has a decision boundary that works because the structure of the problem — frogs live on the ground, airplanes live in the sky — was carried in by the data and the labels, not learned by the model. The accuracy is real; the understanding is not. That gap runs straight through the modern field, and the book’s claim is that machine learning is the project of encoding human knowledge into computers, with the Bayesian framework as the only formalism honest enough to name the encodings being made. Architectures are priors. Losses are priors. Training data is a prior. Metrics are priors. The question is never whether the priors are there — they always are — but whose knowledge got encoded, with what care, and with what awareness of what the encoding costs.
The existing textbooks are organized around techniques: a chapter for convolutional networks, a chapter for attention, a chapter for diffusion, each standing more or less on its own. A reader who finishes one is conversant with the techniques but not equipped to open a paper they have never seen and ask what its architecture is committing to. This book is organized around the framework instead — every parameterized model trained on data is doing Bayesian inference whether or not the modeler invokes Bayes’ rule; the marginal likelihood is a compass to navigate by rather than a quantity to compute; the generative lineage from the autoencoder through the VAE, GAN, VQ-VAE, and DALL·E 1 to diffusion is one continuous argument in which each architecture is motivated by the last one’s failure and each fix is a sharper prior; and hallucination is not a malfunction to be engineered away but the framework functioning exactly as predicted. The closing chapters argue that the field’s methodological choices carry real distributional consequences, at the same technical depth as everything before them. The systems the book covers will be obsolete in a few years. The framework is built to outlast them.
The interactive Bayes walkthrough above is the book’s opening move made live — the Bayesian Reveal — and the lecture arc runs the same argument the book does: the motivated-failures lineage through the VAE, GAN, and VQ-VAE, and the stack-of-priors frontier at CLIP and diffusion. Course and book are one project at two altitudes.
Other teaching
- Intro to Programming Principles
- Bayesian Statistics
- Statistical Machine Learning
- From Inquiry to Inference: A Graduate Introduction to Data Science