University of Bologna · ISI LM · Prof. Andrea Omicini · A.Y. 2025/26

Distributed Systems

9 chapters~3 h 44 min readinginteractive instruments
The course in one question

How do independent machines, with no shared clock, no shared memory and no guarantee of staying up, behave as one system?

Three clocks exchanging messages: local clocks, shared messages.

Course map

I · FOUNDATIONS II · FAILURE · REPLICATION · AGREEMENT III · MODELS · MACHINERY the temporal context T the spatial context S consistent cuts need happens-before causal consistency replicate to survive faults replicas must agree on one order consensus among strangers architectures of the definitions self-healing = detect + replace ReplicaSets and Services containers move computation 1 What makes a system distributed 2 Time, order, causality 3 Space and mobility 4 Failure and recovery 5 Replication, consistency, CAP 6 Consensus 7 Distributed ledgers 8 Architectures and process algebra 9 Kubernetes in production
Map — Arrows read “is needed by”. Hover an arrow for the concept that connects two chapters; click a box to open it.

I Foundations

What a distributed system is, and the two contexts it lives in: time and space.

  1. 1
    What makes a system distributed

    What exactly makes a computational system distributed, and what should a distributed system achieve to be worth its cost?

    M0 Why Distributed Systems?M2 Roots of Distributed SystemsM4 Definitions & GoalsM5 Sorts of Distributed Systems~28 min · 3 instruments
  2. 2
    Time, order and causality

    When there is no shared “now”, what can the processes of a distributed system still agree on?

    M6 Computing with TimeC5 Logical Clocks~25 min · 3 instruments
  3. 3
    Space, situatedness and mobility

    If being distributed means being in different places, what does it take to compute with space, and to move computation through it?

    M7 Computing with SpaceC6 Code Mobility~22 min · 3 instruments

II Failure, replication, agreement

Surviving faults, keeping copies consistent, and agreeing despite both.

  1. 4
    Failure and recovery

    When part of a distributed system fails, what does it take to bring the whole system back to a correct state?

    M1 Dependability in Distributed SystemsC2 Logging & Checkpointing. Towards Recovery of Distributed Systems~25 min · 3 instruments
  2. 5
    Replication, consistency and CAP

    Once data lives in several copies, what may a reader see, and what must we give up when the network splits?

    M3 Replication & Consistency in Distributed SystemsC1 The CAP Theorem~27 min · 3 instruments
  3. 6
    Consensus

    Can unreliable processes on an asynchronous network always reach the same decision? If not, what can they still guarantee?

    C3 The Problem of Consensus in Distributed Systems~20 min · 1 instrument
  4. 7
    Distributed ledgers as middleware

    If many distributed applications need consensus, can it be offered once, as middleware, instead of being rewritten for each?

    C4 Distributed Ledger Technology. Blockchain as Middleware~30 min · 3 instruments

III Models and machinery

Describing distributed systems precisely, and running them for real.

  1. 8
    Modelling: architectures and process algebra

    How do we represent a distributed system so that we can compare designs, and then prove something about how it behaves?

    M8 Software & System ArchitecturesM9 Process Algebra~22 min · 2 instruments
  2. 9
    Running it in production: Kubernetes

    How do you keep a distributed application available, scaled and up to date while its containers and machines keep failing?

    CX Addressing production-ready distributed systems through Kubernetes (M. Matteini)~25 min · 2 instruments

Companions

Project companionThe course, seen through the Thunk project: which concepts it uses, how to show them in the artefacts, and the questions to prepare for. GlossaryEvery term the chapters define, with its definition and a link to where it is explained.