Repository layout

Everything for one chapter lives in one folder. The deck, its compiled PDF, its figures and the companion lab notebook sit side by side, so teaching or adapting a chapter means opening a single directory rather than tracking one file across two trees. The advanced modules and the projects follow the same shape.

.
├── Chapters/                        # one folder per ISLP chapter — deck + lab together
│   ├── README.md                    #   deck guide: design, exercise counts, lecture plan
│   ├── chapter_NN/
│   │   ├── chapter_NN.tex           #   deck source
│   │   ├── chapter_NN.pdf           #   compiled deck (committed)
│   │   ├── chapter_NN_lab.ipynb     #   companion lab, with stored outputs
│   │   ├── images/                  #   matplotlib figures used by the deck
│   │   └── make_figures.py          #   regenerates them, where a deck ships one
│   └── Advanced/                    #   nine optional self-study modules, same shape
│       ├── README.md
│       ├── STYLE_DECK.md            #   the house style, distilled, for a new module
│       ├── STYLE_NOTEBOOK.md
│       └── advanced_NN_topic/
│           ├── advanced_NN_topic.tex
│           ├── advanced_NN_topic.pdf
│           ├── advanced_NN_topic_lab.ipynb   #  deck, PDF, lab, figures — as above
│           ├── images/
│           └── make_figures.py
├── Projects/                        # six short projects: a decision on real data
│   ├── README.md
│   └── project_N_slug/
│       ├── README.md                #   the brief the student reads
│       ├── project_N_starter.ipynb  #   Colab-ready scaffolding
│       └── SOLUTION_NOTES.md        #   expected findings, the trap, marking guide
├── Teaching_Guide/                  # instructor kit: plan, index, checklist, handouts
│   ├── semester_plan.md             #   the eleven sessions on one page
│   ├── slide_index.md               #   generated: sections, exercises, page numbers
│   ├── before_class.md              #   the ten-minute pre-lecture checklist
│   ├── runsheets/                   #   lecture_NN.md + module_aN_*.md — git-ignored (assessment)
│   ├── handouts/                    #   printable 2-up decks — build output
│   ├── make_index.py                #   generates slide_index.md from the compiled PDFs
│   ├── check_decks.py               #   deck health: page counts, frames that overrun
│   ├── check_runsheets.py           #   validates every runsheet page reference
│   └── check_notebooks.py           #   re-executes notebooks, diffs stored outputs
├── Mock_Exams/                      # eight papers — git-ignored (assessment material)
├── ALL CSV FILES - 2nd Edition/     # course datasets (statlearning.com)
├── docs/                            # this documentation (Sphinx)
├── Source_Material/                 # copyrighted book PDFs & figure banks — git-ignored
├── Makefile                         # one-command rebuild: figures, decks, index, handouts
├── requirements.txt                 # what the notebooks need (deliberately loose)
├── constraints.txt                  # the exact build that reproduces the stored outputs
├── CITATION.cff                     # how to cite these materials
└── README.md

What is and isn’t committed

Committed

Deck LaTeX sources and compiled PDFs, notebooks with stored outputs, datasets, project briefs and starters, this documentation

Git-ignored

Mock_Exams/ and Teaching_Guide/runsheets/ (assessment material), Source_Material/ (copyrighted textbook PDF and figure banks), LaTeX build artefacts (*.aux, *.log, *.nav, …), .venv/, .ipynb_checkpoints/, Chapters/*/data/, docs/_build/, and the documentation’s staged copies (docs/labs/, docs/advanced_labs/, docs/_extra/)

Compiled deck PDFs are committed on purpose: a colleague should be able to clone the repository and teach from it without a TeX installation. The exams are the exception — publishing worked solutions to a public repository would make them useless as assessment.

Naming conventions

  • Chapter numbers always follow ISLP, zero-padded to two digits (chapter_04), so slides, labs and datasets line up. chapter_00 / chapter_00b hold the two precourse decks. The sequence stops after 08 and has gaps at 09 and 10: chapters 09–13 keep their decks and labs but live under Advanced/ as self-study modules A5, A9, A6, A8 and A7, so Chapters/chapter_* globs to the eight taught chapters plus the two precourse decks and nothing else.

  • Every file in a chapter folder is named for that folder, so a path is self-describing and a glob is unambiguous: chapter_04/chapter_04.tex, chapter_04/chapter_04_lab.ipynb. The build scripts rely on this — they find decks with Chapters/chapter_*/chapter_*.tex and labs with Chapters/chapter_*/chapter_*_lab.ipynb.

  • Exam folders carry Mock in the name and are keyed to the chapter they follow (Mock_Exam_2_after_Chapter_06), never to a date or a session number: the calendar can shift, and two of the three chapters span two sessions, so a session number would be ambiguous. This matches the checkpoints in The course at a glance and Mock exams. Every paper also repeats MOCK EXAM in a footer on every page and in its PDF title, so a single loose sheet cannot be mistaken for the real examination.

  • Exam PDFs use Title_Case, their LaTeX sources snake_case — the -jobname argument in the build command is what maps one to the other.