Course-development repository for probabilistic machine learning.
The course's intellectual purpose and mathematical progression are defined in course_architecture.typ (PDF). Detailed proposed teaching allocations, Murphy readings, notebook practice and reference material are in the curriculum map (PDF). The student syllabus summarizes the plan; architecture_audit.md tests scope proposals. The actual curriculum map will be filled in alongside the proposed map as teaching proceeds; no class has yet been taught.
The student runtime is Google Colab; uv provides the reproducible local check
in the repository's standard .venv.
uv sync --locked
uv run python scripts/execute_notebook.py Lectures/L01_Probability_Statistics/coin_model.ipynb --expect-file figures/coin_model__prior_likelihood_posterior.svg --expect-file figures/coin_model__sequential_updating.svg --expect-file figures/coin_model__posterior_predictive.svg --expect-file figures/coin_model__sampling_monte_carlo.svg
uv run python scripts/execute_notebook.py Lectures/L01_Probability_Statistics/task_examples_figures.ipynb --expect-file figures/task_examples_figures__prediction_iris_logistic.svg --expect-file figures/task_examples_figures__generation_vae_samples.png --expect-file figures/task_examples_figures__discovery_gmm_clusters.svg --expect-file figures/task_examples_figures__action_active_learning.svg --expect-file figures/task_examples_figures__iris_prediction.svg --expect-file figures/task_examples_figures__iris_generation.svg --expect-file figures/task_examples_figures__iris_discovery.svg --expect-file figures/task_examples_figures__iris_action.svg --expect-file figures/task_examples_figures__iris_four_questions.svg
uv run jupyter lab
To intentionally regenerate the figures produced by a notebook, run the same
notebook-check command with --in-place and review the resulting figure
changes.
task_examples_figures.ipynb also pulls in scikit-learn and a CPU build of
torch, on top of the NumPy/SciPy/Matplotlib baseline used by
coin_model.ipynb; both are pinned in pyproject.toml (torch resolves from
the pytorch-cpu extra index configured in [tool.uv.sources]). Only the VAE
cell needs torch; every figure draws from its own seeded generator, so that
cell can be skipped without changing any other figure.
L01's supplied plotting functions live in src/plots.py. The
development notebook imports this local module; the published student notebook
fetches the same file from the current main of the student repository. The
notebook retains its model and mathematical calculations. Hosted Colab validation
is still required before publication.
Before publishing a notebook, connect it to the course-target runtime through
the official Google Colab VS Code extension and run every cell from a fresh
hosted runtime. The current baseline is Colab 2026.07 on CPU.
This repository is the development source for the student materials repository. Only files deliberately staged in public_content/ are mirrored to students. See student publishing instructions for Snakemake installation, explicit publication targets, credential setup, checks, initial-history preservation and semester archival.
The default snakemake --cores 1 build writes only under ignored build/ and never stages student content. Publishing a lesson notebook or slide deck requires an explicitly named publish_* rule and an instructor-authorized commit changing public_content/. The first authenticated synchronization is deliberately manual; later snapshot changes trigger GitHub Actions.
