87474 - Distributed Systems

Academic Year 2026/2027

  • Moduli: Andrea Omicini (Modulo 1) Giovanni Ciatto (Modulo 2)
  • Teaching Mode: In-person learning (entirely or partially) (Modulo 1); In-person learning (entirely or partially) (Modulo 2)
  • Campus: Cesena
  • Corso: Second cycle degree programme (LM) in Computer Science and Engineering (cod. 6699)

    Also valid for Second cycle degree programme (LM) in Computer Science and Engineering (cod. 6699)

Learning outcomes

The course aims at providing students with a solid understanding of the fundamental goals, features, roles, and issues of distributed systems. It explores the underlying principles in terms of the abstractions, models, architectures, and formalisms aimed at representing and designing distributed systems. It focuses on the main issues linked to physical distributions, such as scalability, dependability, fault tolerance, resource sharing, computation in time & space. The main theorems, algorithms, and patterns are illustrated, and connected to the most widely adopted distributed technologies and middleware, which students can test in the lab to gain hands-on experience on the main technical and practical problems of distributed systems programming and engineering.

Course contents

  • Case Studies
    • The CAP Theorem. Availability, Consistency, Failure in Distributed Systems
    • The Problem of Consensus in Distributed Systems
    • Distributed Ledger Technology. Blockchain as Middleware
    • Representational State Transfer (ReST)
    • Logical Clocks
    • Simple Agents in JADE
    • Coordination in Linda
    • Code Mobility
  • General Issues of Distributed Systems
    • Why Distributed Systems?
    • Replication & Consistency in Distributed Systems
    • Dependability in Distributed Systems
    • Roots of Distributed Systems. Computation in Space & Time
    • Definitions & Goals for Distributed Systems
    • Sorts of Distributed Systems
    • Modelling Distributed Systems. Software & System Architectures
    • Modelling Distributed Systems. Process Algebra
    • Computing with Time
    • Agents for Distributed Systems
    • Coordination of Distributed Systems
    • Computing with Space
  • Technologies for Distributed Systems
    • Infrastructural components and interaction patterns for distributed systems
    • Tools and diagrams for distributed systems modelling
    • Basic mechanisms for distributed systems
    • Communication mechanisms (stream- and packet-based interaction with sockets) in Python
    • Data presentation, serialization and deserialization: tools and technologies
    • Anatomy of Remote Procedure Calls
    • Case study: guided design and implementation of a distributed system from scratch

Readings/Bibliography

The bibliography is made available through the course web site.

Teaching methods

  • Lessons with slides
  • Examples discussed and built by the teachers
  • Lab activity

Assessment methods

  • On-campus written exam
  • Project (optional)

Teaching tools

Links to further information

https://apice.unibo.it/xwiki/bin/view/Courses/Series/Ds2627/

Office hours

See the website of Andrea Omicini

See the website of Giovanni Ciatto

SDGs

Quality education Industry, innovation and infrastructure

This teaching activity contributes to the achievement of the Sustainable Development Goals of the UN 2030 Agenda.