- Docente: Paolo Ciancarini
- Credits: 6
- SSD: INF/01
- Language: English
- Teaching Mode: Traditional lectures
- Campus: Bologna
- Corso: Second cycle degree programme (LM) in Computer Science (cod. 5898)
-
from Sep 26, 2023 to Dec 06, 2023
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 advanced course presents the main ideas and technologies useful for designing modern distributed systems, especially middleware, microservices, and API oriented design. At the end of the course the students will be able to select the best kind of middleware platform for a given problem and they will be able to apply the main distributed algorithms studied to solve practical case studies.
Prerequisites:
Be able to program with an o-o language like Java or C#
Basic notions of software engineering (eg. agile, UML)
IMPORTANT: you should be able to recognize and use the main design patterns
The concept of distributed system is introduced first, then the concept of middleware technology as a distributed programming platform. Some fundamental principles of distributed systems will be explained. This introductory material is followed by a description of the main classes of middleware systems, including those for implementing service-based applications, streaming systems and and distributed ledgers.
Syllabus
- Introduction to distributed systems and middleware technologies
- Fundamentals of distributed computing and distributed algorithms
- Naming services, security management
- Principles of concurrent programming for distributed object-based systems
- Object-Oriented Middleware (RMI) and Service-Oriented Middleware
- Peer to peer systems, coordination of P2P systems, examples of programming P2P systems
- Fundamentals of distributed ledgers and blockchain
Readings/Bibliography
vanSteen and Tanenbaum, Distributed Systems, 4ed, 2023
Gorton, Foundations of scalable systems, O’Reilly, 2022
Teaching methods
Lectures
Presentation of case studies (frameworks, middleware)
Assessment methods
•Attending class 10%
•Midterm report & presentation: 25%
•Project and final report 65%
A project (single developer or small team) concerning a distributed system, assigned by the instructor.
Intermediate (midterm): personal report on relevant distributed concepts or systems
Teaching tools
Java
Python
various libraries for distributed programming and middleware
Office hours
See the website of Paolo Ciancarini
SDGs



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