master
Find a file
2026-04-15 21:12:40 +02:00
notebooks Expand NTT course with visual CT/GS notebooks 2026-04-15 21:12:40 +02:00
ntt_learning Expand NTT course with visual CT/GS notebooks 2026-04-15 21:12:40 +02:00
scripts Report actual Jupyter access URL 2026-04-15 20:01:56 +02:00
tests Expand NTT course with visual CT/GS notebooks 2026-04-15 21:12:40 +02:00
tools Expand NTT course with visual CT/GS notebooks 2026-04-15 21:12:40 +02:00
.gitignore Initial notebook-first NTT course scaffold 2026-04-15 19:28:01 +02:00
AGENT_CONTEXT.md Initial notebook-first NTT course scaffold 2026-04-15 19:28:01 +02:00
pyproject.toml Initial notebook-first NTT course scaffold 2026-04-15 19:28:01 +02:00
README.md Initial notebook-first NTT course scaffold 2026-04-15 19:28:01 +02:00

NTT-learning

NTT-learning is a local-first, notebook-first course repo for understanding the Number Theoretic Transform in the context of Kyber.

The project is built around one supported learner route:

  1. notebooks/START_HERE.ipynb
  2. notebooks/COURSE_BLUEPRINT.ipynb
  3. notebooks/foundations/01_convolution_to_toy_ntt/lecture.ipynb
  4. notebooks/foundations/01_convolution_to_toy_ntt/lab.ipynb
  5. notebooks/foundations/01_convolution_to_toy_ntt/problems.ipynb
  6. notebooks/foundations/01_convolution_to_toy_ntt/studio.ipynb

The current build intentionally starts with convolution, negacyclic folding, a tiny toy NTT, and butterfly mechanics before any Kyber-specific implementation details.

Notebook Contract

Visible notebook cells follow an explicit contract:

  • META cells provide route, objective, pacing, and handoff guidance.
  • MANDATORY cells are the official walkthrough.
  • FACULTATIVE cells are optional extensions only.

Difficulty is reserved as follows:

  • 1-3 for mandatory cells
  • 4-10 for facultative cells

Route notebooks stay pure route notebooks. They contain META and MANDATORY cells only.

Local Operations

All repo-local operations live in scripts/:

  • scripts/bootstrap.sh
  • scripts/start.sh
  • scripts/stop.sh
  • scripts/restart.sh
  • scripts/status.sh
  • scripts/reset-state.sh
  • scripts/validate.sh

Typical first run:

scripts/bootstrap.sh
scripts/validate.sh
scripts/start.sh

Notes

  • The repo uses a local .venv.
  • Validation is designed to work with the standard library first, so structure and notebook execution checks can run before richer notebook tooling is installed.
  • JupyterLab is declared in pyproject.toml and installed by scripts/bootstrap.sh.