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
SSDTAFtipologiafrequenzamoduli
ING-INF/05CaratterizzanteLiberaLiberaNo
CFUCFU LEZCFU LABCFU ESEOREORE LEZORE LABORE ESE
128049648048
Legenda
CFU: 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 Linux

Prerequisites


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

Elenco delle unità didattiche costituenti l'insegnamento

Docente: ANTONIO PULIAFITO

Orario di Ricevimento - ANTONIO PULIAFITO

GiornoOra inizioOra fineLuogo
Venerdì 11:00 13:00Studio del docente
Note: Contattare preventivamente il docente per email
  • Segui Unime su:
  • istagram32x32.jpg
  • facebook
  • youtube
  • twitter
  • UnimeMobile
  • tutti