Guided Labs
Download the offline OOD foundations kit. Extract it and run from its directory with Python 3.10+; only the standard library is needed. No accounts, paid tools or network access are required.
python check.py --module reference
python check.py --module starter
python run_labs.py --module reference
The reference should pass four check groups. The untouched starter deliberately
fails with NotImplementedError. Implement it before opening the reference, then
run checks and examples with --module starter. Use the included evidence template
for actual observations, commands, contract arguments and assistance.
| Lab | Work | Acceptance evidence |
|---|---|---|
| L1: values and leaks | Diagnose legacy.py; implement Money | Invalid domains rejected explicitly; currency checks, exact arithmetic, ordinary immutability |
| L2: substitutable state machines | Implement cached and derived accounts | Same public traces as an independent scalar model, failed-state preservation, stable history and independent instances |
| L3: client roles and wiring | Implement statement and quote | Minimal read-only fake, call counts, failure propagation and two callable policies |
| L4: observable report behavior | Implement rendering and output boundary | One-shot iterators, escaped text, invalid late rows, no writes on input failure and explicit sink limitations |
Budget 16–24 hours. Follow the design contracts and README's exact HTML format. The checker enumerates bounded traces; write the invariant and failure argument too. Architecture review must compare ownership, change pressure and cost; the checker does not require inheritance or a particular number of classes.
The legacy fixture intentionally fails useful contracts. New validation, escaping and changed output timing are declared repairs/migrations, not evidence that its old behavior was preserved. Keep an unaffected case alongside each intentional change.
Construction and semantics continuation
Complete the construction clinic after cluster 6. Its DS1–DS4 evidence is required alongside existing C01–C10 gates; original labs remain. The 8–12 additional hours are explicitly included in the updated module/semester allocation.