Distributed Systems and Middleware Technologies

Course for the MSc in Computer Engineering (a.y. 2025/26)

Dept. of Information Engineering

School of Engineering, University of Pisa

nr. of credits (CFUs)
6

 

Description

~~~~~~~~~~~~~~~

The course aims to provide students with proper conceptual and technological tools for the design, analysis, and development of modern distributed software applications. After introducing models, paradigms, and algorithms for distributed software, various types of middleware systems are presented, focusing on the issues they have been designed to deal with.
Students will learn to design, implement, and integrate distributed software, possibly made of heterogeneous components. Moreover, they will acquire the ability to choose and apply the most suitable middleware solutions to address practical problems in distributed enterprise applications.

Prerequisites: knowledge of Operating Systems basics and synchronization techniques, C, and mastering of Java.

All the activities are supported by information and learning material posted and updated in the dedicated MS Teams room (click on the link box above to access it).

News/Alerts

~~~~~~~~~~~~~~~

  • News and alerts are ordinarily posted on the course MS Teams room.

Schedule

~~~~~~~~~~~~~~~

First lecture on Sept. 22nd 2025, Mon., h.14:30

Monday Tuesday Wednesday Thursday Friday
14:30-16:30
SI 5
13:30-16:30
ADII 1

The lectures' schedule and relative updates, as well as exam dates, are available on a public Google Cal, which can be imported using its ICS address.

Syllabus

~~~~~~~~~~~~~~~

The topics covered in each lecture are reported in the record of lessons (see the upper menu); The overall official syllabus on the University Course Catalogue can be accessed via the course code box at the top of the page.
Hereafter, a categorized list of class topics is presented (to be possibly slightly updated along the course progression): It corresponds to the logical structuring of class content. Click on the main subject lines to show up sub-topics.
To promote early practical training, the presentation order of topics in the lectures does not necessarily follow this scheme.

  • Introduction
    • Notion of concurrency
    • Ordering of activities
    • Recall: Processes and Treads
      • Thread Pooling and Java Executors
      • Futures for Asynchronous Evaluation
      • Java Synchronizers
    • Parallelization and Speedup
    • Models and Paradigms: Shared Memory vs. Message Passing
    • Functional Programming and Concurrent Programs
  • Message-Passing Model
    • Models for Distributed Systems
    • Asynchronous and Synchronous Models
      • Process Addressing and Channels
      • Unblocking and Blocking Constructs
      • (Guarded Commands)
      • Example: Bounded Buffer in the Asynchronous Model
      • The Actor Model
    • Logical Time and Causality
      • The Happened Before Relation
      • Lamport Timestamps (partial/total order)
      • Vector Timestamps (with properties), Consistent Cuts
      • Physical Clock Synchronization - Concepts and Algorithms (not done in a.y. 2021/22)
    • Erlang, a Concurrent Language with Message-Passing
      • Basic Concepts of Functional Concurrent Programming
      • The Erlang System
      • Erlang Sequential Programming
      • Erlang Processes and Message Passing
      • Shaping Client-Server Interaction
      • OTP: Ideas for Middleware Support
      • Distribution
      • (Distributed) Error Handling
    • Distributed Algorithms
      • Distributed Mutual Exclusion
        • Centralized Solution
        • Ricart-Agrawala Algorithm, Token Ring Solution
      • Dealing with Faults
        • Faults Models
        • Election: Ring Based and Bully Algorithm
        • Basic Multicast
  • Communication APIs and Frameworks
    • Message Passing APIs
    • Direct and Indirect Communication
      • RPC - Remote Procedure Call
        • Request-Reply Protocols, Idempotent Operations, Call Semantics
        • Interface Description Languages
        • RPC Implementation
      • RMI - Remote Method Invocation
        • Remote Interfaces and Remote References
        • Architecture: Servants and Location Services
        • From Ordinary to Distributed Garbage Collection
        • Remote Class Loading
      • Message Oriented Middleware
        • Message Queues and Publish-Subscribe Systems
        • JMS
    • Web Services
      • SOAP-based Web Services
      • RESTful Web Services and REST resource management; JSON
  • Frameworks for Distributed Applications
    • Basic Patterns and Architectures
      • 3-tier Architecture
      • Container Pattern and Interception
      • MVC - Model View Controller
    • Web Applications
      • Architecture of a Web Server
      • State and Session Management
      • Java Servlets
        • Lifecycle and Service Methods
        • Classes, Configuration, and Deployment
        • Servlet Filters; Concurrency Issues
        • Java Server Pages and template systems
      • Deployment Issues
    • Distributed Components
      • Application Servers
      • Frameworks for Web Applications
      • Basics of JEE components

