Two lectures per month for the first five months, with practice between sessions. Month six is for integration, experiments, and the final project defense.
01 / Month
Models
Failures and time
Lectures 01–02
02 / Month
Communication
Networks and replicas
Lectures 03–04 · lab 01
03 / Month
Coordination
Consensus and data
Lectures 05–06 · lab 02
04 / Month
Interaction
Transactions and events
Lectures 07–08 · lab 03
05 / Month
Reliability
Testing and architecture
Lectures 09–10
06 / Month
Integration
Experiments and defense
Lab 04 · final project
02 / theory
10 lectures. One coherent system.
Each topic starts with an engineering question and leads to a concrete outcome. Expand a lecture to open its slides, worked example, and exercise.
01Start with failureMonth 1
Failure models, network latency, partial failures, and invariants.
After the lecture: Define what a service must preserve when a node fails.
Build a distributed task service: an API accepts requests, storage preserves state, and a queue dispatches work to workers. Each lab adds a new layer and a failure scenario.
The learning loop in every lab: build, break, measure. Experiment findings → the next version of the system.
LAB 01Month 2 · after lecture 4
The network is unreliable
Build a task-service API. Add timeouts, retries, and idempotency keys. Simulate a lost response.
What to verify
A repeated request creates no duplicate task; a test reproduces the lost response.