| SISTEMI DISTRIBUITI E CLOUD COMPUTING
(obiettivi)
OBIETTIVI FORMATIVI: L'insegnamento si propone di fornire i principi, le metodologie e le tecnologie per la progettazione e realizzazione di sistemi ed applicazioni distribuite moderne, inclusi i sistemi distribuiti a larga scala e Cloud e le architetture a microservizi. Durante il corso vengono coniugati aspetti metodologici e tecnologici, affrontando le principali problematiche e tecniche per lo sviluppo di sistemi distribuiti efficienti. In particolare, sono approfonditi gli aspetti architetturali, i modelli di comunicazione tra i componenti di un sistema distribuito ed i corrispondenti middleware, le soluzioni per fornire sistemi scalabili e tolleranti ai guasti, le problematiche di coordinazione distribuita, replicazione e consistenza e le relativi soluzioni algoritmiche e tecniche, e la virtualizzazione dell'ambiente di esecuzione tramite la virtualizzazione di sistema e a livello di sistema operativo e l'orchestrazione di container. Il progetto proposto ha lo scopo di consolidare ed approfondire la preparazione teorica, metodologica e tecnologica sui temi affrontanti nel corso. Nel corso viene anche introdotto il linguaggio Go per la programmazione dei sistemi distribuiti.
CONOSCENZA E CAPACITÀ DI COMPRENSIONE: Al termine del corso lo studente avrà acquisito concetti di base ed avanzati sui sistemi distribuiti e sui sistemi Cloud e sullo sviluppo di applicazioni software in tali ambiti. In particolare: realizzazione di applicazioni distribuite e scalabili, con diversi gradi di consistenza e modelli di comunicazione, utilizzando anche servizi Cloud (in particolare, i servizi Cloud di AWS, per i quali viene messo a disposizione degli studenti un grant gratuito tramite il programma AWS Academy).
CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE: Al termine del corso lo studente avrà acquisito i principi e le metodologie proprie dell'analisi, progettazione e realizzazione dei moderni sistemi distribuiti. In particolare: progettare e sviluppare sistemi ed applicazioni distribuite, usando strumenti avanzati per il deployment e la gestione.
AUTONOMIA DI GIUDIZIO: Al termine del corso lo studente sarà in grado di identificare le soluzioni più idonee per realizzare sistemi ed applicazioni distribuite e Cloud e di valutarne le scelte architetturali ed implementative.
ABILITÀ COMUNICATIVE: Al termine del corso lo studente avrà acquisito padronanza della terminologia avanzata relativa ai sistemi distribuiti e Cloud, sarà in grado di presentare l'architettura di un sistema distribuito anche complesso con termini e linguaggio tecnico appropriato e di argomentare circa le varie alternative sia a livello sistemistico che applicativo.
CAPACITÀ DI APPRENDIMENTO: Al termine del corso lo studente avrà acquisito la capacità di intraprendere in autonomia ulteriori approfondimenti su argomenti attinenti i sistemi distribuiti e Cloud, e di utilizzare le conoscenze e metodologie apprese per affrontare problemi nuovi.
|