This course provides an overview of the basic notions of distributed programming, with a focus on IoT systems. The course is divided into three parts. The first one presents how distributed systems are organized and basic communication mechanisms. The second part covers distributed computations, in particular the focus is on broadcast, election, consensus and coordination algorithms. The last part introduces the main application protocols used in the IoT systems, like MQTT and COAP.
• Distributed Systems (3th ed.) - Maarten van Steen, Andrew S. Tanenbaum - freely available from authors website (2017).
• Design and Analysis of Distributed Algorithms - Nicola Santoro - Wiley (2006).
Additional material is provided by the instructor.
After completing this course students will be able to understand and describe the architectural organization of both IoT systems and generic distributed ones. Students will be familiar with and will be able to explain and use high level communication mechanisms as e.g. Remote Procedure Call, RESTful APIs and message-oriented middle-ware, and to implement distributed algorithms and evaluate their complexity. Moreover, students will be able to use standard protocols supporting communication among IoT components.
Basic knowledge of computer architecture, operating system and computers networks . Furthermore, a programming experience in Java is highly recommended.
Class lectures and exercise sessions: 48 hours
Attendance to lectures: recommended.
Course web page: https://e-l.unifi.it
Office hours: by appointment. Contact the teacher by email: letterio.galletta(AT)unifi.it
Type of Assessment
The exam consists of two parts:
1 - a report on a scientific paper assigned to students at the end of the course;
2 - an oral exam on all topics addressed during the course.
The course will contain the following topics:
• Design goals of a distributed system
• Distributed system organization (software and system architecture)
• High level communication mechanisms (Remote Procedure Call and Message-oriented Middle-ware)
• Languages for Distributed System (KLAIM and Actor model)
• Distributed algorithms for broadcast, election, consensus, clock synchronization, logical clocks, mutual exclusion
• IoT systems organization
• MQTT and COAP protocols