Corso di laurea

Software: Science And Technology

Università degli studi di Firenze · 22 materie · 0 file condivisi

Ecco tutti i dettagli sul corso di laurea selezionato. Sul UniDocs troverai gli appunti condivisi dagli altri studenti del tuo corso di laurea, ordinati per materia. Ricordati che per poter visualizzare il materiale devi essere registrato al sito e possedere un numero di crediti sufficiente.

Sfoglia il materiale didattico

Con UniDocs hai l'opportunità di studiare insieme a tutto il tuo corso di laurea. Guadagna subito dei crediti, carica il materiale del tuo ultimo esame!
Più condividi, più tempo avrai per studiare con tutta la community!

Materie del corso

ARCHITECTURE, MODEL AND ANALYSIS OF CYBER PHYSICAL SYSTEMS 1° anno · Annuale · 12 CFU · INFO-01/A · 0 file

Il corso mira a fornire solide conoscenze e competenze per la concezione, definizione, progettazione, valutazione e analisi di sistemi complessi con requisiti di criticità e di tempo. Questi sistemi comprendono…

Scheda dell'insegnamento

Obiettivi formativi

Il corso mira a fornire solide conoscenze e competenze per la concezione, definizione, progettazione, valutazione e analisi di sistemi complessi con requisiti di criticità e di tempo. Questi sistemi comprendono l’Internet of Things, le Smart Factories e le Infrastrutture Critiche.
In particolare, verranno illustrati i concetti alla base della disciplina e descritte le principali tecniche di resilienza con focus: (i) sugli aspetti di distribuzione e coordinamento dei vari sistemi che formano un sistema di sistemi; (ii) sulle tecniche di modellizzazione stocastica per la valutazione quantitativa di proprietà dei sistemi, quali ad esempio l'affidabilità, la disponibilità, la sicurezza e la performance.

Programma

Il corso si divide in due parti (parte "Architetturale" e parte "Modellizzazione e Analisi") che trattano rispettivamente:
Parte "Architetturale": problematiche architetturali relative alla dependability di sistemi di sistemi cyber-fisici, e metodologie per la progettazione e costruzione di tali sistemi;
Parte "Modellizzazione e Analisi": metodologie e formalismi di modellizzazione per la valutazione quantitativa delle proprietà di affidabilità, disponibilità, sicurezza e performance di sistemi.

Modalità d'esame

La verifica dell'apprendimento è composta di due parti, rispettivamente per la parte "Architetturale" e per la parte di "Modellizzazione e Analisi".
Per la parte "Architetturale", le modalità di verifica dell'apprendimento sono:

  • elaborazione di un approfondimento su casi di studio rilevanti di sistemi cyber-fisici. Il testo del progetto verrà assegnato nel corso delle lezioni, e dovrà essere svolto individualmente. Il progetto sarà valutato in termini di SUFFICIENTE/NON SUFFICIENTE. I criteri per la valutazione sono: qualità della comprensione e descrizione del problema e della soluzione individuata nel panorama della letteratura. Una relazione relativa all’approfondimento deve essere consegnata almeno 7 giorni prima della data prevista per l’orale.
  • una prova orale sugli argomenti della parte "Architetturale" del corso, e sul progetto svolto. Condizione per l'ammissione alla prova orale è la valutazione come sufficiente del lavoro. La prova orale è valutata con un voto in trentesimi (con 18 che indica la sufficienza).
    Il voto assegnato alla parte "Architetturale" è in trentesimi, ed è equivalente al voto della prova orale.
    Per la parte "Modellizzazione e Analisi", le modalità di verifica dell'apprendimento sono:
  • elaborazione di un progetto di modellizzazione stocastica applicato ad un caso di studio, utilizzando uno strumento di supporto (Mobius). Il caso di studio verrà assegnato nel corso delle lezioni, e potrà essere svolto in gruppo fino a 3 persone. Il progetto consiste nello sviluppo di modelli stocastici e nella preparazione di un report sulle attività svolte, con la descrizione dei risultati ottenuti. Il progetto sarà valutato in termini di SUFFICIENTE/NON SUFFICIENTE. I criteri per la valutazione del progetto sono: capacità dei modelli di catturare gli aspetti significativi del caso di studio rispetto alle misure di interesse, qualità delle analisi, qualità del report sulle attività svolte. Il progetto deve essere consegnato almeno 7 giorni prima della data prevista per l' orale.
  • una prova orale sugli argomenti della parte "Modellizzazione e Analisi" del corso, e sul progetto svolto. Condizione per l'ammissione alla prova orale è la valutazione come sufficiente del progetto. La prova orale è valutata con un voto in trentesimi (con 18 che indica la sufficienza).
    Se entrambe le parti "Architetturale" e "Modellizzazione e Analisi" sono sufficienti (voto pari o superiore a 18/30), sarà effettuata una proposta di voto finale. Tale voto è definito come la media tra il voto ottenuto sulla parte "Architetturale" e il voto ottenuto sulla parte "Modellizzazione e Analisi", approssimata per eccesso. Si consegue la lode se entrambe le parti sono state valutate con 30/30.
    NOTE AGGIUNTIVE IMPORTANTI:
  • Il voto assegnato dal docente non è "negoziabile", il che significa che non può essere aumentato sostenendo un'ulteriore prova orale o completando un compito aggiuntivo.
  • Se uno studente non supera l'esame, non può ripeterlo prima della data d'esame successiva.
  • Si invitano vivamente gli studenti a non chiedere al docente di applicare eccezioni alle regole di cui sopra; in particolare, devono evitare di fare riferimento alla propria situazione privata.
    Tabella docimologica di valutazione:
    Insufficiente
    Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
    18–22
    Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
    23–25
    Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
    26–28
    Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
    29–30 e Lode
    Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
    La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Per la parte "Architetturale" del corso, i riferimenti principali sono:

  • Cyber-Physical Systems of Systems
    Foundations – A Conceptual Model and Some Derivations: The AMADEOS Legacy
    Editors: Andrea Bondavalli, Sara Bouchenak, Hermann Kopetz
    ISBN: 978-3-319-47589-9 (Print) 978-3-319-47590-5 (Online)
    open access su:
    https://link.springer.com/book/10.1007%2F978-3-319-47590-5
  • Avizienis, A.; Laprie, J.-C.; Randell, B.; Landwehr, C. “Basic concepts and taxonomy of dependable and secure computing” IEEE TDSC, Vol. 1 Page(s): 11- 33, 2004.
  • Siewiorek, D.P, Swarz R."Reliable Computer Systems: Design and Evaluation", 3rd edition, A. K. Petres, Ltd., 1998
  • Hermann Kopetz: Real-Time Systems: Design Principles for Distributed Embedded Applications, second edition, Springer, 2011
    Per la parte "Modellizzazione e Analisi" del corso:
  • Lucidi presenti sul sito del corso.
  • Libri che riguardano argomenti specifici trattati durante il corso
  • Articoli pubblicati in riviste e in proceeding di conferenze.
  • Dispense integrative su argomenti specifici del corso.

Codice insegnamento B032426

