Insegnamento mutuato da: B027493 - DISTRIBUTED PROGRAMMING FOR IOT Laurea Magistrale in INFORMATICA
Lingua Insegnamento
Inglese
Contenuto del corso
Il corso fornisce una panoramica sulle principali nozioni di programmazione distribuita, considerando come caso di studio principale i sistemi IoT. Il corso è diviso in tre parti. La prima parte presenta l'organizzazione dei sistemi distribuiti e i principali meccanismi di comunicazione. La seconda discute i principali algoritmi distribuiti. La terza parte introduce i principali protocolli di livello applicazione usati nei sistemi IoT, come MQTT e COAP.
Libri di testo:
• 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).
Materiale aggiuntivo fornito dal docente.
Obiettivi Formativi
Dopo aver completato il corso lo studente sarà in grado di capire e descrivere le principali scelte architetturali usate nell'organizzazione di un generico sistema distribuito e di un sistema IoT. Gli studenti saranno in grado di spiegare il funzionamento di base e di usare i principali meccanismi di comunicazione di alto livello (per esempio chiamate a procedura remote, API RESTful e RESTful APIs and message-oriented middle-ware) e di implementare algoritmi distribuiti e di valutarne la loro complessità. Inoltre, gli studenti saranno in grado di usare i principali protocolli di livello applicazione per sistemi IoT.
Prerequisiti
Conoscenze di base sull'organizzazione degli elaboratori, sistemi operativi e su reti di calcolatori. Inoltre, è altamente consigliato avere una buona esperienza di programmazione in Java.
Metodi Didattici
Lezioni frontali e sessioni di esercitazione: 48 ore.
Altre Informazioni
Si raccomanda la frequenza delle lezioni.
Pagina web del corso: https://e-l.unifi.it
Ricevimento: su appuntamento, contattare il docente per email a letterio.galletta(AT)unifi.it
Modalità di verifica apprendimento
La prova finale consiste di due parti:
1 - una relazione su un articolo di ricerca che sarà assegnato agli studenti alla fine del corso;
2- un esame orale che verte su tutti gli argomenti del corso.
Programma del corso
Il corso affronterà i seguenti argomenti:
• Principali obiettivi di design di un sistema distribuito
• Organizzazione di un sistema distribuito (architetture software e di sistema)
• Meccanismi di comunicazione ad alto livello (Remote Procedure Call and Message-oriented Middle-ware)
• Linguaggi di programmazione per sistemi distribuiti (KLAIM e modello ad attori)
• Algoritmi distribuiti per broadcast, elezione, consenso, sincronizzazione degli orologi, orologi logici, mutua esclusione
• Organizzazione di un sistema IoT
• Protocolli MQTT e COAP