This is the source repository for the book "Programming Differential Privacy." You can find the book online here!.
The English book (notebooks/) and the Chinese translation (zh_cn/notebooks/) are built with Jupyter Book 2; each has a myst.yml.
Deploys are automatic: every push to master runs .github/workflows/deploy.yml, which builds both books and publishes them to the gh-pages branch (English at /, Chinese at /cn/). Executed notebook outputs are cached, so only notebooks that changed are re-run.
To build locally you need Python 3.12, uv, Node.js 20+, and XeLaTeX with ctex (e.g. MacTeX) for the PDFs:
uv venv --python 3.12 .venv
uv pip install --python .venv/bin/python -r requirements.txt
./build.sh
This builds both books (html and pdf) with --strict, so any build warning fails the build, and assembles the site in _site/. To preview one book while editing:
cd notebooks && ../.venv/bin/jupyter-book start --execute
./deploy.sh builds and publishes from your machine, bypassing CI.
-
The book content is licensed under CC BY-NC-SA 4.0:
You may share and adapt with attribution, for non-commercial purposes, and under the same license. -
The code examples are licensed under the MIT License:
You may use, modify, and distribute the code freely, even for commercial use.
