Generali:

  • Dipartimento: Ingegneria
  • Settore Ministeriale: ING-INF/05
  • Codice di verbalizzazione: 8037389
  • Metodi di insegnamento: Frontale
  • Metodi di valutazione: Scritto E Orale
  • Prerequisiti: Il corso presuppone una buona conoscenza dei protocolli di rete, della progettazione e programmazione di applicazioni software e di rete (linguaggi C, Python e Java), dell'organizzazione e gestione di basi di dati, dell'infrastruttura Web.
  • Obiettivi: OBIETTIVI FORMATIVI: L'insegnamento si propone di fornire i principi, le metodologie e le tecnologie per la progettazione ed implementazione di sistemi distribuiti moderni, inclusi i sistemi distribuiti a larga scala ed i sistemi di Cloud computing. Durante il corso verranno coniugati aspetti metodologici e tecnologici, affrontando le principali problematiche e tecniche per lo sviluppo di sistemi distribuiti efficienti. In particolare, verranno 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. 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 tale ambito. In particolare: realizzazione di applicazioni distribuite, scalabili, con diversi gradi di consistenza e modelli di comunicazione, utilizzando anche servizi Cloud (in particolare, i servizi Cloud di AWS e GCP, per i quali vengono messi a disposizione degli studenti dei grant gratuiti, rispettivamente tramite i programmi AWS Educate e Google Cloud Education). 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 distribuiti e valutarne le prestazioni, usando strumenti avanzati per il deployment e l��esecuzione. AUTONOMIA DI GIUDIZIO: Al termine del corso lo studente sarà in grado di identificare le soluzioni più idonee per realizzare sistemi distribuiti e servizi di Cloud computing e di valutare le scelte architetturali, implementative e le prestazioni di sistemi e servizi esistenti. ABILITÀ COMUNICATIVE: Al termine del corso lo studente avrà acquisito padronanza della terminologia avanzata relativa ai sistemi distribuiti ed al Cloud computing, 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 ed il Cloud computing, e di utilizzare le conoscenze e metodologie imparate per affrontare problemi nuovi.

Didattica:

  • A.A.: 2019/2020
  • Canale: UNICO
  • Crediti: 9
  • Obbligo di Frequenza: No