AUTOMATED SOFTWARE TESTING 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Il corso ha lo scopo di insegnare tecniche basate sul test automatico dei programmi (Test-Driven Development) sotto vari aspetti: Unit Testing (testare un singolo componente), Integration Testing (testare più…

Scheda dell'insegnamento

Obiettivi formativi

Il corso ha lo scopo di insegnare tecniche basate sul test automatico dei programmi (Test-Driven Development) sotto vari aspetti: Unit Testing (testare un singolo componente), Integration Testing (testare più componenti insieme) e Functional Testing (testare l'interfaccia utente, sia essa un programma in esecuzione sul PC o un’interfaccia Web). I test rappresenteranno un meccanismo per sviluppare molto più velocemente anche i programmi più complessi, usando fin dall'inizio una metodologia che renderà i programmi modulari. I test daranno una misura della qualità del software prodotto e permetteranno di testarlo in modo automatico. Infine, i test possono essere visti come strumenti di specifica del comportamento del software.
Inoltre, saranno mostrati strumenti di versionamento del codice (git, sia in locale che distribuito su Internet, Github) e per la Build Automation dei programmi, cioè la compilazione automatica di tutta l'applicazione e l'esecuzione di tutti i test dell'applicazione. Questi saranno usati nel contesto della Continuous Integration, affidandosi a server dedicati e disponibili anche nel cloud, in modo gratuito (ad es., GitHub Actions). Tutti questi strumenti saranno "collegati" insieme, per avere un processo automatizzato di sviluppo che consente il continuo monitoraggio del codice sviluppato e facilita la release dei programmi (Continuous Delivery). In questo processo saranno utilizzati anche strumenti che analizzano il codice e rilevano eventuali problemi di qualità che riguardano la "pulizia" del codice. Tutto il processo è pensato per lo sviluppo “collaborativo”, cioè all’interno di un team di sviluppo.
Oltre agli strumenti gratuiti e open source e quelli disponibili sul cloud, useremo anche strumenti che virtualizzano l'ambiente e permettono una facile riproducibilità del contesto in cui eseguire i test dell'applicazione (ad es., Docker). Questi permetteranno anche di testare facilmente l'applicazione in più contesti (ad es., usando differenti versioni delle librerie e server di terze parti che sono utilizzati dalla nostra applicazione).
Durante tutto il corso ci affideremo a strumenti che incrementano la produttività, in primis useremo un IDE (Eclipse).
Alla fine del corso gli studenti saranno in grado di sviluppare applicazioni guidate dai test e di scrivere test sotto i vari aspetti (unit test, integration test, functional test) e di metter su un meccanismo di Continuous Integration e Build Automation che tiene traccia dei vari test eseguiti e che analizza la qualità del codice.

Programma

Test automation dei programmi e Test-Driven Development sotto vari aspetti. Build Automation e Continuous Integration, usando il “cloud”. Tutti questi strumenti saranno "collegati" insieme, per un processo automatizzato di sviluppo e rilascio. Saranno utilizzati anche strumenti che analizzano la qualità del codice. Tutto il processo è pensato per lo sviluppo “collaborativo”. Useremo strumenti che virtualizzano l'ambiente e per una facile riproducibilità dei test.

Modalità d'esame

La verifica finale consta di un progetto da svolgere a casa e da un esame orale.
Il progetto viene proposto dallo studente e concordato col docente, utilizzando le tecniche mostrate durante il corso.
Il progetto è mirato a dimostrare le capacità di sviluppo guidato dai test, di testare ogni componente dell'applicazione, l'integrazione di vari componenti e l'applicazione finale.
L'orale consisterà nella discussione del progetto svolto e in varie domande su tutti i contenuti del corso.
Il voto finale terrà conto della qualità del progetto e delle risposte all'esame orale.
Tabella docimologica di valutazione
Insufficiente
Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
18–22
Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
23–25
Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
26–28
Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
29–30 e Lode
Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Informazioni disponibili sul sito Moodle del corso.
I dettagli dei libri per il corso e per l'esame saranno riportati sul sito Moodle del corso.

Codice insegnamento B032425

DATA COLLECTION AND MACHINE LEARNING FOR CRITICAL CYBER-PHYSICAL SYSTEMS 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

KNOWLEDGE AND UNDERSTANDING Gli studenti acquisiranno conoscenze sui seguenti argomenti: Metrologia e monitoraggio Black/White Box Testing, Fault/Error Injection, Anomaly Detection per rilevare errori e/o intrusioni,…

Scheda dell'insegnamento

Obiettivi formativi

KNOWLEDGE AND UNDERSTANDING
Gli studenti acquisiranno conoscenze sui seguenti argomenti:
Metrologia e monitoraggio
Black/White Box Testing,
Fault/Error Injection,
Anomaly Detection per rilevare errori e/o intrusioni,
Adversarial attacks verso reti neurali,
Robustezza di reti neurali,
Utilizzo di reti neurali per dati tabellari,
Generazione di attacchi zero-day usando GAN.
APPLYING KNOWLEDGE AND UNDERSTANDING
Alla fine del corso, lo studente dovrebbe essere in grado di pianificare ed implementare un sistema di monitoraggio e installarlo in un sistema obiettivo, pianificare e implementare esperimenti di iniezione di guasti/test di robustezza, analizzare i dati raccolti per il rilevamento di anomalie.
MAKING JUDGEMENTS
Gli studenti saranno in grado di argomentare sull'adeguatezza di uno specifico sistema di monitoraggio e il relativo processo di rilevamento delle anomalie per un compito specifico in un dato sistema.
COMMUNICATION SKILLS
Alla fine del corso, lo studente dovrebbe essere in grado di relazionare su tutta l'attività tecnica alla base dell'installazione di un sistema di monitoraggio e di discutere approfondimenti sui processi di analisi dei dati
LEARNING SKILLS
Il corso fornirà allo studente le conoscenze per esplorare la letteratura su argomenti di monitoraggio e machine learning

Programma

Il corso si divide in due parti, che trattano rispettivamente: i) monitoring, testing, fault injection, anomaly detection, e ii) l'analisi di problematiche e soluzioni basate su deep learning per la costruzione di sistemi critici.

Modalità d'esame

