Anno accademico 2022-2023

DISTRIBUTED SYSTEMS

Docenti

Gabriele Puppis
Marino Miculan
Totale crediti
9
Periodo didattico
Primo Periodo
Tipologia
Caratterizzante
Prerequisiti. Reti di Calcolatori; Sistemi Operativi
Metodi didattici. Lezioni in aula con esempi. Lezioni pratiche su calcolatori propri o del laboratorio.
Modalità di verifica. Progetto pratico da svolgere in uno dei linguaggi/middleware visti nel corso, in gruppi di due studenti, seguito da presentazione e esame orale. Vengono valutati correttezza e completezza della soluzione, adeguatezza delle scelte architetturali e progettuali, tempi di consegna, conoscenza generale del contenuto del corso.
Altre informazioni. Strumenti a supporto della didattica: lavagna, lucidi pdf, piattaforma Moodle elearning.uniud.it, piattaforma Teams.
Obiettivi formativi
Al termine del corso gli studenti potranno

– Comprendere i modelli di progettazione dei sistemi distribuito.

– Confrontare le varie strategie di implementazione possibili quando si progetta un sistema distribuito.

– Conoscere i principali paradigmi di comunicazione, come RPC, RMI, code di messaggi, comunicazioni di gruppo, ecc.

– Conoscere i principali middleware, come JGroups, CORBA, SOAP, Chord, ecc.

– Comprendere e saper applicare gli algoritmi per risolvere i problemi comuni dei sistemi distribuiti, come rivelazione di guasti, la rilevazione del deadlock, le repliche, ecc

Si veda https://www.uniud.it/it/didattica/info-didattiche/regolamento-didattico-del-corso/lm-artificial-intelligence-cybersecurity

Contenuti
Scopo del corso è fornire allo studente i fondamenti e gli strumenti per l’analisi, la progettazione e l’implementazione dei sistemi distribuiti. A questo scopo, il corso è diviso in tre parti. Nella prima parte si studiano gli aspetti sistemistico-architetturali dei sistemi distribuiti, analizzando vari modelli (client-server, multi-tier, peer-to-peer.). Nella seconda parte si studiano i modelli di comunicazione, i corrispondenti middleware, e alcuni linguaggi specifici per la programmazione dei sistemi distribuiti (come Erlang e Jolie). Infine, nella terza parte si affrontano i principali problemi della programmazione distribuita, come il rilevamento dei fallimenti, del deadlock, il raggiungimento del consenso, ecc.; per ognuna di questi, verranno presentate adeguate soluzioni algoritmiche e tecniche.
Testi di riferimento
G. Coulouris, J. Dollimore, T. Kindberg, G. Blair, “Distributed systems: concepts and design”, 5 ed., International edition, Pearson, 2012.

W. Fokkink, “Distributed Algorithms: An Intuitive Approach”. 2nd edition, 2018. MIT Press. ISBN: 978-0262037662

J. Armstrong, “Programming Erlang: Software for a Concurrent World”, The Pragmatic Programmers, 2007. ISBN: 978-1-93435-600-5

Appunti dalle lezioni