Offerta Didattica
ENGINEERING AND COMPUTER SCIENCE
DISTRIBUTED SYSTEMS (YEARLY)
Classe di corso: LM-32, 18 - Classe delle lauree magistrali in Ingegneria informatica
AA: 2021/2022
Sedi: MESSINA
SSD | TAF | tipologia | frequenza | moduli |
---|---|---|---|---|
ING-INF/05 | Caratterizzante | Libera | Libera | No |
CFU | CFU LEZ | CFU LAB | CFU ESE | ORE | ORE LEZ | ORE LAB | ORE ESE |
---|---|---|---|---|---|---|---|
12 | 8 | 0 | 4 | 96 | 48 | 0 | 48 |
LegendaCFU: n. crediti dell’insegnamento CFU LEZ: n. cfu di lezione in aula CFU LAB: n. cfu di laboratorio CFU ESE: n. cfu di esercitazione FREQUENZA:Libera/Obbligatoria MODULI:SI - L'insegnamento prevede la suddivisione in moduli, NO - non sono previsti moduli ORE: n. ore programmate ORE LEZ: n. ore programmate di lezione in aula ORE LAB: n. ore programmate di laboratorio ORE ESE: n. ore programmate di esercitazione SSD:sigla del settore scientifico disciplinare dell’insegnamento TAF:sigla della tipologia di attività formativa TIPOLOGIA:LEZ - lezioni frontali, ESE - esercitazioni, LAB - laboratorio
Obiettivi Formativi
Fa acquisire allo studente le competenze di base relative alla organizzazione, programmazione e gestione di un sistema distribuito, mettendolo in grado di capire cosa è un sistema distribuito, come viene strutturato, configurato e gestito. Far acquisire la capacità di analizzare e progettare, a livello di dispositivo e tecnologia, sistemi distribuiti sia in termini architetturali che gestionali. Favorire lo sviluppo dell’autonomia dello studente nella scelta della migliore soluzione architetturale e/o tecnologica del problema sotto esame. Far acquisire la capacità di esprimersi con adeguato linguaggio ai fini della corretta comunicazione delle scelte tecniche adottate e dei risultati ottenuti. Sviluppare l’autonoma capacità di aggiornamento in un settore, come quello dei sistemi distribuiti, che è caratterizzato da rapida e costante evoluzione tecnologica.Learning Goals
Metodi didattici
Al fine di raggiungere gli obiettivi formativi previsti, il corso si svolge prevalentemente attraverso lezioni frontali. Sono inoltre previste Esercitazioni in laboratorio, esercitazioni guidate svolte dagli studenti, con lo scopo di stimolare l’approccio ai problemi con autonomia e senso critico. Tutte le attività sono svolte con supporto di slide delle lezioni.Sono previste interazioni continue con gli studenti per valutare l’interesse per la disciplina e il livello di apprendimento.Teaching Methods
Prerequisiti
Conoscenza di linguaggi C, Java e Python e Sistema operativo LinuxPrerequisites
Verifiche dell'apprendimento
La verifica dell’apprendimento avverrà attraverso tre modalità: elaborati di approfondimento relativi agli argomenti trattati a lezione; progetto finale; colloquio orale. Ogni singola parte verrà valutata in trentesimi. Il voto finale sarà dato da una media delle singole valutazioni. Gli elaborati di approfondimento prevedono alcune fasi di avanzamento e relative consegne obbligatorie. Queste andranno effettuate nelle date e con le modalità che saranno comunicate dal docente (relazioni, esercitazioni, power-point, etc.). Ogni elaborato proposto dal docente sarà valutato in trentesimi. Gli elaborati non hanno scadenza. Il progetto finale sarà assegnato durante la seconda parte del corso e riguarderà un problema di ampio respiro in cui lo studente avrà modo di applicare quanto appreso nella parte teorica, integrando le singole conoscenze e operando a livello di sistema. Sarà favorito ove possibile il lavoro di squadra e l’integrazione di parti sviluppate da terzi. La realizzazione del progetto finale avviene attraverso ripetute iterazioni con il docente e si intende superata se la valutazione complessiva non è inferiore a 18/30. Il progetto finale non ha scadenza. L’esame si svolgerà secondo le seguenti modalità: -colloquio sugli argomenti svolti durante il corso in cui saranno valutate le capacità di apprendimento e di riflessione critica; - -valutazione degli elaborati prodotti; -presentazione e discussione del progetto finale. La prova orale è incentrata sugli argomenti trattati durante il corso (definizioni, esempi rilevanti, applicazioni, collegamenti tra i vari argomenti…). Essa ha il duplice scopo di verificare il livello di conoscenza e di comprensione dei contenuti del corso e di valutare l’autonomia di giudizio, la capacità di apprendimento, l’abilità comunicativa e proprietà di linguaggio scientifico e indi valutare le facoltà logico-deduttive acquisite dallo studente. La prova orale si ritiene superata se la valutazione complessiva non è inferiore a 18/30. Il voto finale è espresso in trentesimi e tiene conto della valutazione ottenuta durante la prova orale, di quella relativa agli elaborati prodotti e di quella del progetto finale.Assessment
Programma del Corso
Il corso si articola in 3 fasi: la prima di apprendimento teorico sarà organizzata con lezioni ex-cathedra e studio individuale; la seconda di natura teorico-applicativa sarà organizzata attraverso lezioni ex-cathedra ed ex-tempore in aula attraverso attività di laboratorio; il terzo di natura applicativa sarà organizzato attraverso approfondimenti concordati con il docente da sviluppare in autonomia. Prima fase - Nella prima parte del corso, di natura teorica, verranno illustrati i principi e le teorie fondamentali di un sistema distribuito. Durante le lezioni verranno trattati i seguenti argomenti: Caratterizzazione di sistemi distribuiti: esempi, condivisione di risorse, world wide web Modelli di sistema: modelli fisici, modelli architetturali, modelli fondamentali Comunicazione tra processi: API, rappresentazione e marshalling dei dati, comunicazione multicast, virtualizzazione della rete Chiamata remota: protocollo request-reply, RPC, RMI Comunicazione indiretta: comunicazione di gruppo, sistemi di pubblicazionesottoscrizione, code di messaggi, memoria condivisa Cloud Computing: concetti introduttivi, modelli di riferimento, Openstack, Stack4Things Blockchain: introduzione, BC pubblico e privato, Bitcoin, Ethereum, Hyperledger, esempi e applicazioni. Seconda fase - La seconda fase si concentrerà sulle attività di laboratorio per consentire allo studente di verificare gli aspetti teorici trattati. In particolare, gli studenti svolgeranno le seguenti attività: Laboratorio sulla comunicazione tra processi: (ProtocolBuffer, OverlayNetwork), Chiamata remota, Comunicazione indiretta Laboratorio su chiamata remota (gRPC) Laboratorio su Openstack - Configurazione Keystone, Supporto del sistema operativo, Configurazione Neutron, Configurazione Glance e Nova Laboratorio sulla virtualizzazione Laboratorio su Arancino (dispositivo IoT) Laboratorio su Stack4Things Laboratorio su Blockchain Terza fase - in questa parte del corso verranno applicate le conoscenze acquisite attraverso attività di laboratorio finalizzate alla redazione di un paper sulla programmazione e gestione di un sistema distribuito.Course Syllabus
Testi di riferimento:
Distributed Systems: Principles and Paradigms, by Andrew S. Tanenbaum , Maarten Van Steen , ISBN-13: 978-0132392273, Pearson
Distributed Systems: Concepts and Design, by George Coulouris , Jean Dollimore , Tim Kindberg , Gordon Blair, ISBN-13: 978-0132143011, Addison - Wesley
Esami: Elenco degli appelli
Elenco delle unità didattiche costituenti l'insegnamento
Docente: ANTONIO PULIAFITO
Orario di Ricevimento - ANTONIO PULIAFITO
Giorno | Ora inizio | Ora fine | Luogo |
---|---|---|---|
Venerdì | 11:00 | 13:00 | Studio del docente |
Note: Contattare preventivamente il docente per email