ID:
013596
Tipo Insegnamento:
Obbligatorio
Durata (ore):
64
CFU:
8
SSD:
SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI
Url:
INGEGNERIA INFORMATICA E DELL’AUTOMAZIONE/Percorso Comune Anno: 1
Anno:
2024
Dati Generali
Periodo di attività
Primo Semestre (19/09/2024 - 17/12/2024)
Syllabus
Obiettivi Formativi
Il corso descrive i sistemi distribuiti, affrontandone i temi principali, i più importanti modelli e architetture e presentando infine le principali realizzazioni di sistemi, servizi e applicazioni distribuite.
L'obiettivo principale del corso consiste nel fornire agli studenti le basi per affrontare lo studio dei sistemi distribuiti e per sviluppare quindi la capacità di progettare applicazioni e servizi distribuiti che soddisfino i principali vincoli di prestazioni, scalabilità, apertura, trasparenza e sicurezza.
Le principali conoscenze acquisite saranno:
elementi di base e caratteristiche dei sistemi distribuiti.
principali modelli e architetture dei sistemi distribuiti;
paradigmi di comunicazione;
il problema della tolleranza ai guasti;
i servizi di nomi
le principali infrastrutture middleware per il supporto di servizi e applicazioni distribuite (Web Services, Oggetti Distribuiti, Cloud Computing, supporto ai sistemi mobili, etc).
Alcuni seminari di approfondimento su alcune tematiche (Blockchain, programmazione smartphone, etc).
Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:
analizzare un sistema distribuito per capirne i principali componenti e le loro interazioni;
identificare i vincoli di progetto che determinano la scelta di modelli, architetture, paradigmi, più adatti per il contesto applicativo di interesse;
valutare la migliore tipologia di middleware disponibile per il supporto di una determinata applicazione;
saper configurare e installare almeno i principali middleware e piattaforme software per il supporto di servizi e applicazioni distribuite.
L'obiettivo principale del corso consiste nel fornire agli studenti le basi per affrontare lo studio dei sistemi distribuiti e per sviluppare quindi la capacità di progettare applicazioni e servizi distribuiti che soddisfino i principali vincoli di prestazioni, scalabilità, apertura, trasparenza e sicurezza.
Le principali conoscenze acquisite saranno:
elementi di base e caratteristiche dei sistemi distribuiti.
principali modelli e architetture dei sistemi distribuiti;
paradigmi di comunicazione;
il problema della tolleranza ai guasti;
i servizi di nomi
le principali infrastrutture middleware per il supporto di servizi e applicazioni distribuite (Web Services, Oggetti Distribuiti, Cloud Computing, supporto ai sistemi mobili, etc).
Alcuni seminari di approfondimento su alcune tematiche (Blockchain, programmazione smartphone, etc).
Le principali abilità (ossia la capacità di applicare le conoscenze acquisite) saranno:
analizzare un sistema distribuito per capirne i principali componenti e le loro interazioni;
identificare i vincoli di progetto che determinano la scelta di modelli, architetture, paradigmi, più adatti per il contesto applicativo di interesse;
valutare la migliore tipologia di middleware disponibile per il supporto di una determinata applicazione;
saper configurare e installare almeno i principali middleware e piattaforme software per il supporto di servizi e applicazioni distribuite.
Prerequisiti
E’ necessario avere acquisito e assimilato le seguenti conoscenze fornite dai corsi di “Fondamenti di Informatica”, “Sistemi Operativi” e “Reti di Calcolatori”:
ottima conoscenza del linguaggio C e buona del linguaggio Java;
ottima conoscenza della programmazione di sistema in Unix (con particolare riferimento alle system call per la gestione dei processi);
ottima conoscenza della programmazione di rete in Unix (socket);
capacità di realizzare in Unix un sistema client/server come applicazione concorrente multiprocesso.
ottima conoscenza del linguaggio C e buona del linguaggio Java;
ottima conoscenza della programmazione di sistema in Unix (con particolare riferimento alle system call per la gestione dei processi);
ottima conoscenza della programmazione di rete in Unix (socket);
capacità di realizzare in Unix un sistema client/server come applicazione concorrente multiprocesso.
Metodi didattici
Il corso è organizzato nel seguente modo:
- lezioni in aula su tutti gli argomenti del corso. Le lezioni sono anche video registrate e caricate sul sito classroom (con codice ancora da definire).
- lezioni in aula su tutti gli argomenti del corso. Le lezioni sono anche video registrate e caricate sul sito classroom (con codice ancora da definire).
Verifica Apprendimento
L’obiettivo della prova d’esame consiste nel verificare il livello di raggiungimento degli obiettivi formativi precedentemente indicati.
L’esame è costituito da una prova orale che valuterà la capacità di uno studente di progettare un’applicazione distribuita. A questo fine lo studente dovrà dimostrare di essere in grado di: identificare i principali requisiti di progetto dettati da uno specifico scenario applicativo di riferimento; identificare modelli e architetture più adatte per il supporto; scegliere e descrivere le caratteristiche di un middleware mettendo in luce vantaggi e svantaggi.
L’esame è costituito da una prova orale che valuterà la capacità di uno studente di progettare un’applicazione distribuita. A questo fine lo studente dovrà dimostrare di essere in grado di: identificare i principali requisiti di progetto dettati da uno specifico scenario applicativo di riferimento; identificare modelli e architetture più adatte per il supporto; scegliere e descrivere le caratteristiche di un middleware mettendo in luce vantaggi e svantaggi.
Testi
I video e le slide delle lezioni sono disponibili sul sito Classroom con codice: da definire
Testi adottati nel corso:
M.van Steen, A.S. Tanenbaum, Distributed Systems, 4th Edition (2023), gratis al link: https://www.distributed-systems.net (ringraziamo il prof. van Steen).
G.Couloris, J. Dollimore, T. Kindberg, G. Blair, Distributed Systems – Concepts and Design, fifth edition, Addison Wesley, 2011.
Approfondimenti:
Per tutti gli argomenti si consiglia di consultare le riviste edite da ACM (Association for Computing Machinery) e IEEE (Institute of Electrical and Electronic Engineering) che si possono trovare in biblioteca. Siti di riferimento www.computer.org e www.comsoc.org
Riviste più “divulgative”: IEEE Computer, ACM Communications.
Riviste di approfondimento su aree specifiche: IEEE Internet Computing, IEEE Communications, Distributed Systems OnLine (dsonline.computer.org), ACM Computing Surveys, ACM Transactions on... IEEE Transactions on .... , tutte le IETF Request for Comments (RFC)
Esempi di alcuni articoli interessanti:
programmazione concorrente: ANDREWS, SCHNEIDER, Concepts and Notations for Concurrent Programming.
Middleware: Le rfc2768 (middleware) e 1034 (DNS) sono sul sito dell'ietf
Cloud Computing: Neal Leavitt, "Is Cloud Computing Really Ready for Prime Time?", IEEE Computer, January 2009, pp. 15-20
Testi adottati nel corso:
M.van Steen, A.S. Tanenbaum, Distributed Systems, 4th Edition (2023), gratis al link: https://www.distributed-systems.net (ringraziamo il prof. van Steen).
G.Couloris, J. Dollimore, T. Kindberg, G. Blair, Distributed Systems – Concepts and Design, fifth edition, Addison Wesley, 2011.
Approfondimenti:
Per tutti gli argomenti si consiglia di consultare le riviste edite da ACM (Association for Computing Machinery) e IEEE (Institute of Electrical and Electronic Engineering) che si possono trovare in biblioteca. Siti di riferimento www.computer.org e www.comsoc.org
Riviste più “divulgative”: IEEE Computer, ACM Communications.
Riviste di approfondimento su aree specifiche: IEEE Internet Computing, IEEE Communications, Distributed Systems OnLine (dsonline.computer.org), ACM Computing Surveys, ACM Transactions on... IEEE Transactions on .... , tutte le IETF Request for Comments (RFC)
Esempi di alcuni articoli interessanti:
programmazione concorrente: ANDREWS, SCHNEIDER, Concepts and Notations for Concurrent Programming.
Middleware: Le rfc2768 (middleware) e 1034 (DNS) sono sul sito dell'ietf
Cloud Computing: Neal Leavitt, "Is Cloud Computing Really Ready for Prime Time?", IEEE Computer, January 2009, pp. 15-20
Contenuti
Introduzione ai sistemi distribuiti (10 ore). Introduzione ai sistemi distribuiti, definizioni, principali caratteristiche, proprietà e sfide progettuali. Principali modelli e architetture dei sistemi distribuiti.
La comunicazione nei sistemi distribuiti (6 ore). I principali paradigmi di comunicazione. Semantica della comunicazione e la tolleranza ai guasti. I sistemi di routing. I modelli di interazione.
I servizi di nomi (6 ore). Il problema del naming (come identificare le risorse) e i servizi di nomi (per trovare l’indirizzo delle risorse distribuite). Principali soluzioni ed esempio (il Domain Name System).
Il Middleware (8 ore). Le infrastrutture software per il supporto di servizi e applicazioni distribuite: il middleware. Definizioni, proprietà, modelli. Classificazione dei principali middleware.
Esempi di Middleware (22 ore). Esempi principali di infrastrutture middleware: Web Services (SOAP e ReST), il middleware a oggetti distribuiti, il Cloud Computing, Mobile Computing, infrastrutture software a supporto della Internet of Things (IoT).
Seminari di approfondimento:
La programmazione smartphone (6 ore). Introduzione alla programmazione smartphone. L’ambiente di programmazione iOS. L’ambiente di programmazione Android.
Blockchain (6 ore). Introduzione alla tecnologia. Esempi di uso in ambito smart manufacturing.
La comunicazione nei sistemi distribuiti (6 ore). I principali paradigmi di comunicazione. Semantica della comunicazione e la tolleranza ai guasti. I sistemi di routing. I modelli di interazione.
I servizi di nomi (6 ore). Il problema del naming (come identificare le risorse) e i servizi di nomi (per trovare l’indirizzo delle risorse distribuite). Principali soluzioni ed esempio (il Domain Name System).
Il Middleware (8 ore). Le infrastrutture software per il supporto di servizi e applicazioni distribuite: il middleware. Definizioni, proprietà, modelli. Classificazione dei principali middleware.
Esempi di Middleware (22 ore). Esempi principali di infrastrutture middleware: Web Services (SOAP e ReST), il middleware a oggetti distribuiti, il Cloud Computing, Mobile Computing, infrastrutture software a supporto della Internet of Things (IoT).
Seminari di approfondimento:
La programmazione smartphone (6 ore). Introduzione alla programmazione smartphone. L’ambiente di programmazione iOS. L’ambiente di programmazione Android.
Blockchain (6 ore). Introduzione alla tecnologia. Esempi di uso in ambito smart manufacturing.
Lingua Insegnamento
ITALIANO
Corsi
Corsi
INGEGNERIA INFORMATICA E DELL’AUTOMAZIONE
Laurea Magistrale
2 anni
No Results Found
Persone
Persone (2)
No Results Found