SOFTWARE ENGINEERING FOR ARTIFICIAL INTELLIGENCE

Internazionalizzazione della Didattica SOFTWARE ENGINEERING FOR ARTIFICIAL INTELLIGENCE

Indietro

0522500139
DIPARTIMENTO DI INFORMATICA
CORSO DI LAUREA MAGISTRALE
INFORMATICA
2024/2025



ANNO ORDINAMENTO 2016
SECONDO SEMESTRE
CFUOREATTIVITÀ
648LABORATORIO
Obiettivi
Obiettivo generale

Il corso mira a fornire agli studenti una solida comprensione dei principi fondamentali dell'Ingegneria del Software applicata all’Intelligenza Artificiale (IA). Gli studenti acquisiranno conoscenze teoriche e pratiche sugli approcci ingegneristici che consentono lo sviluppo di sistemi basati su algoritmi di IA e saranno in grado di applicare tali conoscenze per risolvere problemi complessi.

Conoscenza e capacità di comprensione

Gli studenti acquisiranno la conoscenza delle metodologie e delle tecniche di analisi, progettazione e verifica di sistemi di Intelligenza Artificiale e, più in particolare, di sistemi che richiedono l’utilizzo di tecniche di apprendimento nel contesto di sistemi software complessi e critici. In particolare:

-Requisiti funzionali e non-funzionali di sistemi basati su IA, con riferimento all’estrazione e analisi di tali requisiti;
-Principi di data engineering, con riferimento all’estrazione, validazione e pre-elaborazione di grandi quantità di dati, come i big data;
-Addestramento e configurazione di algoritmi di IA, con riferimento ad algoritmi avanzati quali ensemble learning, active learning, reinforcement learning, deep learning, quantum machine learning, e large language model;
-Fondamenti di software analytics per algoritmi di IA, con particolare riferimento alla validazione/verifica, sicurezza/privacy, etica e fairness, sostenibilità ambientale ed economica, ed explainability di algoritmi di IA;
-Versioning di modelli di Intelligenza Artificiale;
-Distribuzione e monitoraggio di modelli di Intelligenza Artificiale, con particolare riferimento al modello MLOps;
-Management e documentazione di sistemi di Intelligenza Artificiale.

Capacità di applicare conoscenza e comprensione

Lo studente sarà in grado di definire e utilizzare strumenti ingegneristici per lo sviluppo di sistemi basati su algoritmi di IA. In particolare, sarà in grado di:
-estrarre requisiti funzionali e non funzionali per sistemi basati su IA;
-definire metodologie di distribuzione, versioning e monitoraggio di sistemi basati su IA, con un focus su approcci MLOps.
-applicare pratiche di estrazione, validazione e pre-elaborazione dei dati;
-definire delle pipeline di addestramento e configurazione di sistemi basati su IA, essendo in grado di lavorare con algoritmi avanzati di IA;
-validare e verificare sistemi basati su IA, garantendo livelli adeguati di qualità in riferimento etica e fairness, sostenibilità ambientale ed economica, ed explainability.

Autonomia di giudizio

Lo studente sarà in grado di:

-valutare criticamente le diverse fasi e pratiche nello sviluppo di sistemi di IA e proporre eventuali miglioramenti o adattamenti;
-prendere decisioni informate sulla selezione e l'applicazione delle migliori pratiche e strumenti nel contesto della progettazione e sviluppo di sistemi di IA.

Abilità comunicative

Lo studente sarà in grado di:
-comunicare, attraverso la presentazione e la discussione dei concetti teorici e delle applicazioni pratiche dell'Ingegneria del software per l’IA, i risultati di ricerche o proprie elaborazioni riguardanti lo sviluppo di sistemi basati su IA.
-argomentare e giustificare le scelte di progettazione ed i risultati ottenuti, sia oralmente che per iscritto.

Capacità di apprendimento

