93468 - Distributed Software Systems

Academic Year 2026/2027

  • Teaching Mode: Blended Learning
  • Campus: Bologna
  • Corso: Second cycle degree programme (LM) in Computer Science (cod. 6698)

Learning outcomes

The course presents some current technologies to develop distributed systems. The concept of distributed system is introduced first, then the concept of middleware technology as a distributed programming platform. The fundamental principles of distributed systems will be explained. This introductory material is followed by a description of the main architectures of distributed systems, including those for implementing and deploying service-based applications in the cloud. At the end of the course the students will be able to select the appropriate middleware platform for a given problem and to apply the main technologies presented to solve practical case studies. The exam will consist of 1) a midterm presentation on a research paper chosen by the student and 2) a final project assigned by the instructor.

Course contents

This course introduces the fundamental principles of distributed software systems, with a focus on communication, concurrency, coordination, fault tolerance, and middleware-based design. It combines theory and practice to help students design and reason about reliable distributed applications, while highlighting where LLMs can be used as high-value components in modern distributed architectures.

Syllabus: Introduction to distributed systems; distributed programming principles; middleware technologies; time, ordering, and consensus; transparency, replication, and failure handling; cloud, edge, and service-oriented architectures; practical labs on distributed application design, including selected LLM-enabled use cases such as orchestration, service integration, and system observability

Readings/Bibliography

Distributed Systems (4th ed., 2023) by van Steen & Tanenbaum, available online.

Additional papers concerning distributed systems and LLM as components will be distributed 

Teaching methods

Short interactive lectures, guided discussion, in-class problem solving, and hands-on labs. A flipped-classroom style will be used for selected topics, with pre-reading and paper discussion before class. Labs and mini-projects will focus on designing, implementing, and evaluating distributed services. Selected sessions will include case studies on LLM-enabled distributed architectures, with emphasis on design trade-offs, reliability, and observability.

Assessment methods

The assessment consists of laboratory assignments, a midterm report and presentation, and a final exam. Labs evaluate practical skills, the report and presentation assess the ability to analyze and communicate a distributed-systems topic, and the final exam checks understanding of the core theoretical concepts. Selected LLM-related aspects may be included in labs or the project, especially for architecture, reliability, and observability.

Teaching tools

Lecture slides, lab assignments, reference papers, and a reproducible coding environment. Students will use a shared code repository, container-based setups, and short demo notebooks for experiments. Selected sessions may include LLM-based tools for observability, debugging, or service orchestration, but only as supporting material for the core distributed-systems content.

We will use Virtuale and MS Teams.

Office hours

See the website of Paolo Ciancarini

SDGs

Quality education Industry, innovation and infrastructure Sustainable cities Responsible consumption and production

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