Progetto riassuntivo relativo ad uno degli aspetti principali del corso, assegnato alla fine del corso. La consegna di un progetto almeno sufficiente permette allo studente di sostenere l'esame orale sugli argomenti del corso. La valutazione finale sarà ottenuta usando come base la valutazione dell'esame orale, alla quale si aggiungono dei punti di merito in base alla qualità del progetto (che deve essere almeno sufficiente per sostenere l'orale)
Tabella docimologica di valutazione
Insufficiente
Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
18–22
Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
23–25
Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
26–28
Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
29–30 e Lode
Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Slides mostrate durante il corso, tutorial e risorse online fornite durante il corso, ed articoli scientifici per approfondimento

Codice insegnamento B032430

DISTRIBUTED PROGRAMMING FOR WEB, IOT AND MOBILE SYSTEMS 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

CONOSCENZA E COMPRENSIONE Al termine del corso, lo studente dovrà acquisire la conoscenza e la comprensione dell’organizzazione architetturale di un generico sistema distribuito; dei meccanismi di comunicazione di alto…

Scheda dell'insegnamento

Obiettivi formativi

CONOSCENZA E COMPRENSIONE
Al termine del corso, lo studente dovrà acquisire la conoscenza e la comprensione dell’organizzazione architetturale di un generico sistema distribuito; dei meccanismi di comunicazione di alto livello; delle tecnologie per lo sviluppo di moderne applicazioni web, mobile e IoT.
APPLICARE CONOSCENZA E COMPRENSIONE
Al termine del corso, lo studente dovrà essere in grado di sviluppare un'applicazione distribuita e per sistemi mobili utilizzando un framework moderno.
ESPRIMERE GIUDIZI
Al termine del corso, lo studente dovrà essere in grado di identificare le scelte architetturali più adeguate per la progettazione di un'applicazione distribuita e per sistemi mobili, e di selezionare gli strumenti più adeguati per la sua implementazione.
CAPACITÀ DI COMUNICAZIONE
Al termine del corso, lo studente dovrà essere in grado di presentare i principali pattern architetturali per l'organizzazione di un sistema distribuito e le nozioni dei meccanismi di comunicazione di alto livello. Lo studente dovrà inoltre essere in grado di dimostrare le proprie competenze attraverso lo sviluppo di un'applicazione distribuita, e per sistemi mobili o IoT.
COMPETENZE DI APPRENDIMENTO
Al termine del corso, lo studente dovrà essere in grado di apprendere autonomamente tecniche e strumenti di programmazione non illustrati nel corso.

Programma

Il corso mira a fornire una conoscenza generale della programmazione distribuita, delle metodologie e degli strumenti. La prima parte del corso, dopo un richiamo alle nozioni di base di programmazione di rete, presenta l'organizzazione dei sistemi distribuiti e i meccanismi di comunicazione di base. Nella seconda parte saranno presentate le tecniche di base per lo sviluppo di moderni sistemi distribuiti utilizzando tecnologie web, IoT e mobili attraverso un approccio pratico.

Modalità d'esame

I risultati dell'apprendimento sono valutati con due diversi test:
1. Esame orale che copre tutti gli argomenti presentati durante le lezioni;
2. Prova pratica che consiste in un progetto il cui argomento deve essere concordato con il docente e che lo studente discuterà durante l’esame orale.
La valutazione di ogni prova è espressa con un voto in trentesimi, con eventuale lode. Una prova si considera superata con successo se il voto assegnato è almeno diciotto. Se entrambe le prove sono sufficienti, il voto finale sarà determinato dalla media dei due voti.
L'esame orale mira a valutare: l'acquisizione da parte dello studente della conoscenza e della comprensione degli argomenti trattati durante le lezioni, la capacità di ragionare su questioni specifiche relative alla programmazione distribuita e la comprensione e l'uso appropriato del vocabolario specialistico.
La prova pratica mira a valutare: la capacità dello studente di utilizzare in pratica le tecniche e gli strumenti presentati durante il corso; la capacità di progettare un'applicazione distribuita; la capacità di apprendere autonomamente nuove tecniche e strumenti di programmazione; le abilità comunicative dello studente, in termini di chiarezza e capacità di scrivere una relazione. Il voto della prova pratica è determinato dalla complessità del progetto, dalla qualità della presentazione orale, dalla qualità della relazione e dall'accuratezza delle risposte alle domande poste dal docente durante la discussione del progetto.
Tabella docimologica di valutazione
Insufficiente
Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
18–22
Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
23–25
Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
26–28
Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
29–30 e Lode
Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Libro di riferimento:

  • Distributed Systems (3rd ed.) - Maarten van Steen, Andrew S. Tanenbaum - disponibile sul sito degli autori (2017).
    Materiale didattico addizionale: slides e riferimenti online forniti dal docecente.

Codice insegnamento B032427

ELEMENTS OF NUMERICAL CALCULUS 1° anno · 1° semestre · 6 CFU · MATH-05/A · 0 file

Con riferimento ai Descrittori di Dublino 1. CONOSCENZA E COMPRENSIONE 1.1 Conoscenza e comprensione delle definizioni degli oggetti matematici trattati nel corso e delle loro proprietà. 1.2 Conoscenza e comprensione dei…

Scheda dell'insegnamento

Obiettivi formativi

Con riferimento ai Descrittori di Dublino
1. CONOSCENZA E COMPRENSIONE
1.1 Conoscenza e comprensione delle definizioni degli oggetti matematici trattati nel corso e delle loro proprietà.
1.2 Conoscenza e comprensione dei concetti fondamentali dell’analisi numerica e delle problematiche connesse all’aritmetica finita.
1.3 Conoscenza e comprensione delle caratteristiche di alcune classi di problemi applicativi di base (risoluzione di sistemi lineari, approssimazione di funzioni, risoluzione di equazioni differenziali ordinarie).
1.4 Conoscenza e comprensione dei metodi numerici di più comune utilizzo per la risoluzione delle suddette classi di problemi. In particolare (cc1) si svilupperanno “tecniche numeriche per la soluzione di problemi differenziali di interesse ambientale e modelli di simulazione numerica di sistemi e processi anche complessi”.
1.5 Conoscenza e comprensione di metodi e tecniche d'indagine del territorio e di analisi dei dati, anche con l'integrazione a differente scala spaziale e temporale (cc2).
1.6 Conoscenza e comprensione del linguaggio Matlab per il calcolo scientifico.
1.7 Lo studio dei modelli differenziali e l’ambiente Matlab contribuiscono allo sviluppo di conoscenza e comprensione di metodi e tecniche di sviluppo e utilizzo di sistemi informativi per la rappresentazione, l’analisi e la modellazione dell’ambiente e del territorio (cc3).
2. CAPACITA' DI APPLICARE CONOSCENZA E COMPRENSIONE
2.1 Saper formulare matematicamente i problemi affrontati.
2.2 Saper enunciare e dimostrare i risultati teorici presentati.
2.3 Saper implementare efficientemente in Matlab i principali metodi numerici studiati, anche mediante il ricorso alle funzioni Matlab predefinite e tenendo conto delle specificità del linguaggio.
I punti precedenti concorrono a sviluppare gli strumenti fondamentali per l'analisi quantitativa dei sistemi ingegneristici nel quadro dei processi geologici, della loro evoluzione temporale e della loro modellazione, soprattutto ai fini applicativi, inclusi i sistemi informativi nella rappresentazione del territorio (ca4).
3. AUTONOMIA DI GIUDIZIO
3.1 Saper presentare efficacemente i risultati numerici ottenuti, commentando il funzionamento del metodo e interpretandone la soluzione (formulare giudizi autonomi applicando tecniche sperimentali e numeriche, anche attraverso l’adozione di ipotesi semplificative motivate dall’esperienza nel settore specifico (ag1))
4. CAPACITA’ DI COMUNICAZIONE
4.1 Saper esporre, argomentare e applicare le principali strategie numeriche presentate, contestualizzandole sulla base delle loro aderenza al problema continuo di riferimento, delle loro funzionalità e proprietà teoriche (comunicare in modo chiaro e privo di ambiguità le proprie conclusioni, adattando il linguaggio al contesto e agli interlocutori (ac1))
4.2 Motivare e supportare le proprie argomentazioni con riferimenti tecnici, normativi e scientifici (ac2)
4.3 comunicare efficacemente con linguaggio tecnico inglese, sia con interlocutori specialisti che non specialisti (ac3)
5. CAPACITA’ DI APPRENDIMENTO
5.1 Acquisire l'abilità di sperimentare e confrontare diversi metodi numerici per la risoluzione dei problemi trattati, sia per trovare riscontro delle loro caratteristiche teoriche, che per conoscerne le peculiarità sperimentali, allo scopo di proporre criticamente il modello numerico più opportuno.
5.2 Capacità di apprendere in modo autonomo o auto-diretto, sia per l’aggiornamento professionale continuo che per eventuali sviluppi scientifici e di ricerca, grazie a un percorso formativo che promuove la responsabilizzazione dello studente (ap1).
5.3 Apprendimento realizzato anche mediante attività individuali e pratiche, come tirocini – inclusi quelli internazionali – la redazione della tesi e la preparazione dell’esame finale, che contribuiscono allo sviluppo di competenze oltre i metodi della didattica tradizionale (ap2).
Per quanto riguarda gli obiettivi del corso [B032438] - ELEMENTS OF NUMERICAL CALCULUS (Software: Science and Technology, si fa riferimento ai seguenti Descrittori di Dublino:
(cc6) metodi e modelli matematici e statistici per la quantificazione dell'incertezza, l’analisi numerica, la ricerca operativa e l’ottimizzazione di sistemi dinamici.
(ca4) modellare sistemi software e cyber-fisici utilizzando opportuni formalismi, realizzare sistemi per il loro monitoraggio e l’identificazione di anomalie, e utilizzare strumenti software per la verifica e valutazione quantitativa di performance e proprietà di dependability.
(ca6) applicare metodi e modelli matematici e statistici per la quantificazione dell'incertezza, l’analisi numerica, la ricerca operativa e l’ottimizzazione di sistemi dinamici.
(ag3) esercitare capacità autonoma di giudizio nel valutare e quantificare la qualità di un sistema software e cyber-fisico.
(ac1) comunicare, in forma orale e scritta in lingua inglese, informazioni, idee, problemi e soluzioni relative alla realizzazione e analisi di sistemi software complessi.
(ap2) raggiunto un grado di conoscenza e competenza tale da intraprendere studi futuri avanzati in autonomia.
(ap3) capacità di adattamento a nuove situazioni e inserirsi prontamente negli ambienti di lavoro.

Programma

Il corso presenta i concetti principali del calcolo numerico, analizzando i più comuni modelli numerici per la risoluzione di classi di problemi matematico-applicativi.
Contenuti: errori e aritmetica finita, soluzione numerica di sistemi lineari, approssimazione numerica di dati e funzioni, soluzione numerica di problemi differenziali ordinari. Illustrazione e utilizzo del linguaggio Matlab per l'implementazione e la sperimentazione dei principali metodi numerici trattati.

Modalità d'esame

La prova scritta consiste di 1) domande sugli aspetti teorici dei metodi numerici; 2) alcuni esercizi sull'applicazione degli algoritmi (senza Matlab) 3) un esercizio Matlab (implementazione o uso di semplici algoritmi) da fare “carta e penna”(senza computer).
La valutazione terrà particolare conto della capacità di organizzare efficacemente la conoscenza, dell’accuratezza dei contenuti, della capacità di ragionamento critico e di motivare quanto asserito, del livello d’esposizione formale e dell’impiego di lessico specifico.
Con riferimento ai Descrittori di Dublino: cc1 e cc2 verifica con esercizi sull’applicazione degli algoritmi; cc3 e ca4 verifica mediante esercizio Matlab; ag1, ac1, ac2, ac3 verifica mediante domande di teoria.

  • Il voto assegnato dal docente non è “negoziabile”, il che significa che non può essere aumentato sostenendo una prova orale aggiuntiva o completando un compito aggiuntivo.
  • Se uno studente non supera l'esame, non può ripeterlo prima della data d'esame successiva.
  • Gli studenti sono vivamente invitati a non chiedere al docente di applicare eccezioni alle regole di cui sopra; in particolare, devono evitare di fare riferimento alla propria situazione privata.
    Per la tabella docimologica si fa riferimento al Syllabus del corso integrato [B030632] - COMPUTATIONAL METHODS.
    Il voto di questo modulo costituisce un voto parziale del corso integrato [B030632] - COMPUTATIONAL METHODS (si veda il Syllabus del corso integrato).
    Invece per gli studenti del corso [B032438] - ELEMENTS OF NUMERICAL CALCULUS del Corso di Studi SOFTWARE: SCIENCE AND TECHNOLOGY, il voto verrà verbalizzato se superiore o uguale a 18/30.

