CS301 · Learning materials
Eleven chapters. Each is self-contained: outcome, primary reading, teaching, two misconceptions, worked example, self-check, problem set, solutions. Chapter cross-references are links — if a chapter says it assumes another, the link is there to go back to.
The course it follows sets no textbook: its readings are self-authored class
pages, linked per chapter from MIT 6.031. Every running example is real code from
the FTM backend, checked against HEAD when the chapter was written.
Assessment: problem sets 20 marks per chapter (formative, 220 total); coursework labs per the module page; the examination paper is a separate page.
Chapters
Section titled “Chapters”- Static checking
- Types in Python and the mypy baseline
- Testing
- Code review
- Version control and the PR as a unit of work
- Specifications
- Designing specifications
- Avoiding debugging, and debugging
- Mutability, aliasing, immutability
- ADTs, abstraction functions, rep invariants
- Equality, hashing, and refactoring