- Docente: Andrea Omicini
- Crediti formativi: 6
- SSD: INF/01
- Lingua di insegnamento: Inglese
- Moduli: Andrea Omicini (Modulo 1) Giovanni Ciatto (Modulo 2)
- Modalità didattica: A Distanza - E-learning (Modulo 1) A Distanza - E-learning (Modulo 2)
- Campus: Bologna
-
Corso:
Laurea Magistrale in
Informatica (cod. 5898)
Valido anche per Campus di Cesena
Laurea Magistrale in Ingegneria e scienze informatiche (cod. 6699)
-
Orario delle lezioni (Modulo 1)
dal 19/09/2025 al 15/12/2025
-
Orario delle lezioni (Modulo 2)
dal 17/10/2025 al 19/12/2025
Conoscenze e abilità da conseguire
Il corso presenta le principali tecnologie attualmente usate per sviluppare sistemi software distribuiti. Inizialmente si introducono i principi fondamentali dei sistemi distribuiti e successivamente si discutono le tecnologia middleware che mettono a disposizione piattaforme per la programmazione distribuita. Questo materiale introduttivo è seguito dalla descrizione delle principali architetture per la realizzazione di sistemi distribuiti, incluse quelle per implementare applicazioni basate su servizi in ambiente cloud. Alla fine del corso lo studente saprà selezionare la piattaforma middleware appropriata per un dato problema, e sarà in grado di applicare le tecnologie presentate per risolvere casi di studio pratici. L'esame consisterà di 1) una presentazione preliminare di un articolo di ricerca scelto dallo studente e di 2) un progetto finale assegnato dal docente.
Contenuti
- 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
Testi/Bibliografia
The bibliography is made available through the course web site.
Metodi didattici
- Lessons with slides
- Examples discussed and built by the teachers
- Lab activity
Modalità di verifica e valutazione dell'apprendimento
- Development of an individual/group project involving the design and prototyping of a distributed system (software+report)
- Presentation and discussion of the aforementioned project
Strumenti a supporto della didattica
- web site of the professor
- web page of the course with slides (PDF), other materials and useful links
- recorded lectures for background topics
Link ad altre eventuali informazioni
https://apice.unibo.it/xwiki/bin/view/Courses/Series/Ds/
Orario di ricevimento
Consulta il sito web di Andrea Omicini
Consulta il sito web di Giovanni Ciatto
SDGs


L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.