Testi di riferimento

S. Chapra, R. Canale, Numerical methods for engineers, Mc-Graw Hill. D. Kahaner, C.,Moler, S. Nash, Numerical methods and software, Prentice Hall. W. J. Palm III, Introduction to Matlab for engineers, Mc-Graw Hill, 2005. Materiale integrativo messo a disposizione alla pagina e-learning Moodle del corso (https://e-l.unifi.it).

Codice insegnamento B032438

GAME DEVELOPMENT 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

KNOWLEDGE AND UNDERSTANDING At the end of the course, the student should acquire knowledge and understanding of: the methodologies of game development. APPLYING KNOWLEDGE AND UNDERSTANDING At the end of the course, the…

Scheda dell'insegnamento

Obiettivi formativi

KNOWLEDGE AND UNDERSTANDING
At the end of the course, the student should acquire knowledge and understanding of: the methodologies of game development.
APPLYING KNOWLEDGE AND UNDERSTANDING
At the end of the course, the student should be able to develop a simple video game working in a team using the Unity framework, by applying the methodologies, techniques and tools introduced in the course.
MAKING JUDGEMENTS
At the end of the course, the student should be able to: identify the most adequate solution (tool, feature, pattern, etc.) for developing a specific aspect of a game.
COMMUNICATION SKILLS
At the end of the course, the student should be able to: work in a team by communicating with stakeholders (impersonated by the teacher during the course) and other developers; report the progresses and results of a game development project to others in a clear and competent way.
LEARNING SKILLS
At the end of the course, the student should be able to autonomously learn new tools and technical solutions not illustrated in the course in order to face the specific challenges of a new video game project.

Programma

The course aims at providing a general knowledge about the methodologies and tools for the development of video games. The course reviews the basic concepts about gaming and development of video games, and covers the phases of the development of the software components of a video game. The course has a hands-on approach.

Modalità d'esame

Learning outcomes are assessed using two different tests:
1. Practical test, consisting of a group project whose topic must be agreed upon by the teacher and the students, which will be presented to the other students and orally discussed with the teacher.
2. Oral test, consisting of questions that may cover all the topics presented during the course.
The evaluation of each test is expressed with a mark out of thirty, with possible laude. The exam is considered to be successfully passed if the mark assigned to each of the two tests is at least eighteen. The final mark will be determined by the average of the two marks.
Each learning outcome is assessed in at least one of the two tests composing the exam.
The practical test aims to evaluate: the student's ability to use in practice game development techniques and tools; the capability to judge different solution for implementing a specific aspect of a game; the capability to autonomously learn new techniques and tools; the student's communication skills, in terms of teamwork skills, clarity of the presentation and ability to write a professional report. The mark of the practical test is determined by the complexity of the project, the quality of the oral presentation, the quality of the reports and the accuracy in the answers to the questions posed by the teacher during the discussion of the project.
The oral test aims to evaluate: the student's acquisition of the knowledge and understanding of the topics covered during the lessons; the capability of reasoning on specific issues related to game development; the appropriate understanding and use of specialized vocabulary. The mark of the oral test is determined by the number of correct answers to the questions and the accuracy of the answers.
Additional exam rules:

  • The mark assigned by the teacher is not "negotiable", meaning that the mark cannot
    be increased by taking an additional oral test or completing an extra assignment.
  • If a student fails the exam, he/she cannot retake it before the next exam date.
  • The students are strongly invited not to ask the teacher to apply exceptions to the
    above rules; in particular, they must avoid referring to their private situation.
    Tabella docimologica di valutazione
    Insufficiente
    Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
    18–22
    Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
    23–25
    Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
    26–28
    Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
    29–30 e Lode
    Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
    La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Textbooks:

  • Unity in Action: Multiplatform game development in C#, Third Edition , by Joseph Hocking, 2022.
    Additional teaching material: slides presented during the course and tutorials. The course partially uses online materials and resources.

Codice insegnamento B032436

MACHINE LEARNING FOR SOFTWARE ANALYSIS 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Il corso mira a fornire agli studenti conoscenze complete e competenze pratiche nell’applicazione di tecniche di machine learning ai problemi di analisi del software. Gli studenti impareranno a utilizzare framework e…

Scheda dell'insegnamento

Obiettivi formativi

Il corso mira a fornire agli studenti conoscenze complete e competenze pratiche nell’applicazione di tecniche di machine learning ai problemi di analisi del software. Gli studenti impareranno a utilizzare framework e metodologie moderne di ML per affrontare sfide reali dell’ingegneria del software, tra cui analisi del codice, rilevamento di vulnerabilità, completamento del codice e valutazione della qualità del software.
1. Conoscenza e comprensione
Padroneggiare i concetti fondamentali degli algoritmi di machine learning (supervisionato, deep learning)
Comprendere le metodologie di analisi del software e la loro integrazione con tecniche di ML
Comprendere i fondamenti teorici di reti neurali, transformer e modelli sequence-to-sequence
Conoscere metriche di ingegneria del software, rappresentazioni del codice e tecniche di program analysis
2. Capacità di applicare conoscenza e comprensione
Utilizzare framework di svluppo in python per il preprocessing dei dati e lo sviluppo dei modelli
Implementare pipeline di machine learning per compiti di analisi del software
Progettare e valutare modelli di ML per attività di analisi del software, ad es. completamento del codice, rilevamento di vulnerabilità e previsione della qualità del software
Gestire dataset reali, inclusi repository di codice, metriche software e tracce di esecuzione
3. Autonomia di giudizio
Valutare criticamente diversi approcci di ML per specifici problemi di analisi del software
Misurare le prestazioni dei modelli con metriche adeguate al contesto dell’ingegneria del software
Prendere decisioni informate su feature engineering e selezione dei modelli
Analizzare i trade-off tra complessità del modello e interpretabilità nell’analisi del software
4. Abilità comunicative
Presentare in modo efficace risultati tecnici e delle valutazioni dei modelli
Documentare procedure sperimentali e risultati
Collaborare in progetti di ML per l’analisi del software
Spiegare concetti complessi di ML a pubblici sia tecnici sia non tecnici
5. Capacità di apprendimento
Mantenersi aggiornati sugli sviluppi più recenti del ML per l’ingegneria del software
Esplorare in autonomia nuovi dataset e problemi di analisi
Adattare tecniche di ML esistenti a nuove sfide di analisi del software
Proseguire l’apprendimento di temi avanzati all’intersezione tra ML e ingegneria del software

Programma

Fondamenti e gestione dei dati
Introduzione al Machine Learning per l’analisi del software
Pandas per la manipolazione ed esplorazione dei dati
Apprendimento supervisionato
Classificazione e regressione con scikit-learn
Applicazioni
Fondamenti di Deep Learning
PyTorch
Reti neurali
RNN, GRU, LSTM
Applicazioni: code representation learning, program analysis
Deep Learning avanzato
Modelli Seq2Seq
Transformer
Applicazioni
NLP per il codice
Il codice come testo
Modelli pre-addestrati
Applicazioni
Applicazioni di ricerca e casi di studio
Presentazioni degli studenti e discussione dei progetti

Modalità d'esame

Gli studenti verranno valutati attraverso la discussione e presentazione di un progetto finale.
Durante la presentazione verrà valutato la qualità del codice prodotto, discusse le scelte tecnologiche e implementative con alcune domande teoriche.
Tabella docimologica di valutazione
Insufficiente
Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
18–22
Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
23–25
Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
26–28
Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
29–30 e Lode
Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

-Hands-on Machine Learning with Scikit-learn, Keras & TensorFlow

  • Programming PyTorch for Deep Learning
    https://github.com/fpinell/mlsa

Codice insegnamento B032432

OPERATIONS RESEARCH AND OPTIMIZATION 1° anno · 1° semestre · 6 CFU · MATH-06/A · 0 file

L’insegnamento vuole introdurre i problemi di programmazione matematica e fornire competenze sulle principali proprietà matematiche di questa classe di problemi. In particolare, vengono affrontati problemi di…

Scheda dell'insegnamento

Obiettivi formativi

L’insegnamento vuole introdurre i problemi di programmazione matematica e fornire competenze sulle principali proprietà matematiche di questa classe di problemi. In particolare, vengono affrontati problemi di programmazione lineare, problemi di flusso su rete e problemi di programmazione mista intera lineare, analizzando le loro particolari proprietà geometriche ed analitiche. Vengono quindi introdotti algoritmi e metodologie per la loro soluzione.
Con riferimento ai Descrittori di Dublino
1. CONOSCENZA E COMPRENSIONE (CC6)
1.1 Conoscenza della classificazione di diversi problemi di ottimizzazione.
1.2 Conoscenza e comprensione delle più importanti caratterizzazioni matematiche delle soluzioni di problemi di ottimizzazione.
2. CAPACITA’ DI APPLICARE CONOSCENZA E COMPRENSIONE (CA4, CA6)
2.1 Capacità di formulare in termini matematici alcune classi di problemi reali.
2.2 Capacità di risolvere semplici problemi di programmazione lineare.
3. AUTONOMIA DI GIUDIZIO (AG3)
3.1 Capacità di eseguire autonome scelte nel definire un modello di programmazione matematica a partire da un problema reale di decisione.
4. ABILITA’ COMUNICATIVE (AC1)
4.1 Capacità di descrivere i problemi di programmazione matematica introdotti nel corso.
4.2 Capacità di esporre logicamente dimostrazioni delle proprietà teoriche studiate.
CAPACITA’ DI APPRENDIMENTO (AP2,AP3)
5.1 Padronanza delle nozioni e delle metodologie di base, che consenta un eventuale ulteriore approfondimento di argomenti legati all'ottimizzazione.

Programma

1. Modelli di programmazione lineare: modelli di allocazione di risorse e modelli di miscelazione. Elementi di programmazione lineare.
2. Modelli di ottimizzazione su rete: problema di flusso a costo minimo; problema del percorso ottimo; problema del massimo flusso. Algoritmi di risoluzione.
3. Modelli di programmazione mista intera lineare. Elementi di teoria poliedrale. Algoritmi per la programmazione mista intera.

Modalità d'esame

Esame scritto attraverso il quale si verifica mediante quesiti a risposta multipla e domande teoriche:

  • la capacità di formulare modelli di ottimizzazione;
  • la capacità di descrivere e utilizzare gli algoritmi analizzati nel corso;
  • la capacità di adattare modelli e algoritmi di ottimizzazione per la soluzione di problemi complessi previa identificazione della loro struttura.
    Esempi di esami saranno scaricabili dalla pagina moodle dell’insegnamento
    Con riferimento ai Descrittori di Dublino:
    1. CONOSCENZA E COMPRENSIONE
    1.1 Conoscenza della classificazione di diversi problemi di ottimizzazione. Verifica mediante quiz a risposta multipla.
    1.2 Conoscenza e comprensione delle più importanti caratterizzazioni matematiche
    delle soluzioni di problemi di ottimizzazione. Verifica mediante quiz a risposta multipla.
    2. CAPACITA’ DI APPLICARE CONOSCENZA E COMPRENSIONE
    2.1 Capacità di formulare in termini matematici alcune classi di problemi reali. Verifica
    mediante esercizio di modellazione.
    2.2 Capacità di risolvere semplici problemi di programmazione lineare. Verifica
    mediante esercizio sul metodo del simplesso.
    3. AUTONOMIA DI GIUDIZIO
    3.1 Capacità di eseguire autonome scelte nel definire un modello di programmazione matematica a partire da un problema reale di decisione. Verifica mediante esercizio di modellazione.
    4. ABILITA’ COMUNICATIVE
    4.1 Capacità di descrivere i problemi di programmazione matematica introdotti nel corso. Verifica mediante esercizio teorico.
    4.2 Capacità di esporre logicamente dimostrazioni delle proprietà teoriche studiate. Verifica mediante esercizio teorico.
    CAPACITA’ DI APPRENDIMENTO
    5.1 Padronanza delle nozioni e delle metodologie di base, che consenta un eventuale ulteriore approfondimento di argomenti legati all'ottimizzazione. Verifica mediante esercizio teorico.
    Tabella docimologica di valutazione
    Insufficiente
    Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
    18–22
    Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
    23–25
    Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
    26–28
    Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
    29–30 e Lode
    Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
    La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Introduction to Linear Optimization (D. Bertsimas, J. N. Tsitsiklis) Athena Scientific Network Flows: Theory, Algorithms, and Applications (R.K. Ahuja, T.L. Magnanti, J.B. Orlin) Integer programming (M. Conforti, G. Cornuéjols, G. Zambelli) Springer International Publishing. Controlla la bibliografia su Onesearch. Per aiuto contatta la tua biblioteca.

Codice insegnamento B032439

OPTIMIZATION AND MACHINE LEARNING FOR DYNAMICAL SYSTEMS 1° anno · 2° semestre · 6 CFU · IINF-04/A · 0 file

Familiarize with state-space representation as a modelling formalism of linear differential/difference equations Analyze structural properties of linear time-invariant systems: stability, controllability and…

Scheda dell'insegnamento

Obiettivi formativi

  • Familiarize with state-space representation as a modelling formalism of linear differential/difference equations
  • Analyze structural properties of linear time-invariant systems: stability, controllability and observability
  • Design state observers: Luenberger
  • Design state-feedback controllers: pole placement, LQR, MPC
  • Familiarize with the most common machine learning methods for solving regression problems, e.g., neural networks and kernel methods
  • Familiarize with sample compression and dimensionality reduction techniques, such as K-means algorithms and principal component analysis
  • Apply machine learning-based approaches to solve standard problems in system/control theory: critical analysis of pros and cons

Programma

  • Preliminaries on calculus, linear algebra, ODEs
  • Introduction to dynamical systems and their representation
  • Linear time-invariant systems: solutions, computational aspects and structural properties
  • State-feedback controllers for linear systems
  • Linear observer (Luenberger) and dynamical feedback compensator
  • Optimization-based regulator: model predictive control
  • Design and training of neural networks for control approximation and system identification
  • Kernel-based methods for regression
  • Data-driven control and identification as an unsupervised learning problem

Modalità d'esame

The learning outcomes will be assessed through one of two alternative and mutually exclusive methods:

  • Development of a practical project followed by discussion;
  • Traditional oral examination.
    The students are warmly invited to stick on the following rules of conduct:
  • The mark proposed by the instructor is not negotiable, namely it can not be increased by taking an additional oral test or completing an extra assignment after the exam;
  • If a student fails the exam, or is not satisfied with the proposed mark, she can not retake exam before the next official date;
  • Asking the instructor to apply exceptions to the above rules is considered unethical. In particular, the students must avoid referring to their private situation.
    Tabella docimologica di valutazione
    Insufficiente
    Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
    18–22
    Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
    23–25
    Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
    26–28
    Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
    29–30 e Lode
    Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
    La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

  • Astrom, Murray, "Feedback Systems: An Introduction for Scientists and
    Engineers", Princeton U.P. 2008 (available online)
  • Lygeros, Ramponi, "Lecture Notes on Linear SystemTheory", ETH Zurich 2013 (available online)
  • Soderstrom, Stoica, "System Identification", Prentice Hall 1988
  • Bishop, "Pattern Recognition and Machine Learning", Springer Science 2006
  • Pham, Liu, "Neural Networks for Identification, Prediction and Control",
    Springer-Verlag 1995

Codice insegnamento B032441

PENETRATION TESTING 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Comprensione delle metodologie VAPT, con partiolare riferimento alla sicurezza del web

Scheda dell'insegnamento

Obiettivi formativi

Comprensione delle metodologie VAPT, con partiolare riferimento alla sicurezza del web

Programma

OSINT, network scanning, information gathering, vulnerability assessment, exploitation, post-exploitation, reporting

Modalità d'esame

Progetto finale e esame orale

Testi di riferimento

RTFM

Codice insegnamento B032431

QUANTITATIVE EVALUATION OF STOCHASTIC MODELS 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Questo corso si propone di: introdurre una serie di concetti di base e avanzati che consentono la creazione e l'analisi di modelli stocastici per la valutazione quantitativa dei sistemi in applicazioni di ingegneria…

Scheda dell'insegnamento

Obiettivi formativi

Questo corso si propone di:

  • introdurre una serie di concetti di base e avanzati
  • che consentono la creazione e l'analisi di modelli stocastici
  • per la valutazione quantitativa dei sistemi
  • in applicazioni di ingegneria delle prestazioni e dell'affidabilità

Programma

  • variabili casuali; modellazione di sistemi temporizzati con reti di Petri stocastiche; processi stocastici, catene di Markov e processi Markov rigenerativi; tool/libreria Oris/Sirio
  • analisi di workflows di attività con durate stocastiche, con riferimento a scaling orizzontale e verticale delle risorse nell'orchestrazione di Kubernetes
  • approssimazione e simulazione di distribuzioni campionarie
  • matching theory per placement e offloading dei servizi in distribuited edge-to-cloud computing
  • integrazione di metodi di analisi basate su modelli con tecniche di deep learning

Modalità d'esame

L'esame si conclude al meglio con la discussione di un'esperienza pratica, incentrata su una parte selezionata del programma. Questa può essere implementata, opportunamente ma non necessariamente, estendendo il corso con il relativo progetto.
Tabella docimologica di valutazione
Insufficiente
Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
18–22
Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
23–25
Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
26–28
Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
29–30 e Lode
Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Gli argomenti sviluppati e i relativi riferimenti puntuali vengono documentati in diapositive consegnate agli studenti.

Codice insegnamento B032434

SOFTWARE ARCHITECTURES AND METHODOLOGIES 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Questo corso si propone di fornire competenze concettuali e pratiche per lo sviluppo e l'ingegneria di architetture software avanzate, combinando metodi di ingegneria del software, elementi di architettura software e…

Scheda dell'insegnamento

Obiettivi formativi

Questo corso si propone di fornire competenze concettuali e pratiche per lo sviluppo e l'ingegneria di architetture software avanzate, combinando metodi di ingegneria del software, elementi di architettura software e tecnologie per la loro implementazione pratica.

Programma

  • Architettura di un'applicazione web, pattern architetturali
  • Back-end stateful con JEE/Jakarta, JPA e CDI.
  • Back-end restful con JaxRS; applicazioni front-end con Angular.
  • Architettura dei microservizi; patterns di microservizi; container e orchestrazione dei servizi con Kubernetes
  • Tecnologie per l'ingegneria delle prestazioni e dell'affidabilità, Graphana, OpenTelemetry, Jaeger, K6
  • Concetti e tecnologie per sistemi multi-agente basati su LLM e flussi di lavoro di intelligenza artificiale;
  • Metodi di ingegneria del software empirica, architettura del software

Modalità d'esame

L'esame si conclude al meglio con la discussione di un'esperienza pratica, incentrata su una parte selezionata del programma. Questa può essere implementata, opportunamente ma non necessariamente, estendendo il corso con il relativo progetto.
Tabella docimologica di valutazione
Insufficiente
Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
18–22
Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
23–25
Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
26–28
Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
29–30 e Lode
Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Gli argomenti sviluppati e i relativi riferimenti puntuali vengono documentati in diapositive consegnate agli studenti.

Codice insegnamento B032428

SOFTWARE DEPENDABILITY 1° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Il corso si propone di illustrare una serie di tecniche che consentono di ovviare per quanto possibile al problema dell'introduzione di errori di progetto nella produzione del software; quindi, principalmente, tecniche…

Scheda dell'insegnamento

Obiettivi formativi

Il corso si propone di illustrare una serie di tecniche che consentono di ovviare per quanto possibile al problema dell'introduzione di errori di progetto nella produzione del software; quindi, principalmente, tecniche di verifica formale e di sviluppo formale del software, ma anche tecniche di previsione dei guasti e di tolleranza ai guasti software. Il corso mira in particolare a fornire:
Conoscenza della disciplina della software reliability
Conoscenza dei principali metodi formali
Conoscenza dei principi del model-based design
Conoscenza della teoria e delle tecniche della verifica formale di sistemi software

Programma

Richiami di dependability
Software Reliability
Metodi formali
Logica temporale e verifica formale, Model Checking
Interpretazione astratta e Analisi statica
Applicazioni delle tecniche di Verifica Formale

Modalità d'esame

La verifica finale consta di una prova orale
L’orale è mirato a valutare le conoscenze personali acquisite:
Conoscenza della disciplina della software reliability
Conoscenza della teoria della modellazione formale
Conoscenza dei principi e degli strumenti di verifica formale di sistemi software

Testi di riferimento

A. Fantechi - Informatica Industriale - Città Studi Edizioni
Dispense prodotte dal docente, disponibili su Moodle

Codice insegnamento B032433

SOFTWARE PERFORMANCE ENGINEERING 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file
SOFTWARE PROJECT MANAGEMENT 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

KNOWLEDGE AND UNDERSTANDING At the end of the course, the student should acquire knowledge and understanding of: the traditional methodologies of software project management; the basic notions for the management of…

Scheda dell'insegnamento

Obiettivi formativi

KNOWLEDGE AND UNDERSTANDING
At the end of the course, the student should acquire knowledge and understanding of: the traditional methodologies of software project management; the basic notions for the management of software and process quality.
APPLYING KNOWLEDGE AND UNDERSTANDING
At the end of the course, the student should be able to manage a software project working in a team, by applying the methodologies, techniques and tools introduced in the course.
MAKING JUDGEMENTS
At the end of the course, the student should be able to: evaluate, for a given software project, pros and cons of the methodologies, techniques and tools introduced in the course; estimate the effort, costs and time for developing a software and identify the most adequate counter-measures to reduce them; determine the project risks.
COMMUNICATION SKILLS
At the end of the course, the student should be able to: work in a team by communicating with developers and stakeholders (impersonated by the teacher during the course), by also resorting to standard modelling notations; present software project management concepts; report the progresses and results of a project to others in a clear and competent way.
LEARNING SKILLS
At the end of the course, the student should be able to autonomously learn software project management methodologies and tools not illustrated in the course in order to face the specific challenges of a new project.

Programma

The course aims at providing a general knowledge about the methodologies and tools for the management of software projects and IT developments. The course reviews the basic concepts about project management, and covers the lifecycle phases of the traditional software project management methodologies.

Modalità d'esame

Learning outcomes are assessed using two different tests:
1. Written test, consisting of multiple-choice, short-answer questions and exercises that may cover all the topics presented during the course.
2. Practical test, consisting of a group project whose topic must be agreed upon by the teacher and the students, which will be presented to the other students and orally discussed with the teacher.
The evaluation of each test is expressed with a mark out of thirty, with possible laude. The exam is considered to be successfully passed if the mark assigned to each of the two tests is at least eighteen. The final mark will be determined by the average of the two marks.
Each learning outcome is assessed in at least one of the two tests composing the exam.
The written test aims to evaluate: the student's acquisition of the knowledge and understanding of the topics covered during the lessons; the capability of reasoning on specific issues related to software project management; the appropriate understanding and use of specialized vocabulary. The mark of the written test is determined by the number of correct answers to multiple-choice questions and the accuracy of the short answers and exercise solutions.
The practical test aims to evaluate: the student's ability to use in practice software project management techniques and tools; the capability to estimate effort, costs and time for developing a software; the capability to autonomously learn new techniques and tools; the student's communication skills, in terms of teamwork skills, clarity of the presentation and ability to write a professional report. The mark of the practical test is determined by the complexity of the project, the quality of the oral presentation, the quality of the reports and the accuracy in the answers to the questions posed by the teacher during the discussion of the project.
Additional exam rules:

  • The mark assigned by the teacher is not "negotiable", meaning that the mark cannot
    be increased by taking an additional oral test or completing an extra assignment.
  • If a student fails the exam, he/she cannot retake it before the next exam date.
  • The students are strongly invited not to ask the teacher to apply exceptions to the
    above rules; in particular, they must avoid referring to their private situation.
    Tabella docimologica di valutazione
    Insufficiente
    Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
    18–22
    Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
    23–25
    Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
    26–28
    Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
    29–30 e Lode
    Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
    La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Textbooks:

  • Introduction to Software Project Management, by Adolfo Villafiorita, CRC Press, 2015
    Additional teaching material: slides presented during the course and related papers. The course partially uses online materials and resources.

Codice insegnamento B032435

STATISTICAL METHODS FOR COMPUTER SCIENCE 1° anno · 2° semestre · 6 CFU · STAT-01/A · 0 file

Il corso introduce i principali concetti dell'inferenza statistica, della regressione lineare e dell'analisi statistica dei dati mediante il software R, con particolare attenzione al loro uso in contesti computazionali e…

Scheda dell'insegnamento

Obiettivi formativi

Il corso introduce i principali concetti dell'inferenza statistica, della regressione lineare e dell'analisi statistica dei dati mediante il software R, con particolare attenzione al loro uso in contesti computazionali e applicativi.
Al termine del corso, lo studente avrà sviluppato le seguenti competenze, in coerenza con i Descrittori di Dublino e con la terza matrice di tuning del CdS in Software: Science and Technology.
Conoscenza e comprensione: lo studente sarà in grado di comprendere il concetto di modello statistico, gli strumenti di stima puntuale, stima intervallare e verifica di ipotesi, i fondamenti della regressione lineare e il ruolo dei metodi statistici nella quantificazione dell'incertezza e nell'analisi dei dati [cc6].
Capacità di applicare conoscenza e comprensione: lo studente sarà in grado di applicare metodi inferenziali, modelli di regressione e strumenti computazionali in R per analizzare dati, risolvere problemi statistici, interpretare output software e valutare quantitativamente modelli e risultati in contesti rilevanti per l'informatica e i sistemi software [ca4, ca6].
Autonomia di giudizio: lo studente sarà in grado di valutare criticamente assunzioni, potenzialità e limiti dei modelli e dei metodi statistici presentati, con particolare riferimento alla qualità dell'analisi, alla diagnostica dei modelli e all'interpretazione responsabile dei risultati [ag3].
Abilità comunicative: lo studente sarà in grado di descrivere in lingua inglese procedure statistiche, risultati di analisi quantitative, problemi e soluzioni, utilizzando un linguaggio appropriato e coerente con il contesto dell'analisi di sistemi software complessi [ac1].
Capacità di apprendimento: lo studente sarà in grado di utilizzare le conoscenze acquisite per proseguire autonomamente lo studio di metodi statistici e computazionali avanzati, adattandoli a nuovi problemi applicativi e a nuovi contesti di lavoro [ap2, ap3].

Programma

Introduzione all'ambiente di calcolo R. Analisi statistica con R. Elementi di statistica descrittiva. Elementi di probabilità, variabili aleatorie e Teorema Limite Centrale. Stima puntuale e intervallare, verifica di ipotesi. Regressione lineare.

Modalità d'esame

Prova scritta su carta. La prova scritta si compone di esercizi e quesiti sui metodi inferenziali, sui modelli di regressione e sull'uso di R introdotti durante il corso. In particolare, la prova può includere esercizi e domande su inferenza statistica, regressione lineare, interpretazione di output R e analisi statistica dei dati [cc6, ca4, ca6].
La valutazione della prova è espressa con un voto in trentesimi, con eventuale lode. La prova si considera superata con esito positivo se il voto assegnato è almeno 18/30.
Durante la prova scritta è consentito l'uso di una calcolatrice non programmabile. Tavole statistiche e formule eventualmente necessarie sono fornite dal docente.
Gli esercizi e i quesiti sono finalizzati a valutare la comprensione dei metodi statistici, la capacità di applicarli a problemi di analisi dati e regressione, la capacità di interpretare risultati e output software, e la capacità di descrivere procedure e conclusioni in modo chiaro e appropriato [ag3, ac1].
Il docente potrà eventualmente prevedere, in base all'organizzazione didattica dell'anno, prove in itinere sostitutive della prova scritta finale. Eventuali modalità, calendario e condizioni di validità saranno comunicati all'inizio del corso tramite Moodle. In assenza di prove in itinere, la valutazione è interamente basata sulla prova scritta finale.
Tabella docimologica di valutazione:
INSUFFICIENTE
Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
18-22
Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
23-25
Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
26-28
Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
29-30 E LODE
Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell'esposizione e nell'applicazione.
La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Il materiale principale per la preparazione dell'esame è costituito dalle slide, dagli script R, dalle esercitazioni, dagli esercizi e dagli ulteriori materiali didattici resi disponibili sulla piattaforma Moodle dell'insegnamento.
Come testo di supporto e approfondimento si consiglia: A. Agresti (2021). Foundations of Statistics for Data Scientists: With R and Python.

Codice insegnamento B032437

TRUSTWORTHY AUTONOMOUS SYSTEMS 1° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Al termine del corso, lo studente sarà in grado di: comprendere i principi fondamentali della trustworthy autonomy e della Responsible AI, inclusi aspetti etici, legali, di privacy, fairness e impatto sociale;…

Scheda dell'insegnamento

Obiettivi formativi

Al termine del corso, lo studente sarà in grado di:

  • comprendere i principi fondamentali della trustworthy autonomy e della Responsible AI, inclusi aspetti etici, legali, di privacy, fairness e impatto sociale;
  • conoscere e applicare concetti di dependability, reliability, fault tolerance, verification, validation e testing nei sistemi autonomi;
  • comprendere tecniche di sensor fusion, reasoning under uncertainty, explainability, self-adaptation e digital twins per sistemi autonomi sicuri e affidabili;
  • analizzare criticamente architetture e casi di studio di trustworthy autonomous systems in diversi domini applicativi.

Programma

Autonomia affidabile e IA responsabile: etica, privacy, aspetti giuridici, bias ed equità, impatti sociali e organizzativi. IA robusta, legale ed etica. Dependable computing, affidabilità, tolleranza ai guasti, verifica, validazione e testing del software. Ridondanza, diversità e fusione multisensore. Trasparenza, spiegabilità e interpretabilità, con Reti Bayesiane per il ragionamento nell’incertezza. Auto-adattamento e gemelli digitali per la percezione sicura. Seminari e casi di studio su ferrovie autonome, auto a guida autonoma, carrozzine robotiche e altri sistemi autonomi affidabili.

Modalità d'esame

Test scritto individuale a libro chiuso.
Sviluppo e presentazione di progetti individuali o di gruppo.

Testi di riferimento

Lucidi e altro materiale messi a disposizione sul sito web del corso.
"Trustworthy Artificial Intelligence for Human-Centered Autonomous Systems" (F. Flammini, T. Zoppi), IEEE-Wiley Series on Human-Machine Systems. Link: https://amzn.to/4y8zUif
"Resilience of Cyber-Physical Systems: From Risk Modelling to Threat Counteraction" (F. Flammini), Springer-Nature New York Inc. Link:
https://amzn.to/4y4yYeJ

Codice insegnamento B035767

ATTIVITA' DI APPROFONDIMENTO (BOOTCAMP) 2° anno · 3 CFU · 0 file
COMPUTER AND NETWORK SECURITY 2° anno · 12 CFU · INFO-01/A · 0 file

By the end of the course, students will know and understand the theory and practice of computer security, including risk assessment, security management, technological foundations, human factors, and legal and ethical…

Scheda dell'insegnamento

Obiettivi formativi

By the end of the course, students will know and understand the theory and practice of computer security, including risk assessment, security management, technological foundations, human factors, and legal and ethical issues. They will be able to identify security problems in computer systems and cyberinfrastructures, propose appropriate countermeasures, assess the severity of threats, and critically evaluate solutions. Students will also be able to communicate security concepts, problems, and solutions clearly to both technical and non-technical audiences and independently integrate knowledge to stay up to date with developments in the field.

Il corso ha lo scopo di fornire allo studente gli strumenti per la valutazione della sicurezza di una rete di telecomunicazioni.
Vengono inoltre fornite le conoscenze per la gestione della rete e per il supporto avanzato alla difesa di una rete.
Gli obbiettivi possono essere così riassunti:

  • Conoscenza dei principi di base della sicurezza.
  • Valutazione dei requirements di sicurezza di un sistema.
  • Saper effettuare l’analisi del rapporto costi/benefici della sicurezza.
  • Conoscenza dei principiali schemi di cifratura, ambiti di applicazione, pro e contro.
  • Saper effettuare il design di un sistema di sicurezza.
  • Saper effettuare il l’analisi delle vulnerabilità di un sistema.
  • Conoscenza dei metodi di mitigazione di un attacco.
  • Conoscenza dei sistemi di firewalling e IDS.
  • Conoscenza e valutazione dei principali attacchi, con particolare riferimento alle reti wireless.
  • Conoscenza dell’uso dei principali strumenti di offensive security.

Programma

This module aims to provide an up-to-date survey of developments and practice in computer security. It covers the central problems that confront security designers and security administrators: defining the threats to computer systems, evaluating the relative risks of those threats, and developing cost-effective, user-friendly countermeasures and security policies.

Il corso è formato da due parti.
Nel primo si affrontano le tematiche di base della sicurezza di una rete, anche in relazione alla topologia fisica o virtuale.
Nel secondo modulo si trattano gli elementi avanzati di sicurezza, esempi di attacchi e di sistemi di analisi e difesa.

Modalità d'esame

The learning outcomes are assessed through an oral exam comprising questions that may cover all topics presented during the module. The evaluation is expressed as a mark out of 30, with the possibility of laude. The exam is successfully passed if the assigned mark is at least eighteen. The mark is determined by the clarity of the exposition, the appropriate use of specialized vocabulary, and the ability to relate different issues to each other. The exam for this module of the 'Computer and Network Security' course and that for the other module, 'Network Security', may be taken in any order, provided that both are taken in the same academic year, under penalty of cancellation of the only module passed successfully. Provided that both modules are passed successfully, the mark for the 'Computer and Network Security' course will be determined by the arithmetic mean of the two marks.
Exams must be taken in person (remote exams are not permitted).
Erasmus students take exams in the same way as UNIFI students (https://www.unifi.it/it/studia-con-noi/accesso-e-iscrizioni/studenti-erasmus-entrata).
Working students are invited to contact the teacher for advice on exam preparation.
Exam-taking rules
The grade assigned by the teacher is not "negotiable"; therefore, it cannot be increased by taking an additional oral test or completing an additional activity.
If the student fails the exam, they will not be able to retake it before the next session.
Requests for exemptions are considered inadmissible regardless of the justification. Students are invited not to ask the teacher for exceptions to the above rules; in particular, we ask you to avoid justifying such requests by referring to personal situations and to avoid sharing personal data.
Tabella docimologica di valutazione
Insufficiente
Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
18–22
Valutazione sufficiente o più che sufficiente, dovuta a una conoscenza elementare degli argomenti, alla presenza di alcuni errori, alla capacità di affrontare solo compiti semplici o guidati e a un livello base di autonomia.
23–25
Valutazione discreta dovuta a una comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
26–28
Valutazione buona o molto buona, dovuta a una solida comprensione teorica della disciplina, alla capacità di collegare concetti, di risolvere problemi e di proporre analisi critiche, e di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
29–30 e Lode
Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

La verifica finale consta di una prova orale che verificherà le capacità di:

  • Saper analizzare la sicurezza di un sistema.
  • Saper confrontare i metodi di cifratura e loro applicazione.
  • Padroneggiare i metodi di firewalling e IDS.
  • Saper valutare la presenza di vulnerabilità in un sistema.
  • Saper mitigare un attacco in corso o potenziale.
    Note:
  • Il voto assegnato dal docente è non "negoziabile", nel senso che non può essere incrementato con un assignment extra o con un altro orale.
  • Se uno studente non passa l'esame, non può rifare l'esame prima della successiva data d'esame.
  • Si sconsiglia caldamente di non chiedere di fare eccezioni alle regole precedenti, in particolare adducendo motivi personali.
    Tabella docimologica di valutazione
    Insufficiente
    Valutazione negativa dovuta a gravi errori concettuali, comprensione frammentaria o nulla degli argomenti trattati, incapacità di applicare le conoscenze, gravi lacune e mancanza di autonomia.
    18–22
    Valutazione sufficiente o più che sufficiente dovuta a conoscenza elementare degli argomenti, presenza di alcuni errori, capacità di affrontare solo compiti semplici o guidati, livello base di autonomia.
    23–25
    Valutazione discreta dovuta a comprensione soddisfacente degli argomenti, capacità di applicare correttamente le conoscenze a contesti noti e di affrontare gli esercizi in modo autonomo con qualche imprecisione, con un soddisfacente livello di autonomia e competenza operativa.
    26–28
    Valutazione buona o molto buona, dovuta a solida comprensione teorica della disciplina, capacità di collegare concetti, risolvere problemi e proporre analisi critiche, di svolgere compiti complessi in modo autonomo, preciso ed efficace, con un buon livello di autonomia e competenza operativa.
    29–30 e Lode
    Valutazione eccellente o ottima, dovuta a conoscenze complete, approfondite e ben strutturate, capacità di operare in modo autonomo e flessibile, anche in contesti complessi o nuovi, di utilizzare il linguaggio disciplinare in modo appropriato, preciso e articolato, di evidenziare capacità critiche, originalità e rigore nell’esposizione e nell’applicazione.
    La Lode è attribuita a elaborati o prestazioni che si distinguono per brillantezza e originalità, anche al di là delle aspettative curricolari.

Testi di riferimento

Required Textbook: Computer Security: Principles and Practice (5th ed.) - William Stallings, Lawrie Brown - Pearson (2024). Additional teaching material (made available by the teacher): - slides presented during the course; - published research papers and technical reports on specific relevant topics. Check the books listed in the exam bibliographies on Onesearch (https://onesearch.unifi.it/). For help, contact your Library (https://unifi.libanswers.com/).

Slides di lezione.
IETF RFCs.
Articoli scientifici.
Tutti i materiali (in Inglese) sono caricati sul sito del corso (https://e-l.unifi.it).

Codice insegnamento B032565

EMBEDDED SYSTEMS 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

L’obiettivo è fornire agli studenti conoscenze scientifiche e tecniche, nonché esperienza pratica, nella definizione, implementazione e utilizzo di sistemi embedded reali impiegati nella robotica e nell’Edge AI. Al…

Scheda dell'insegnamento

Obiettivi formativi

L’obiettivo è fornire agli studenti conoscenze scientifiche e tecniche, nonché esperienza pratica, nella definizione, implementazione e utilizzo di sistemi embedded reali impiegati nella robotica e nell’Edge AI.
Al termine del corso, gli studenti avranno acquisito esperienza teorica e pratica nella progettazione, nello sviluppo, nel deployment e nella sperimentazione di sistemi embedded, affrontando problematiche relative alla robotica, ai sistemi di controllo e alla visione artificiale. Ciò includerà l’utilizzo di sensori, attuatori e componenti hardware; l’implementazione di moduli di controllo e percezione in tempo reale; il deployment di modelli di machine learning su sistemi embedded.
Una parte significativa del corso è dedicata alle attività pratiche e laboratoristiche, nelle quali le basi teoriche illustrate durante le lezioni sono applicate alla programmazione e all'operazione di sistemi embedded reali.

Programma

Fondamenti dei sistemi embedded cyber-fisici: interazione tra la dimensione fisica e quella digitale.
Il ciclo di vita di un sistema embedded cyber-fisico: dalla definizione dei requisiti all’implementazione e all’esercizio operativo.
Alcune applicazioni rilevanti: intelligenza artificiale e machine learning, principi di guida autonoma.
Casi di studio: costruzione e utilizzo di Duckiebot.

Modalità d'esame

Durante una delle prime lezioni sarà proposto un macro-progetto. A partire da questo, nell’ambito di un processo di ingegneria dei requisiti, durante il corso verranno definiti progetti di dimensioni minori e assegnati individualmente o a gruppi di massimo di 3 studenti.
La specifica di ciascun progetto sarà diversa da tutte le altre. Il progetto potrà concentrarsi su aspetti teorici, metodologici o pratici e la sua realizzazione potrà consistere nella progettazione e sviluppo software, nell’integrazione hardware-software, nella redazione di una relazione oppure nello studio e nella presentazione di un argomento (o in una combinazione di tali elementi).
Per superare l’esame, il progetto deve essere completato con successo e deve essere presentato e discusso con il docente durante un colloquio. Il colloquio è individuale e il voto (da 18 a 30 e lode) viene assegnato, in caso di esito sufficiente, individualmente e sulla base del colloquio stesso, considerando la conoscenza del progetto, la padronanza delle tecnologie necessarie alla sua realizzazione e la conoscenza teorica richiesta dal progetto.
Consegna del progetto. I progetti e i relativi elaborati devono essere consegnati includendo il link a un repository git (GitLab, GitHub, Bitbucket, ecc.) al momento dell’iscrizione all’esame tramite il portale studenti. Il collegamento a un repository git o ad altro repository accessibile deve essere inserito nei commenti durante l’iscrizione.
Gli studenti ai quali non sia stato assegnato un progetto, o che rifiuteranno l'assegnazione del progetto, potranno affrontare l'esame sostenendo un colloquio sugli argomenti trattati durante il corso, con domande che potranno includere attività pratiche e utilizzo operativo degli strumenti e delle tecnologie studiate nel corso delle lezioni.

Testi di riferimento

Le slide del corso sono disponibili sul sito web. Ogni blocco di slide indica il materiale didattico di riferimento, generalmente costituito da capitoli di libri o risorse online. Tutte le risorse indicate sono open access, oppure accessibili tramite la rete universitaria, oppure disponibili presso le strutture dell'Ateneo.
Libri principali:

  • Edward Ashford Lee and Sanjit Arunkumar Seshia, Introduction to Embedded Systems — A Cyber-Physical Systems Approach, Second Edition.
  • Marwedel, Peter. Embedded system design: embedded systems foundations of cyber-physical systems, and the internet of things. Springer Nature, 2021.
  • Andrzej Wąsowski, Thorsten Berger, Domain-Specific Languages - Effective Modeling, Automation, and Reuse, Springer, 2023

Codice insegnamento B035768

PROVA FINALE 2° anno · 3 CFU · 0 file
PROVA FINALE: SVILUPPO LAVORO DI TESI 2° anno · 24 CFU · 0 file

Recensioni del corso

Studi qui? Accedi per lasciare la tua recensione e aiutare altri studenti a scegliere.

★

Nessuna recensione per ora — e la prima è la più preziosa. Condividi la tua esperienza e orienta le future matricole.