Skip to content

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.

  1. Static checking
  2. Types in Python and the mypy baseline
  3. Testing
  4. Code review
  5. Version control and the PR as a unit of work
  6. Specifications
  7. Designing specifications
  8. Avoiding debugging, and debugging
  9. Mutability, aliasing, immutability
  10. ADTs, abstraction functions, rep invariants
  11. Equality, hashing, and refactoring