ID:
6104
Durata (ore):
96
CFU:
12
Url:
ENGINEERING AND COMPUTER SCIENCE/PERCORSO COMUNE Anno: 2
Anno:
2023
Dati Generali
Periodo di attività
Ciclo Annuale (25/09/2023 - 17/05/2024)
Syllabus
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.
Prerequisiti
Conoscenza di linguaggi C, Java e Python e Sistema operativo Linux
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.
Verifica 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.
Testi
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
Contenuti
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: alcuni esempi applicativi
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.
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: alcuni esempi applicativi
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.
Lingua Insegnamento
INGLESE
Corsi
Corsi
ENGINEERING AND COMPUTER SCIENCE
Laurea Magistrale
2 anni
No Results Found