Nuova ricerca

Claudia CANALI

Professore Associato
Dipartimento di Ingegneria "Enzo Ferrari"

Insegnamento: Distributed Edge Programming

Ingegneria informatica (D.M.270/04) (Offerta formativa 2023)

Obiettivi formativi

Il numero di oggetti connessi, in crescita a ritmi vicini al 15% all’anno, ha recentemente superato i 15 miliardi di unità. In questo scenario il carico sulle reti di comunicazione e sui centri di calcolo centralizzati (e.g., Amazon AWS, Google Cloud) può essere tale da impedire lo sviluppo di applicazioni particolarmente esigenti in termini di banda e latenza. L'edge computing è un modello di calcolo distribuito nel quale l'elaborazione dei dati avviene il più vicino possibile a dove i dati vengono generati, migliorando i tempi di risposta e risparmiando sulla larghezza di banda. L’insegnamento fornisce competenze per progettare, implementare, e manutenere sistemi software basati su questo recente paradigma.

Prerequisiti

Per una corretta fruizione dell’insegnamento sono utili conoscenze riguardo reti di calcolatori, sistemi Unix, e ingegneria del software.

Programma del corso

Nell'ambito del Corso si tratta il seguente programma.

[M1] Architetture di Edge Computing (3 CFU)
- Architetture e servizi di edge computing: principi fondamentali
- IoT e Edge Computing: scenari applicativi
- Progettazione e gestione di architetture edge
- Valutazione scalabilità e prestazioni

[M2] Ciclo di vita del software nel continuum edge/cloud (3 CFU)
- Design Patterns per sistemi distribuiti
- Deployment e integrazione continua (Kubernetes, Azure Percept, TFHub)
- Monitoraggio di sistemi distribuiti (Apache Samza, Apache Kafka)
- Integrazione e manutenzione di modelli di machine learning

[M3] Integrazione con il mondo fisico: il modello Digital Twin (3 CFU)
- Modelli concettuali ed integrazione con piattaforme edge/cloud
- Frameworks per ingegnerizzare Digital Twins (Ditto, Azure)
- Casi d’uso (IoT, IoT industriale, …)

Metodi didattici

L’insegnamento è organizzato in moduli organizzati su base settimanale. Ogni modulo tratta un argomento specifico e prevede una parte di laboratorio. La frequenza alle lezioni in presenza non è obbligatoria. L’insegnamento è erogato in lingua italiana.

Testi di riferimento

Materiale fornito dal docente su Moodle.

Verifica dell'apprendimento

L'insegnamento prevede lo sviluppo di un progetto software da sviluppare individualmente. L'esame consiste in una discussione orale del progetto stesso (15/30) unita a domande riguardo le nozioni teoriche fornite durante l'insegnamento (15/30).

Risultati attesi

Conoscenza e capacità di comprensione:
Conoscenze di modellazione e progettazione di soluzioni edge distribuite.
Conoscenze approfondite sulle componenti hardware e software coinvolte nel processo di sviluppo.