Skip to Main Content (Press Enter)

Logo UNINSUBRIA
  • ×
  • Home
  • Degrees
  • Courses
  • Jobs
  • People
  • Outputs
  • Organizations
  • Third Mission
  • Projects
  • Expertise & Skills

UNI-FIND
Logo UNINSUBRIA

|

UNI-FIND

uninsubria.it
  • ×
  • Home
  • Degrees
  • Courses
  • Jobs
  • People
  • Outputs
  • Organizations
  • Third Mission
  • Projects
  • Expertise & Skills
  1. Courses

SCV0026 - Distributed and concurrent programming

courses
ID:
SCV0026
Duration (hours):
72
CFU:
8
SSD:
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Located in:
Como - Università degli Studi dell'Insubria
Year:
2025
  • Overview
  • Syllabus
  • Degrees
  • People

Overview

Date/time interval

Secondo Semestre (23/02/2026 - 29/05/2026)

Syllabus

Course Objectives



The course aims at enabling students to program concurrent and distributed software systems. To this aim, students will learn to recognize specific problems connected with concurrency and distribution, and will learn specific techniques to develop concurrent and distributed programs.
After successfully completing the course, the student will be able to
1. Understanding the characteristics and mechanisms of concurrent programs (i.e., programs involving multiple execution threads); recognizing conditions in which errors like Race Conditions, Deadlock and Starvation can occur.
2. Understand and apply primitive methods to create and manage threads, with specific reference to the communication and synchronization primitives; Understand and apply techniques that prevent errors like Race Conditions, Deadlock and Starvation.
3. Understand and implement the main inter-thread communication paradigms.
4. Understand the ISO/OSI communication protocol stack.
5. Understand the characteristics of distributed programs; understand and use sockets to implement inter-process communication.
6. Understand and use RMI to build distributed object-oriented programs.
7. Understand the basics of event-based programming in concurrent and distributed programs and write programs that react to events properly.
In addition, students will become autonomous in recognizing problems specifically connected with concurrency and distribution, and in choosing the proper techniques to obtain the desired behavior from concurrent and distributed software systems.
Finally, students will learn the terminology that is specific of the concurrent and distributed software domain.


Course Prerequisites



Students have to master sequential programming before tackling concurrent and distributed programming. Specifically, students must be able to program in Java.
The necessary knowledge and abilities should have been acquired in the first year in the Programming course, which has to be passed beforehand.


Teaching Methods



The course includes frontal lessons (48 hours) and exercise lessons (24 hours).
Frontal lessons are dedicated to illustrating the elements of concurrent and distributed programming, of typical problems and of specific programming techniques.
During exercise lessons students participate in building concurrent and distributed programs through the practical usage of programming tools (especially Eclipse).


Assessment Methods



Exams aim at verifying that students have successfully acquired the knowledge and abilities described in the "Objectives" section, by evaluating the level of knowledge and the ability to apply in practice the programming techniques mentioned in section "Contents", possibly combining them.
The exam consists in a 90-minute session in the lab, in which the student has to implement some programs, using the development environment already used during exercise lessons. The programs to be written require that the student owns the expected knowledge and is able to apply the techniques taught in the course, specifically concerning multi-thread programming, socket-based and RMI distributed programs. The exam may include 1–4 questions concerning the topics mentioned in section "Contents". Questions are usually closed-answer, and wrong answers are considered like non-given answers.
Only if there are still doubts on the actual preparation of the student an oral test will be carried out.
The knowledge of domain-specific terminology is tested implicitly, since the questions and the programming problem specifications use that terminology.
10% of the final mark is attributed based on the answers to questions. The remaining 90% is attributed based on the programs.
In specific conditions, the off-line execution of a simple project could be offered as an optional alternative to the lab session.


Contents



Lessons will concern the following topics:
Multi-thread programming (6 hours, objective 1)
Introduction to Multi-thread programming; non-determinism.
Characteristics and behavior of concurrent programs; the situation of the memory during the execution of a multi-thread program.
Typical problems: Race Conditions, Deadlock, Livelock e Starvation and when they can occur.
Mechanisms for multi-thread programming (18 hours, objective 2)
Semaphores and monitors; equivalence of these mechanisms.
Preventing race conditions.
Primitives to suspend and resume threads (wait and notify).
Example: producer-consumer.
Deadlock prevention techniques.
Example: the dining philosophers.
Program design using UML.
Inter-thread communication paradigms (8 hours, objective 3)
Description and implementation of popular paradigms: signals, buffer, mailbox, broadcast, blackboard, barrier.
Examples illustrating the seen paradigms.
The ISO/OSI standard and communication protocols (8 hours, objective 4)
The ISO/OSI stack
The Internet protocol
TCP and UDP
Application protocols, HTTP
Distributed systems (4 hours, objective 5)
Introduction
The client-server architecture
Implementing distributed systems through sockets (8 hours, objective 5)
Java library functions for using socket
Serialization
Examples
Proxy and skeleton
Describing distributed systems via UML
Implementing distributed systems through RMI (12 hours, objective 6)
What RMI is for.
How RMI works.
Programming RMI.
Callback.
Event-based programming (8 hours, objective 7)
Event-based programming basics
Communication patterns for distributed systems
Events in GUI
All the aforementioned topics are treated using Java as the reference programming language. Nonetheless, the greatest part of the course contents are applicable in general, and the proposed techniques can be used with different programming languages.


Course Language

Italian

More information



Office hours: by appointment to be requested via email to alberto.coenporisini@uninsubria.it from the domain studenti.uninsubria.it.


Degrees

Degrees

COMPUTER SCIENCE 
Bachelor’s Degree
3 years
No Results Found

People

People (3)

COEN PORISINI ALBERTO
Goal 4: Quality education
Gruppo 09/IINF-05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
PE6_3 - Software engineering, programming languages and systems - (2024)
AREA MIN. 09 - Ingegneria industriale e dell'informazione
Goal 11: Sustainable cities and communities
Settore IINF-05/A - Sistemi di elaborazione delle informazioni
PE6_5 - Security, privacy, cryptology, quantum cryptography - (2024)
DIRETTORE DI DIPARTIMENTO
COEN PORISINI ALBERTO
Goal 4: Quality education
Gruppo 09/IINF-05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
PE6_3 - Software engineering, programming languages and systems - (2024)
AREA MIN. 09 - Ingegneria industriale e dell'informazione
Goal 11: Sustainable cities and communities
Settore IINF-05/A - Sistemi di elaborazione delle informazioni
PE6_5 - Security, privacy, cryptology, quantum cryptography - (2024)
Docenti di ruolo di Ia fascia
MERONI GIOVANNi
PE6_10 - Web and information systems, data management systems, information retrieval and digital libraries, data fusion - (2024)
Gruppo 09/IINF-05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
PE6_3 - Software engineering, programming languages and systems - (2024)
AREA MIN. 09 - Ingegneria industriale e dell'informazione
Settore IINF-05/A - Sistemi di elaborazione delle informazioni
PE6_2 - Distributed systems, parallel computing, sensor networks, cyber-physical systems - (2024)
Ricercatori a tempo determinato
No Results Found
  • Accessibility
  • Use of cookies

Powered by VIVO | Designed by Cineca | 26.4.5.0