Skip to content

Course materials

Software is always growing:we expect to modify it for as long as anyone uses it. Our units address this problem at different spheres in modern software engineering: in low level code design, high level software architecture, then reaching into the real world of requirements and how the software itself is built.

UnitWeeksScaleWhat's different
Unit 1 — Design in the small1–5Inside a codebase you ownEvery caller is in your diff. Measure a change, name what makes it expensive, repair it safely, make it testable.
Unit 2 — Layers & interfaces6–7At its boundariesThe same discipline at module scale (layers), then at a contract you've published and can no longer move
Unit 3 — Requirements & specification9–11Before the code existsWhere the thing you're building comes from, and how to say what it must do precisely enough to check
Unit 4 — Software process12–13Across a teamHow several people change one codebase without breaking each other, and what has to be automated for that to hold

Course reader licensed under CC BY-SA 3.0.