- 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 17, 2024 to Dec 03, 2024
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 presents the fundamental ideas on distributed computing systems and their principles of construction and analysis
We also study the most common middleware technologies and the related methods for distributed programming
Goal: Understand principles and concepts underlying distributed computing: communication, concurrency, coordination and related algorithms
Goal: Learn how to design simple reliable distributed applications using (open source) middleware
Goal: Gain practical experience on the development of simple distributed systems (eg. in Java orPython)
Prerequisite: Be a graduate student – this is an advanced course.
You should have passed exams of: Operating systems, Networking, Software engineering.
Readings/Bibliography
vanSteen Tanenbaum Distributed Systems, 4ed, 2023
Gorton, Foundations of scalable systems, O’Reilly, 2022
Teaching methods
Lectures
Hands-on homework assigned weekly
Midterm lecture on a topic chosen by the student
Assessment methods
Hands on homework 10% each (please present your result of at least 5 labs) – max 50%
Midterm report & presentation: 50%
Attendance: +/- bonus up to 10%
(negative bonus if you do not attend classes or get too many late deliveries of labs)
Teaching tools
Java or Python plus middleware libraries
Open source software to run on a distributed platform (Eg Kafka, Pulsar, etc)
LaTeX/Overleaf for preparing reports
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.