Teaches the undergraduate systems sequence and supervises four doctoral students. Has run this course every term since it was introduced, and rewrites about a third of it each year.
Computer Science: Systems & Machine Intelligence
Technology · 12 weeks · Free
Course description
This course takes you from a working knowledge of one programming language to the point where you can design, build and defend a complete system. It is taught by the same staff who teach the equivalent undergraduate module, and it uses the same assessments.
You should expect roughly six hours of work each week: a two-hour live session, a practical exercise, and reading. Everything is recorded, so the live session is genuinely optional if your week goes wrong.
What you will learn
- Model a problem before writing any code, and say why your model is the right one.
- Choose data structures on the basis of measured behaviour rather than habit.
- Write tests that would actually have caught the bug you just fixed.
- Read an unfamiliar codebase quickly and safely.
- Explain a technical decision to someone who will never read the code.
Weekly outline
| Week | Topic | Assessment |
|---|---|---|
| 1–2 | Foundations, tooling and version control | Practical exercise |
| 3–4 | Data structures and complexity in practice | Practical exercise |
| 5–6 | Designing for change: interfaces and boundaries | Short written piece |
| 7–8 | Testing, debugging and reading other people's code | Practical exercise |
| 9–10 | Concurrency and the failures it introduces | Group critique |
| 11–12 | Individual project and presentation | Final project |
Who it is for
People who already write some code and want to get better in a structured way — career changers, self-taught developers, and students from other subjects who found they liked the programming part more than they expected.
There is no entry requirement and no application. If you can commit six hours a week for 12 weeks, you can take this course.