Distributed and pervasive systems

A.A. 2024/2025
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Inglese
Obiettivi formativi
Obiettivo dell'insegnamento e' quello di illustrare i fondamenti dei sistemi distribuiti moderni e la loro estensione ai sistemi pervasivi includendo come nodi del sistema dispositivi smart, IOT, sensori ed attuatori. Oltre ad argomenti classici come trasparenza, sincronizzazione e consenso distribuito si illustrano tecniche per il trattamento di dati provenienti da sensori e per la gestione di dati di contesto. Obiettivo dell'insegnamento è anche fornire un contesto tecnologico illustrando sistemi distribuiti alla base dell'attuale offerta di Cloud computing e accompagnando gli studenti nella realizzazione di un progetto software.
Risultati apprendimento attesi
Lo studente sarà in grado di comprendere le problematiche relative alla progettazione e sviluppo di sistemi distribuiti complessi come Cloud, Edge e DLT. Lo studente avrà anche la capacità di progettare sistemi distribuiti che gestiscono flussi dinamici di informazioni provenienti per esempio da sensori. Lo studente avrà fatto una significativa esperienza di sviluppo software in questo ambito.
Corso singolo

Questo insegnamento può essere seguito come corso singolo.

Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Secondo semestre

Programma
A) Introduzione
Definizione di sistema distribuito e sistema pervasivo.
Concetti di trasparenza e scalabilità.
Tipi di sistemi distribuiti (Cluster, Cloud, Edge, Mobile, Pervasive ...)

B) le basi dei sistemi distribuiti
Architetture dei sistemi distribuiti e pervasivi. (Sistemi client-server multilivello. Sistemi peer-to-peer, Reti di sensori e smart objects)
Le basi della comunicazione in ambiente distribuito. (Modelli di comunicazione. Comunicazione orientata ai messaggi; RPC/RMI; Web Service Invocation)
Cooperazione e sincronizzazione (orologi fisici e logici; algoritmi di elezione e mutua esclusione)
Consenso distribuito e Distributed Ledger (blockchain e sue applicazioni)



C) sistemi pervasivi e applicazioni
Tipologie e architetture di sistemi pervasivi
Rappresentazione e trattamento di dati provenienti da sensori
Context-awareness e adattività

D) Data Privacy nei sistemi distribuiti e pervasivi

ESERCITAZIONI
Sviluppo di sistemi distribuiti pervasivi (gRPC, MQTT, Web service REST)
Guida al progetto.
Prerequisiti
I prerequisiti per seguire con profitto le lezioni di questo insegnamento includono buona esperienza di programmazione object-oriented (necessaria per poter affrontare il progetto) e le nozioni normalmente acquisite negli insegnamenti di architetture, reti e sistemi operativi.
Metodi didattici
Lezioni frontali, uno o più seminari di aziende leader di settore ed esercitazioni al computer per lo sviluppo guidato di un progetto.
Materiale di riferimento
Il sito dell'insegnamento su https://myariel.unimi.it/ offre copia delle slide utilizzate e vari riferimenti a risorse online.
Testo di riferimento: M. van Steen and A.S. Tanenbaum, Distributed Systems, 4th ed.,
distributed-systems.net, 2023.

Lo studio degli argomenti trattati a lezione, come per ogni insegnamento universitario, non dovrebbe limitarsi al ripasso degli appunti, nè allo studio del solo testo di riferimento, ma dovrebbe includere la consultazione di altri testi suggeriti ed eventuali risorse online segnalate dal docente o individuate dallo studente.
Modalità di verifica dell’apprendimento e criteri di valutazione
Gli studenti possono acquisire i 6 crediti superando prima una prova di teoria e successivamente (anche nello stesso appello) una prova pratica:
- Parte teorica: verifica scritta all'appello coincidente con la fine delle lezioni oppure esame orale per gli appelli successivi. La verifica e l'orale vertono su tutti gli argomenti trattati a lezione e verificabili tramite le slide pubblicate sul sito. Sono possibili domande anche sulla parte riguardante la programmazione in ambiente distribuito, ma non riguarderanno aspetti tecnici/sintattici ma piuttosto concettuali. La verifica scritta è composta di un insieme di domande a scelta multipla e di domande a risposta aperta delle quali una potrebbe consistere in un esercizio (solitamente di applicazione di uno degli algoritmi presentati a lezione).

- Parte pratica: sviluppo di un progetto software. Il progetto, che deve essere svolto individualmente, viene assegnato durante il corso e rimane valido per un anno. Può essere consegnato nello stesso appello in cui si è superata la parte teorica oppure in uno degli appelli successivi dello stesso anno accademico.
Il voto di ciascuna parte va da 0 a 32 con 18 il minimo per passare. Il voto finale in trentesimi è la media aritmetica dei due voti con i voti superiori al 30 verbalizzati come 30 e lode.
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Docente: Bettini Claudio
Turni:
Turno
Docente: Bettini Claudio
Docente/i
Ricevimento:
su appuntamento via email
stanza 7021, via Celoria 18