Reference Textbooks

~~~~~~~~~~~~~~~

Specific learning material is ordinarily posted on the course MS Teams room. The course content is covered in the textbooks listed below. They can be used as reference material, with a broader discussion of the course subjects.

Title Authors Reference Notes
Operating System Concepts, 10th ed. Abraham Silberschatz, Peter B. Galvin, Greg Gagne Wiley
ISBN: 978-1-119-32091-3
LINK A classical resource on OSs, discussing classic concurrency problems as well.
It covers background topics.
Distributed Systems - Concepts and Design, 5th ed. George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair Addison-Wesley
ISBN10: 0132143011
LINK A comprehensive overview of distributed systems, addressing both theoretical and architectural issues.
Learn You Some Erlang for Great Good! Fred Hebert No Starch Press
ISBN-13: 9781593274351
LINK A beginner's tutorial to Erlang Programming; online free version available.
It also covers several Erlang details not presented in the course.
Distributed Systems 4th ed. Maarten van Steen and Andrew S. Tanenbaum ISBN-13: 978-9081540636 LINK One of the most popular textbooks on distributed systems; it covers more topics than those of our course. Useful general reference.
Distributed Algorithms - An intuitive approach 2nd ed. Wan Fokkink ISBN-13: 9780262037662 LINK Textbook dedicated to distributed algorithms only (only basic coverage is provided in this class).

Classwork Material

~~~~~~~~~~~~~~~

All the material for lab sessions is available on the course MS Teams room.

Final Exam

~~~~~~~~~~~~~~~

The final exam is organized as follows:

  • development of a software project (by a team of students); the teacher must approve the proposed specifications. The final approval of the overall work is necessary to get admitted to the oral exam. An appointment for the final project presentation/discussion must be requested to the teacher in advance, independently of the official exam dates.
  • oral exam (possibly with written exercises), on all the course topics.

To take the oral exam, it is required a prior subscription on the "Exams Portal".

Final Project

~~~~~~~~~~~~~~~

Students are required to complete a project - namely, a working distributed software system - before getting admitted to the oral exam. Once completed, the project has to be officially presented to the teacher, by appointment. The project should be developed by preference in a team (up to 3 people).
The project subject and structure have to be freely proposed by the student(s), who will draw down the relative specification document, to be approved by the teacher.
Within the project, it is required to deal with issues on synchronization/coordination, and on communication, proposing proper solutions. Such issues have to be clearly identified in the project specification document.
The student is free to make use of assorted technological solutions, whose adoption must be justified at project presentation time. In any case, the sofware system must include a portion written in Erlang.
At project presentation, a working instance of the developed application must be shown, deployed over multiple nodes; the accompanying documentation will be handed over to the teacher.
English is the only language to be used in any document.

~~~~~~~~~~~~~~~

The following web references can be useful for practical programming.

Apache NetBeans IDE Link
IntelliJ IDEA IDE Link
Eclipse IDE Link
Cheat Sheet for JCF Link
Cheat Sheet for Java8 Streams Link
Maven Link
Erlang Link
Akka Link
gRPC Link
Server-side web frameworks Link

 

UNIPI Logo

 

DII Logo