Lo studente sarà in grado di:
-utilizzare strumenti bibliografici al fine di adattarsi ai rapidi sviluppi nell'ambito dell'IA, affrontando sfide emergenti con spirito critico e creativo.
-svolgere attività di ricerca, comprendere e interpretare testi complessi relativi allo sviluppo di sistemi basati su IA.
Prerequisiti
Lo studente deve avere conoscenza pregressa di concetti relativi a:
-ingegneria del software - con particolare riferimento alla gestione dell’evoluzione di sistemi software;
-intelligenza artificiale – in questo caso, è sufficiente disporre di conoscenze di base.
Contenuti
Il corso fornirà le conoscenze di base sui seguenti argomenti:
-Requisiti funzionali e non-funzionali di sistemi basati su IA, con riferimento all’estrazione e analisi di tali requisiti (2 ore);
-Principi di data engineering, con riferimento all’estrazione, validazione e pre-elaborazione di grandi quantità di dati, come i big data (6 ore);
-Addestramento e configurazione di algoritmi di IA, con riferimento ad algoritmi avanzati quali ensemble learning, active learning, reinforcement learning, deep learning, quantum machine learning, e large language model (16 ore);
-Fondamenti di software analytics per algoritmi di IA, con particolare riferimento alla validazione/verifica, sicurezza/privacy, etica e fairness, sostenibilità ambientale ed economica, ed explainability di algoritmi di IA (18 ore);
-Distribuzione, versioning e monitoraggio di modelli di Intelligenza Artificiale, con particolare riferimento al modello MLOps (4 ore);
-Management e documentazione di sistemi di Intelligenza Artificiale (2 ore).
Metodi Didattici
L’insegnamento prevede 48 ore di lezioni frontali e laboratorio (6 CFU) a carattere teorico/metodologico per il trasferimento delle conoscenze richieste e degli strumenti necessari per le attività progettuali.

Agli studenti verrà assegnato un progetto (individuale o in un gruppo composto da un massimo di 4 studenti) sulle tematiche del corso tramite il quale potranno approfondire gli aspetti pratici trattati durante le ore di lezione. L’impegno richiesto sul progetto è di circa 48 ore
Verifica dell'apprendimento
Il raggiungimento degli obiettivi dell’insegnamento è certificato mediante il superamento di un esame con valutazione in trentesimi. L’esame prevede la realizzazione di (1) un progetto individuale o di gruppo e la consegna della relativa documentazione e (2) una prova orale.

-La consegna della documentazione del progetto è propedeutica alla prova orale.
-La prova orale consiste in un colloquio con domande e discussione sugli aspetti salienti del progetto realizzato e sui contenuti teorici e metodologici indicati nel programma dell’insegnamento ed è finalizzata ad accertare il livello di conoscenza raggiunto dallo studente sui contenuti teorici e metodologici del programma del corso e la loro applicazione al progetto, il contributo dato al progetto, la completezza, correttezza e sintesi della documentazione di progetto, nonché a verificare la capacità di esposizione ricorrendo alla terminologia appropriata, la capacità di organizzazione autonoma dell’esposizione e la capacità di motivare ed argomentare opportunamente le scelte di progetto.
Testi
I libri consigliati sono i seguenti:

-A. Burkov, “Machine Learning Engineering”, Paperback.
-G. Hulten, "Building Intelligent Systems".
-H. Hapke, C. Nelson, “Building Machine Learning Pipelines”, O’Really.
Altre Informazioni
La frequenza al corso non è obbligatoria ma, tuttavia, fortemente consigliata. Gli studenti dovranno essere preparati ad affrontare attivamente il corso, tramite interazione con il docente in aula e tempo dedicato alla formazione individuale. Una preparazione soddisfacente, che porti al superamento dell’esame, consisterà in una media di studio individuale di due ore per ciascuna ora trascorsa in aula oltre che una media di un’ora dedicata all’attività progettuale associata.

Il corso prevede inoltre una forte predisposizione all’apprendimento di strumenti software per lo sviluppo di pipeline di intelligenza artificiale (ad esempio, Jupyter Notebook, ML-Flow e altri). Il materiale didattico sarà disponibile sulla piattaforma e-learning dipartimentale
Orari Lezioni

  BETA VERSION Fonte dati ESSE3
  • Didattica