Il corso mira a fornire i concetti di base su protocolli e architetture di rete informatici. La maggior parte del corso è focalizzata sullo studio dello stack dei protocolli TCP/IP e su alcuni dei principali protocolli applicativi. Il corso comprende esercitazioni di laboratorio volte a consolidare gli argomenti di teoria tramite analisi sperimentale dei protocolli e a fornire competenze necessarie per l'installazione, configurazione e debugging di reti tramite l'uso di comandi e tool in sistemi operativi basati su Linux. Al termine dell'insegnamento lo studente dovrebbe conoscere i più popolari protocolli di rete utilizzati dalle moderne reti di calcolatori ed essere in grado di comprendere i principali criteri progettuali per la realizzazione di protocolli e architetture di reti di calcolatori. Lo studente dovrebbe inoltre essere in grado di creare e debuggare lo stato di funzionamento di reti di calcolatori in sistemi operativi basati su Linux.
Luca Ferretti
Il corso fornisce i concetti di base sulle architetture e sui protocolli delle reti di calcolatori. L'attenzione è concentrata sullo stack di protocolli TCP/IP. La parte di laboratorio fornisce agli studenti le competenze necessarie per l'installazione e la configurazione di servizi di rete basati su sistemi Linux/Unix, con particolare attenzione alle tecnologie Web.
Riccardo Lancellotti e Mirco Marchetti
Conoscenza e capacità di comprensione: al termine del corso lo studente avrà le conoscenze di base relative al progetto e all'uso di un sistema operativo moderno, multiprogrammato, a condivisione di tempo.
Capacità di applicare conoscenza e comprensione: al termine del corso lo studente sarà in grado di applicare queste conoscenze a problemi di amministrazione, valutazione delle prestazioni e studio del codice di software GNU/Linux.
Autonomia di giudizio: al termine del corso lo studente sarà in grado di riconoscere in modo autonomo i diversi approcci e metodi risolutivi per le problematiche tipiche dei moderni sistemi operativi e saranno in grado di relazionare oralmente e per iscritto sugli argomenti presentati nel corso con un linguaggio tecnico appropriato.
Capacità di apprendimento: lo studio permetterà lo sviluppo di abilità di apprendimento autonomo e di approfondimento di argomenti collaterali a quelli presentati nel corso: l'uso consapevole della linea di comando, la familiarizzazione con il concetto di programmazione concorrente, la comprensione delle principali aree di un sistema operativo (scheduler, gestore di memoria, gestore di I/O).
Mauro Andreolini
Comprendere le principali minacce informatiche legate all'ambito automotive; Identificare possibili vulnerabilità in sistemi automotive; Progettare sistemi informatici sicuri in ambito automotive
Mirco Marchetti
Il corso ha l'obiettivo di presentare metodi, protocolli e tecnologie basati sull'applicazione di schemi e tecniche di crittografia per garantire la sicurezza di protocolli, architetture e sistemi informatici. Il corso inoltre propone lo studio e l'utilizzo sperimentale di tecnologie hardware associate all'utilizzo sicuro di schemi e protocolli crittografici. Gli argomenti affrontati nel corso sono fondamentali per la comprensione e potenzialmente la progettazione di soluzioni moderne di sicurezza informatica. A questo scopo, il corso affronta anche tematiche legate alla comprensione e alla modellazione di attacchi di sicurezza informatica ai sistemi reali che influenzano la progettazione e l'impiego di tecniche di crittografica, così come l'integrazione con altre tecniche di sicurezza informatica. Ad esempio, verranno presi in analisi alcuni popolari casi d'uso nell'ambito di differenti paradigmi di comunicazione, storage, autenticazione e autorizzazione, e sistemi hardware e software con caratteristiche eterogenee.
Luca Ferretti
Il corso mira a fornire conoscenze e competenze relative ai problemi di sicurezza dei sistemi cyber-fisici in tutti i loro ambiti applicativi, tra cui il settore automotive e intelligent transport sistem, i dispositivi medici connessi, il settore energetico, gli impianti produttivi connessi tipici del paradigma Industria 4.0 e i device IoT. Verranno inoltre fornite conoscenze e cometenze necessarie per la messa in sicurezza dei sistemi cyberfisici e la progettazione di sistemi cyber-fisici sicuri.
Dario Stabili
Il corso affronta le principali problematiche legate alla sicurezza dei sistemi, dei servizi e delle applicazioni basate su Internet. Nella prima parte, si analizzano le vulnerabilità dei sistemi, reti e applicazioni e le principali tipologie di attacco diretto e indiretto. Nella seconda parte, si approfondiscono le metodologie e i meccanismi per la difesa dei sistemi in rete, tra cui la crittografia, i metodi di autenticazione e autorizzazione, i protocolli per la sicurezza, la firma digitale e le certification authority, i sistemi di monitoraggio. La terza parte è dedicata al progetto di sistemi di rete sicuri, includendo firewall e Intrusion Detection System, VLAN, VPN, DMZ. Si accenna, infine, alle normative vigenti in materia di sicurezza informatica e privacy.
Mirco Marchetti
Il corso vuole essere una introduzione allo sviluppo sicuro del software. Al termine dell'insegnamento lo studente sarà in grado di:
acuire la sensibilità ai rischi insiti in applicazioni non sicure;
saper valutare il grado di sicurezza di una applicazione esistente;
saper irrobustire una applicazione esistente;
saper progettare ex-novo un software con caratteristiche di sicurezza (security/safety/privacy by design).
Mauro Andreolini
Il corso si propone di fornire gli elementi di base della conoscenza dei sistemi distribuiti di Cloud Computing e della sua evoluzione nota come Edge Computing, oltre agli strumenti principali per il loro utilizzo e la loro valutazione. Al termine dell'insegnamento lo studente sarà in grado di:
comprendere i più noti paradigmi di utilizzo del cloud computing
distinguere le principali architetture esistenti nell'ambito cloud
comprendere i concetti di virtualizzazione applicati ad architetture distribuite complesse
programmare una semplice applicazione su piattaforma cloud
utilizzare un simulatore di rete per la valutazione prestazionale dei sistemi distribuiti.
Claudia Canali
Il corso mira a fornire i concetti di base sulle architetture e sui protocolli principali delle reti di calcolatori. L'attenzione è concentrata sui diversi livelli dello stack di protocolli TCP/IP, sulle architetture Web e sui sistemi orientati a servizi e applicazioni Cloud.
Claudia Canali
Il corso fornisce metodologie per il progetto, realizzazione e testing di applicazioni moderne che devono rispondere ad elevati requisiti prestazionali, di scalabilità e di affidabilità. A tale scopo, si analizzano inizialmente i sistemi distribuiti su scala locale e geografica, quali cluster, data center, Content Delivery Networks, peer-to-peer, Web server. Dopodiché, si approfondiscono il funzionamento delle architetture e dei servizi cloud, le Service Oriented Architecture, e le loro integrazioni con l'Internet of Everything (IoE). Il corso tratta infine i modelli per l'analisi prestazionale dei sistemi e delle applicazioni su rete. Nell'ambito del Corso integrato si presentano gli strumenti software, prevalentemente open source, per la realizzazione di applicazioni cloud.
Riccardo Lancellotti
Il corso intende fornire una presentazione dei principi della programmazione Web server sia per quanto riguarda le tecnologie server-side che client-side. Gli obiettivi formativi sono molteplici:
fornire allo studente competenze riguardanti la programmazione e lo sviluppo di applicazioni Web basati su framework, con particolare riferimento al framework Django in Python
fornire competenze riguardanti le tecnologie più utilizzate al momento per la programmazione client-side e l'interazione asincrona con l'utente (Ajax, JQuery, Javascript, Bootstrap)
fornire la capacità di progettare e realizzare un'applicazione Web dinamica (che interagisce con sottostante Database) a partire da requisiti funzionali.
Claudia Canali