Corso di laurea

Engineering in Computer Science and Artificial Intelligence - Ingegneria Informatica e Intelligenza Artificiale

Università degli Studi di Roma - La Sapienza · 46 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

A SCELTA DELLO STUDENTE 1° anno · 2° semestre · 6 CFU · 0 file

Fra le altre attività formative sono previsti 12 CFU sono a scelta dello studente.

Scheda dell'insegnamento

Obiettivi formativi

Fra le altre attività formative sono previsti 12 CFU sono a scelta dello studente.

Codice insegnamento AID-d4f5f2cc-ddb

ADVANCED CRYPTOGRAPHY 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi Generali Gli strumenti tradizionali di crittografia sono insufficienti per la protezione dei dati negli scenari attuali. Gli obiettivi di questo corso consistono nel presentare vari recenti strumenti e tecniche…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali Gli strumenti tradizionali di crittografia sono insufficienti per la protezione dei dati negli scenari attuali. Gli obiettivi di questo corso consistono nel presentare vari recenti strumenti e tecniche di crittografia avanzata insieme con le loro applicazioni per ottenere sicurezza e privacy già al momento della progettazione, aderendo al principio della sicurezza e privacy by design nel Cyberspace. Il corso fornisce contenuti sia teorici che pratici.
Obiettivi Specifici Il corso utilizzerà la potenza degli schemi di firma avanzati delle nozioni avanzate di cifratura, delle verifiable random functions, di sistemi di prova interattivi e privacy-preserving, dei puzzle crittografici. Particolare attenzione sarà data alle applicazioni reali quali il voto elettronico, le aste, il contact tracing che preserva la privacy, i pagamenti elettronici, le crittovalute, i portafogli per la gestione delle identità, la cifratura end-to-end negli scambi di messaggi, la disinformazione, la minimizzazione ed il diritto all'oblio del GDPR, le librerie e gli strumenti pratici di crittografia avanzata.
Conoscenza e comprensione: -) Conoscenza delle proprietà di sicurezza degli strumenti avanzati di crittografia. -) Conoscenza delle principali assunzioni di complessità utilizzate dagli strumenti avanzati di crittografia. -) Conoscenza dei protocolli e degli schemi crittografici usati quotidianamente. -) Comprensione delle proprietà teoriche e delle prestazioni concrete degli strumenti avanzati di crittografia.
Applicazione della conoscenza e della comprensione: -) Come selezionare e combinare insieme gli strumenti avanzati di crittografia corretti per una certa applicazione. -) Come analizzare la sicurezza ed efficienza di un sistema che fa uso di strumenti avanzati di crittografia.
Autonomia di giudizio: Gli studenti saranno in grado di valutare e giudicare l'effettiva sicurezza di un sistema di elaborazione delle informazioni secondo un realistico modello di minaccia.
Abilità comunicative: Gli studenti impareranno ad argomentare ed illustrare la resilienza di un sistema di elaborazione delle informazioni ad attacchi concreti.
Capacità di apprendimento: Gli studenti otterranno le nozioni necessarie ad un più approfondito studio dei temi del corso.

Programma

Introduction on Modern Cryptography, Zero-Knowledge Proofs and Multi-Party Computation

Advanced Cryptography for Blockchains

Advanced Signatures

Post-Quantum Cryptography

Cryptographic Protocols

Cryptographic Hardware

Privacy and Surveillance

Library and Tools for Advanced Cryptography

  • Introduzione a Crittografia Moderna, ZK proofs e secure multi-party computation (16h)
  • Advanced Cryptography for Blockchains (6h)
  • Advanced Signatures (8h)
  • Post-Quantum Cryptography (8h)
  • Cryptographic Protocols (10h)
  • Cryptographic Hardware (3h)
  • Privacy and Surveillance (7h)

Modalità d'esame

L'esame consiste in colloquio orale con domande specifiche che coprono la gran parte del programma del corso. La valutazione finale terrà conto della qualità delle risposte singolarmente, e della visione d'insieme che si evince dalle stesse. Il voto massimo richiede un'ottima comprensione di tutti gli argomenti del corso, mentre il voto di ammissione minimo, richiede una conoscenza mediamente sufficiente degli argomenti del corso.

Testi di riferimento

Boaz Barak: An Intensive Introduction to Cryptography (online)

Dan Boneh and Victor Shoup: A Graduate Course in Applied Cryptography (online)

Introduction to Modern Cryptography | Revised Third Edition, by Jonathan Katz and Yehuda Lindell, Chapman and Hall/CRC

Slides e altre risorse messe a disposizione dal docente agli studenti tempestivamente.

Codice insegnamento 10616549

ALGORITHM DESIGN 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

L'obiettivo del corso è quello di introdurre i concetti fondamentali della progettazione di algoritmi per problemi polinomiali e problemi computazionali difficili. Il corso presenterà i concetti di base di…

Scheda dell'insegnamento

Obiettivi formativi

L'obiettivo del corso è quello di introdurre i concetti fondamentali della progettazione di algoritmi per problemi polinomiali e problemi computazionali difficili. Il corso presenterà i concetti di base di progettazione di algoritmi per problemi di flusso nelle reti e problemi di matching. Tecniche generali come greedy e programmazione e dinamica saranno applicate a problemi di cammino minimo, spanning tree, knapsack. Algoritmi di approssimazione saranno presentati per problemi computazionali difficili come TSP, vertex cover set cover, sat, scheduling. Particolare enfasi sarà data ai metodi basati sulla programmazione lineare e gli algoritmi randomizzati. Infine , il corso introdurrà i principali problemi computazionali in teoria dei giochi.

Programma

1 Lecture Overview of Algorithm Analysis Kleinberg and Tardos, Ch. 2.1 - 2.4

2 Lecture Stable Matching Kleinberg and Tardos, Ch. 1.1, 1.2

3 Lecture Network Flow: Ford and Fulkerson, Capacity Scaling, Shortest Augmenting Paths Kleinberg and Tardos, Ch. 7.1, 7.2, 7.3

4 Lecture Perfect Matching, Circulations, Improved algorithm for bipartite matching (Ascending Price Matching, Hopcroft-Karp) Kleinberg and Tardos, Ch. 1.1, 7.5, 7.7

5 Lecture Greedy Algorithms

6 Lecture Dynamic Programming Kleinberg and Tardos, Ch. 4.1, 4.4, 6.1, 6.2, 6.4, 6.4, 6.8 slides

7 Lecture Basics of complexity and NP-completeness

8 Lecture 8 Basics of approximation algorithms Reference [4], Chapters 1 and 3 slides

9 Lecture Basics of approximation algorithms Reference [4], Chapters 2.1, 8.1, 8.2 slides

10 Lecture Linear Programming based approximation algorithms Reference [4], Chapters 12

11 Lecture Basics of Randomized Algorithms Reference [5], Chapter 5

12 Lecture Introduction to Game Theory and Equilibria Computation Lecture Notes

13 Lecture Computing Equilibria in Zero-Sum Games and Efficiency of Equilibria Lecture Notes

14 Lecture Selfish Routing and Price of Anarchy See Lecture Notes of Lecture 14 and Exercises, Section 2

Modalità d'esame

There are two possibilities for passing the exam:

1) The first and most advised one is to submit the two Homeworks before deadline. The homeworks will be discussed during the exam.

2) The second one is to answer two questions on the topics of the first homework (Fundamental design methods and Poly-time algorithms) and three questions on the topics of the second homework (Approximation of hard problems and Computational game theory) during in the written exam.

The student that either fails or does not submit the only first/second homework will answer only two/three questions in the written exam.

Testi di riferimento

[1] J. Kleinberg and E. Tardos, Algorithm Design. Addison Wesley, Pearson Education, 2005.

Additional material on the book can be found here: http://www.cs.princeton.edu/~wayne/kleinberg-tardos/

Codice insegnamento 1044417

ARTIFICIAL INTELLIGENCE 1° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali. Il corso introduce ai fondamenti dell’Intelligenza Artificiale, ponendo particolare enfasi sul ragionamento automatico e sul sequential decision-making. Gli studenti acquisiranno familiarità con i…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali.
Il corso introduce ai fondamenti dell’Intelligenza Artificiale, ponendo particolare enfasi sul ragionamento automatico e sul sequential decision-making. Gli studenti acquisiranno familiarità con i principali formalismi e approcci per la rappresentazione della conoscenza e il ragionamento, sia in contesti statici che dinamici. Apprenderanno inoltre le basi dei metodi di decisione per domini deterministici, non deterministici, avversari e stocastici.
Obiettivi specifici.
Conoscenza e capacità di comprensione: Gli studenti acquisiranno le basi della Rappresentazione della Conoscenza per sistemi statici e dinamici tramite approcci formali: logica proposizionale e del primo ordine, situation calculus, MDP. Verranno studiati i principali problemi logici (valutazione, soddisfacibilità, validità, implicazione logica) e le tecniche base per la loro risoluzione (DPLL, metodo dei tableaux). L’obiettivo è comprendere l’importanza del modello formale e degli approcci indipendenti dal dominio come strumenti fondamentali per risolvere automaticamente i problemi. Gli studenti apprenderanno come modellare un dominio di pianificazione tramite il linguaggio PDDL e come risolvere problemi di pianificazione in scenari deterministici, non deterministici, avversari e stocastici. Saranno introdotte le principali tecniche di ricerca nello spazio degli stati: ricerca non informata, ricerca euristica, best-first search, ricerca A*, AND-OR search. Per gli scenari stocastici verranno apprese Policy Evaluation e Policy Iteration.
Capacità di applicare conoscenza e comprensione: Gli studenti impareranno ad astrarre e modellare formalmente scenari del mondo reale rappresentandoli come domini statici o dinamici, così come a identificare e formalizzare problemi reali. Saranno inoltre in grado di applicare le tecniche acquisite durante il corso per risolvere i problemi modellati. Comprendendo come modellare e risolvere problemi, gli studenti acquisiranno la capacità di progettare e implementare semplici sistemi di ragionamento per una varietà di scenari e problemi reali.
Autonomia di giudizio: Gli studenti saranno in grado di valutare l’adeguatezza e la qualità di un formalismo di rappresentazione rispetto a diverse classi di problemi e di selezionare la tecnica di soluzione più adeguata.
Abilità comunicative: Il corso fornirà agli studenti le nozioni e il vocabolario di base per interagire efficacemente con i propri pari e con esperti del settore. Le abilità comunicative orali saranno stimolate attraverso l’interazione durante le lezioni, mentre quelle scritte saranno sviluppate tramite l’analisi di esercizi e la risposta a domande aperte nella prova finale.
Capacità di apprendimento: Il corso fornirà agli studenti gli strumenti essenziali per accedere alla letteratura specialistica. In questo modo, potranno rafforzare e ampliare in autonomia le proprie competenze. Oltre a tali capacità di apprendimento, gli studenti acquisiranno competenze avanzate di modellazione e di problem solving in generale.

Programma

Introduzione.

Rappresentazione della Conoscenza: modellazione del dominio di interesse; autonomia; il ruolo della logica.

Logica Proposizionale: sintassi e semantica; valutazione, soddisfacibilità, validità, implicazione logica; tableaux proposizionali; DPLL.

Logica del Primo Ordine: sintassi, semantica; valutazione, soddisfacibilità, validità, implicazione logica; tableaux per la logica del primo ordine.

Pianificazione Classica: domini deterministici; STRIPS, ADL, PDDL, transition system, ricerca in avanti, euristiche, Best-First, ricerca A*.

Pianificazione Condizionale (FOND): domini non deterministici, PDDL con operatore oneof, pianificazione non deterministica tramite AND-OR Search.

Ragionamento sulle Azioni: modellazione di domini dinamici (discreti), precondizioni delle azioni, effetti, il frame problem.

Situation Calculus: precondition axioms e successor-state axioms; albero delle situazioni; regressione; executability e projection.

Modellazione e pianificazione in domini dinamici stocastici: MDP, Policy Evaluation, Policy Iteration.

  • Introduzione. Problemi di Ricerca e Algoritmi.(settimana 1-2)
  • Testi di riferimento: [AIMA] Artificial Intelligence: A Modern Approach, Global Edition, 4th Edition by Stuart Russell, Peter Norvig, Pearson 2020. Cap. 1, 2.
  • Logica proposizionale e algoritmi per soddisfacibilità. (settimana 3-4)
  • Testi di riferimento: AIMA: 7.4.1 - 7.4.3, 7.6.1
  • Logica del primo ordine.(settimana 5-6)
  • Testi di riferimento: AIMA: 8.1-8.3
  • Pianificazione automatica.(settimana 7-8)
  • Testi di riferimento: AIMA: 3 - 3.4.4, 4.3 - 4.3.2, 11 - 11.3.1
  • Rappresentazione della conoscenza e ragionamento automatico con incertezza.(settimana 9-10)
  • Testi di riferimento: AIMA: 12, 17
  • Il calcolo delle situazioni.(settimana 11-12)
  • Testi di riferimento: Lucidi e appunti delle lezioni.

Modalità d'esame

L'esame consiste in una prova scritta contenente domande riguardanti:

  • Modellazione di un sistema dinamico.
  • Ragionamento sul sistema modellato, es., progressione, regressione o pianificazione.
  • Ragionamento su conoscenza proposizionale e/o al prim'ordine (es., soddisfacibilità, validità o implicazione logica di formula/knowledge bases).
  • Tecniche di modellazione e pianificazione su domini stocastici .

Testi di riferimento

Artificial Intelligence: A Modern Approach, Global Edition, 4th Edition by Stuart Russell, Peter Norvig, Pearson 2020 (selected chapters).

Codice insegnamento 10600392

BIOINFORMATICS 1° anno · 2° semestre · 6 CFU · IBIO-01/A · 0 file

Obiettivi generali Il corso si concentrerà sui metodi di data mining statistico e non supervisionato per la medicina. Gli studenti acquisiranno conoscenze biologiche di base, conoscenza dele principali banche dati…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Il corso si concentrerà sui metodi di data mining statistico e non supervisionato per la medicina. Gli studenti acquisiranno conoscenze biologiche di base, conoscenza dele principali banche dati biologiche e strumenti di analisi dati biologici, abilità bioinformatiche e familiarità con l'analisi di dati omici.
Obiettivi specifici: Conoscenza e comprensione: Gli studenti acquisiscono familiarità con i concetti biologici di base, con la programmazione R applicata alla bioinformatica, l'analisi di dati di espressione genica mediante l'uso di metodi statistici e non supervisionati per l'indagine di malattie complesse.
Applicare conoscenza e comprensione: Essere in grado di portare a termine una analisi bioinformatica di base applicando le tecniche statistiche acquisite per identificare molecole modulate potenzialmente caratterizzanti un fenotipo di malattia.
Capacità critiche e di giudizio: Essere in grado di valutare la qualità dell’analisi svolta, caratterizzando i risultati ottenuti tramite gli strumenti d’indagine forniti durante il corso e ricercare riscontri dei risultati ottenuti in letteratura.
Capacità comunicative: Il corso prevede sessioni pratiche ed un’attività progettuale finale che consentiranno allo studente di essere in grado di comprendere, presentare e discutere adeguatamente risultati ottenuti da un’indagine bioinformatica di base portata avanti su reali casi di studio, nonché giustificare le scelte metodologiche e progettuali relative ad i parametri usati in tale analisi.
Capacità di apprendimento: Le modalità di svolgimento del corso prevedono lezioni frontali che permetteranno di sviluppare le capacità di apprendimento fornite dallo studio teorico del materiale didattico, a cui si affiancheranno sessioni pratiche, in particolare attività di progetto su casi di studio reali di analisi dati molecolari relativi a diverse patologie, stimolando cosi lo studente sia all'approfondimento autonomo di alcuni argomenti presentati nel corso, sia all'applicazione concreta delle nozioni e delle tecniche apprese durante il corso.

Codice insegnamento 1047220

COMPUTATIONAL COMPLEXITY 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali: Il corso propone: (1) lo studio di un approccio moderno alla complessità computazionale, (2) la comprensione del concetto di computazioni algoritmiche in presenza di risorse di calcolo limitate e…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Il corso propone: (1) lo studio di un approccio moderno alla complessità computazionale, (2) la comprensione del concetto di computazioni algoritmiche in presenza di risorse di calcolo limitate e (3) la classificazione dei problemi matematici in base alle risorse necessarie e sufficienti per risolverli algoritmicamente. Si affronta lo studio e la comprensione di problemi fondazionali dell'Informatica e della Matematica come P vs NP e altri problemi affini su altri classi di complessità . Il focus del corso è orientato a studiare problemi intrattabili con risorse computazionali limitate: il fine è quello di acquisire le principiali tecniche matematiche per dimostrare che certi problemi non possono essere risolti con risorse computazionali limitate.
Obiettivi specifici: Conoscenza e comprensione: Classificazione dei problemi matematici in base alla risorse e ai modelli di calcolo necessari e sufficienti per risolverli algoritmicamente efficientemente: tempo di esecuzione, memoria, randomness, non determinismo, parallelismo. Tecniche per la dimostrazione che alcuni problemi sono intrattabili avendo a disposizione risorse computazionali limitate.
Applicare conoscenza e comprensione: Dotare lo studente delle capacita di problem solving applicato a problemi computazionali principalmente sotto due aspetti: (1) Pensare e descrivere una la soluzione di un problema ad alto livello descrivendone le idee portanti e le motivazioni di efficacia per la soluzione; (2) essere in grado di dettagliare e scrivere matematicamente soluzioni precedentemente descritte ad alto livello.
Capacità critiche e di giudizio: Essere in grado di valutare la qualità e la correttezza di soluzioni a problemi di natura computazionale.
Capacità comunicative: Descrivere e presentare correttamente problemi di natura computazionale e loro soluzioni matematiche a vari livelli: (1) brevi presentazioni orali della durata di 30 minuti; (2) presentazioni orali matematicamente dettagliate della durata di una o due ore; (3) scrittura scientifica di report con la soluzione di un problema.
Capacità di apprendimento: Approfondimento autonomo di alcuni argomenti presentati nel corso, lavoro di gruppo, applicazione concreta delle nozioni e delle tecniche apprese durante il corso.

Programma

1. Preliminari su Classi di Complessità [2 settimane]

1.1 Modelli teorici di computazione. Risorse computazionali: tempo e spazio.

1.2 Classi di complessità di Tempo e Spazio

1.3 Il problema P versus NP

1.4 NP e NP-completezza

1.5 Problemi non trattabili quando le risorse computazionali sno limitate

1.6 Classi di Complessità: L, NL, P, NP, PSPACE, BPP, RP, #P, IP,

1.7 risultati principali

2. Diagonalizzazione[1 settimana]

3. Teoremi di Gerarchia[1 settimane]

4. Resultati di Barriera I: Diagonalizzazione non è sufficiente per provare P diverso da NP [1 settimana]

5. Complessità spaziale [2 settimane]

5.1 Teorema di Shamir: PSPACE = IP

5.2 Teorema di Immerman-Szelepcsényi : NL=coNL,

6. Circuiti Booedani [2 settimane]

6.1 Definizioni preliminari e circuiti efficienti

6.2 Circuiti con profondità costante: Gerarchie NC e AC.

6.3 Teorema di Hastad-Razborov-Smolensky: Parità richiedi circuiti a profondità costante di dimensione esponeziale.

6.4 Circuiti Monotoni

7. Gerarchia Polinomiale e teoremi fondamentali [1 settimana]

8. Resultati di Barriera - II [1 settimana, opzionale]

8.1 Teorema di Rudich-Razborov: "Natural proofs" non sono sufficienti per separare P da NP (a meno di rompere protocolli crittografici sicuri)

9. Altri modelli di of computations e loro limiti: [1 settimana]

9.1 Alberi di Decisione

9.2 Branching programs.

10. Introduzione alla Complessità delle dimostrazioni [2 settimane]

10.0 Relazione con il problema P versus NP

10.1. Sistemi Logici: Resoluzione

10.2 Sistemi Geometric: tagli di Chvatal

10.3 Sistemi Algebrici: Polynomial Calculus

10.4 sistemi Semialgebraici: Sherali-Adams and Sum-of-Squares

10.5 Limiti inferiori esponenziali per Resolution and Cutting planes: metodo Ben-Sasson-Wigdeson e

Interpolazione trattabile

  • Argomento1: Preliminari su Classi di Complessità
  • Argomento2: Diagonalizzazione
  • Argomento 3: Teoremi di Gerarchia
  • Argomento 4: Risultati di Barriera I
  • Argomento 5: Complessità spaziale
  • Argomento 6: Gerarchia polinomiale
  • Argomento 7: Circuiti Booleani
  • Argomento8: Resultati di Barriera - II
  • Argomento9: Altri modelli di of computations e loro limiti:
  • Argomento 10: Complessità delle dimostrazioni logiche e problema Pvs NP

Modalità d'esame

Per superare l'esame occorre conseguire un voto non inferiore a 18/30.

Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli

argomenti trattati, e di essere in grado autonomamente di collegare tra loro i diversi argomenti.

Per conseguire un punteggio pari a 30/30 e lode, lo studente deve invece dimostrare di aver

acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso, essendo

in grado di raccordarli in modo logico e coerente.

In fase di valutazione dell'esame si terrà conto dei seguenti aspetti:

(1) la logica seguita dallo studente nella

risoluzione dei quesiti osti ;

(2) la correttezza della procedura individuata per la soluzione dei

quesiti;

(3) l'adeguatezza della soluzione proposta in relazione alle competenze che lo studente

si presuppone abbia acquisito alla fine del corso;

(4) l'impiego di un linguaggio Italiano (o inglese se l'esame è in Inglese) appropriato.

Si terrà conto anche

(1) della capacità di elaborare una risposta

adeguata alle domande poste,

(2) della capacità di prontezza dello studente di rispondere correttamente alle domande.

(3) Verranno valutate inoltre la capacità dello studente di inferire nuova conoscenza a partire dalle nozioni acquisite nel corso

Testi di riferimento

S. Arora B. Barak: Computational Complexity: A Modern Approach Cambridge University Press, 2007

O. Goldreich. P, NP, and NP-Completeness: The Basics of Computational Complexity Cambridge University Press 2010

O. Goldreich. Computational Complexity: A Conceptual Perspective Cambridge University Press 2008.

A. Wigderson. Mathematics and Computation. Princeton University Press. In press

C. Papadimitriou. Computational Complexity. Pearsons. 1994.

S. Jukna. Boolean Function Complexity. Springer. 2012

H. Vollmer. Introduction to Circuit Complexity: an uniform approach, Springer. 2013

J. Krajicek. Proof Complexity. Cambridge. 2019.

Codice insegnamento 10612389

COMPUTER VISION 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

OBIETTIVI GENERALI Il corso vuole introdurre lo studente ai concetti fondamentali della visione artificiale e alla costruzione di sistemi autonomi di interpretazione e ricostruzione di una scena tramite immagini e video.…

Scheda dell'insegnamento

Obiettivi formativi

OBIETTIVI GENERALI Il corso vuole introdurre lo studente ai concetti fondamentali della visione artificiale e alla costruzione di sistemi autonomi di interpretazione e ricostruzione di una scena tramite immagini e video. Il corso affronta elementi di base di geometria proiettiva ed epipolare, i metodi per la visione 3d e per la visione basata su più viste, e i metodi per la ricostruzione metrica e le metodologie di interpretazione di immagini e video. Inoltre il corso illustra le tecniche principali per il riconoscimento e la segmentazione di immagini e video basati sull’ apprendimento automatico.
OBIETTIVI SPECIFICI
Conoscenza e Comprensione. Il corso stimola la curiosità degli studenti verso nuove metodologie per l’analisi e la generazioni di immagini e di video. Lo studente apprende nuovi concetti che gli permettono di acquisire una conoscenza di base della visione computazionale.
Applicare Conoscenza e Comprensione. Gli studenti approfondiscono e apprendono linguaggi di programmazione per applicare la conoscenza acquisita. In particolare approfondiscono il linguaggio Python ed apprendono Tensorflow. Quest’ ultimo offre agli studenti la possibilità di programmare applicazioni di deep learning. Usano questa nuovissima tecnologia per realizzare un progetto di riconoscimento di elementi specifici in immagini e video.
Capacità critiche e di Giudizio. Lo studente acquisisce la capacità di distinguere tra ciò che può realizzare con gli strumenti che ha appreso, come ad esempio generare delle immagini o riconoscere degli oggetti usando tecniche di deep learning, e ciò che è effettivamente richiesto per la realizzazione di un sistema automatico di visione. In tal modo è in grado di elaborare un giudizio critico sui sistemi di visione disponibili allo stato dell’arte e di valutare ciò che si può effettivamente realizzare e ciò che richiede ulteriori avanzamenti nella ricerca.
Capacità Comunicative. La realizzazione del progetto, come parte del programma di esame, richiede che lo studente lavori e dia un contributo all’ interno di un piccolo gruppo di lavoro. Questo insieme alla soluzione di esercizi in classe, e alle discussioni sui temi più interessanti stimola le capacità comunicative dello studente.
Capacità di Apprendimento. Oltre alle classiche capacità di apprendimento fornite dallo studio teorico del materiale didattico, le modalità di svolgimento del corso, in particolare le attività progettuali, stimolano lo studente all'approfondimento autonomo di alcuni argomenti presentati nel corso, al lavoro di gruppo, e all'applicazione concreta delle nozioni e delle tecniche apprese durante il corso.

Programma

1. Image Processing

Image Formation and Filtering

Frequency analysis

Feature Detection and Matching

Motion and Optical flow

2. Multiview Geometry

Cameras, Multiple Views

Projective geometry and camera geometry

3. Deep Learning for Computer Vision

Deep Learning for computer vision and basic architectures

Object classification and detection, semantic segmentation and instance segmentation

Sequence models: RNN, transformers in vision and attention model, action recognition

Generative models

Monocular depth estimation

4. Computer Vision Security and Forensics

Dataset Bias and Adversarial examples

Multimedia forensics and deepfake detection

  • Image Processing: Filtering - Convolution, Sampling and Aliasing
  • Image Processing: Filtering - Convolution, Gradients, & Edges
  • Image Pyramid, Frequency domain - Fourier Analysis
  • Tutorial 1: Image processing and feature extraction and matching
  • Features: Feature Detection (Corner & Blob)
  • Feature Descriptor and Histogram of Gradient
  • Local features: SIFT, matching
  • 2D Transformation: 2D Transformations, Image alignment and RANSAC
  • Recognition: Image Classification, Semantic Segmentation, Object Detection and Segmentation (BOW)
  • Motion estimation with Optical flow
  • Deep learning for video: action recognition
  • Depth estimation and Monocular Depth Estimation \ Adversarial Robustness
  • Self-supervised learning in CV + Vision transformer and attention model
  • Tutorial 2: Deep Learning with Pytorch on diverse CV topics
  • 3D VISION: Camera Calibration
  • 3D VISION: two view geometry, structure from motion, epipolar geometry and fundamental matrix
  • 3D VISION: stereo matching
  • Tutorial 3: multi view geometry
  • Diverse topics in CV: deefake detection, diffusion model
  • Seminar

Modalità d'esame

● The exam covers the different sections of the course

● The assessment of the exam consist of a project + project presentation (worth 1/2) and a final written exam (worth 1/2).

● Final project: a list of topics will be given at the half of the course.

● Groups from 1 to 3 people

Testi di riferimento

Suggested (not mandatory)

  • Computer Vision and Image Processing: «Computer Vision: Algorithms and Applications», Richard Szeliski , 2022 (available for free at: https://szeliski.org/Book/)
  • MultiView Geometry: “MultiView Geometry in Computer Vision”, Richard Hartley & Andrew Zisserman, Cambridge ed.
  • Understanding Deep Learning. J.D. Prince, https://udlbook.github.io/udlbook/
  • Deep Learning with PyTorch, Eli Stevens, Luca Antiga, Thomas Viehmann
  • Deep learning: «Deep Learning», Ian Goodfellow , Yoshua Bengio , Aaron Courville (available at: https://www.deeplearningbook.org/)
  • Scientific papers and articles discussed during the course

Codice insegnamento 1052229

CYBERSECURITY 1° anno · 1° semestre · 9 CFU · IINF-05/A · 0 file

Obiettivi Generali. 1. Fornire una visione complessiva della sicurezza informatica, intesa come disciplina tecnica e culturale, essenziale nella società digitale contemporanea. 2. Formare professionisti consapevoli, in…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali.
1. Fornire una visione complessiva della sicurezza informatica, intesa come disciplina tecnica e culturale, essenziale nella società digitale contemporanea. 2. Formare professionisti consapevoli, in grado di valutare criticamente la sicurezza di sistemi, applicazioni e infrastrutture informatiche, anche in contesti reali e complessi. 3. Coltivare una mentalità progettuale orientata alla sicurezza, sensibilizzando alla necessità di integrare protezione, riservatezza, autenticità e resilienza fin dalle prime fasi dello sviluppo di tecnologie. 4. Promuovere l’autonomia nello studio e nella ricerca, fornendo strumenti concettuali e metodologici per approfondire temi avanzati o emergenti nel campo della cybersecurity.
Obiettivi Specifici.
1. Comprendere i fondamenti della sicurezza informatica, con particolare attenzione a: • Crittografia simmetrica e asimmetrica • Integrità e autenticazione dei messaggi • Firme digitali e loro standard (PAdES, CAdES, XAdES, JAdES)
2. Studiare i protocolli e i sistemi di sicurezza reali, inclusi: • HTTPS, IPsec, TLS/SSL, SSH • Autenticazione tramite password, biometria, Kerberos, certificati X.509 • Sicurezza del sistema email • Metodologie e sistemi per la sicurezza di rete
3. Analizzare minacce e modelli di attacco, sviluppando: • Capacità di individuare vulnerabilità • Comprensione delle tecniche di attacco e difesa • individuare i pattern di attacco più comuni con particolare riferimento alle applicazioni web
4. Approfondire l’uso di generatori di numeri casuali sicuri, fondamentali per crittografia e protocolli.
5. Applicare la teoria alla pratica, mediante: • Homework ed esercitazioni • Progetti e tesi (per studenti interessati)
6. Sviluppare un pensiero critico rispetto alla sicurezza delle tecnologie digitali moderne.

  • Conoscenza e Comprensione:
    Al termine del corso, lo studente avrà acquisito una solida conoscenza dei principi fondamentali della sicurezza informatica, con particolare riferimento ai modelli teorici e agli strumenti pratici per garantire riservatezza, integrità, autenticazione e disponibilità delle informazioni. In particolare, sarà in grado di: • comprendere il funzionamento e i limiti dei principali algoritmi crittografici, sia simmetrici che asimmetrici; • riconoscere e valutare le minacce alla sicurezza nei sistemi di comunicazione, nei protocolli di rete e nelle applicazioni; • analizzare i meccanismi di autenticazione, gestione delle identità e firme digitali, anche alla luce dei relativi standard internazionali; • comprendere le architetture di sicurezza nei diversi livelli dello stack protocollare, inclusi HTTPS, TLS, IPsec, SSH e Kerberos. • conoscere le pratiche di riferimento per la progettazione di stack applicativi sicuri.
    La comprensione sarà supportata sia da esempi tratti dal mondo reale sia da attività applicative e discussioni critiche, in modo da favorire una visione sistemica e aggiornata del tema.
  • Applicare conoscenza e comprensione: Lo studente sarà in grado di applicare in modo efficace i concetti e gli strumenti acquisiti per analizzare, progettare e valutare soluzioni di sicurezza in ambito informatico. In particolare, sarà capace di:
  • identificare vulnerabilità nei protocolli di comunicazione e nei sistemi informatici; • selezionare e implementare tecniche crittografiche appropriate a specifici contesti applicativi; • configurare e valutare protocolli di autenticazione, sistemi di gestione delle identità e infrastrutture di chiave pubblica (PKI); • analizzare scenari reali di attacco e difesa, formulando strategie di mitigazione e miglioramento della sicurezza; • comprendere e utilizzare standard e strumenti per la firma digitale e la protezione dei dati in transito e in archiviazione.
    Le competenze applicative saranno sviluppate attraverso esercitazioni pratiche, analisi di casi studio e discussioni guidate su vulnerabilità e incidenti noti.
  • Capacità critiche e di giudizio: Al termine del corso, lo studente avrà sviluppato la capacità di analizzare criticamente problemi di sicurezza informatica, valutando in modo autonomo le soluzioni possibili alla luce dei vincoli tecnici, normativi ed etici. In particolare, sarà in grado di: • riflettere sulle implicazioni dell’adozione (o mancata adozione) di misure di sicurezza nei sistemi digitali; • confrontare approcci e tecnologie di sicurezza, valutandone efficacia, scalabilità e sostenibilità; • formulare giudizi motivati su progetti e architetture di sistemi sicuri, tenendo conto di contesti reali e multidisciplinari; • riconoscere i limiti delle tecnologie esistenti e la necessità di aggiornamento continuo in un settore in rapida evoluzione.
    Il corso stimola il pensiero critico attraverso l’analisi di casi studio, discussioni su incidenti reali, e riflessioni sull’etica e la responsabilità nella progettazione di sistemi sicuri.
  • Capacità comunicative: Lo studente acquisirà la capacità di comunicare in modo chiaro, preciso e appropriato contenuti, problemi e soluzioni relativi alla sicurezza informatica, sia a interlocutori specialisti che non specialisti. In particolare, sarà in grado di: • descrivere e motivare l’adozione di tecnologie e protocolli di sicurezza con linguaggio tecnico accurato; • esporre in modo comprensibile rischi, contromisure e implicazioni della cybersecurity anche a stakeholder non tecnici (ad esempio in ambito aziendale, legale o istituzionale); • partecipare attivamente a discussioni critiche su casi di attacco e difesa, anche in contesti collaborativi o interdisciplinari; • redigere brevi report tecnici e documentazione chiara su configurazioni, analisi e risultati di laboratorio.
    Il corso favorisce queste abilità attraverso esercitazioni orali, discussioni collettive, stesura di elaborati e interazione con materiali divulgativi e scientifici.
  • Capacità di Apprendimento: Al termine del corso, lo studente avrà sviluppato solide capacità di apprendimento autonomo e continuo, indispensabili per aggiornarsi in un ambito, come quello della sicurezza informatica, in costante evoluzione tecnologica e normativa.
    In particolare, sarà in grado di: • reperire e comprendere in modo critico documentazione tecnica, articoli scientifici e standard internazionali in materia di cybersecurity; • approfondire autonomamente temi avanzati o emergenti (es. nuove vulnerabilità, protocolli post-quantum, normative sulla privacy); • applicare strategie di studio flessibili per affrontare l’eterogeneità delle fonti (manuali, specifiche, white papers, codici di condotta); • affrontare con metodo e spirito critico progetti di ricerca o sviluppo in sicurezza, anche in ambito accademico o professionale.
    Il corso stimola l’apprendimento indipendente attraverso compiti aperti, letture consigliate, accesso a risorse online e un approccio orientato alla risoluzione di problemi reali.

Programma

1. Principi della sicurezza informatica (confidenzialità, integrità, autenticazione, modelli di minaccia)

2. Crittografia simmetrica e modalità operative (AES, ChaCha20, ECB, CBC, CTR)

3. Crittografia asimmetrica e scambio di chiavi (RSA, Diffie–Hellman, crittografia ibrida)

4. Hash crittografici e firme digitali (SHA, HMAC, RSA signature)

5. Protocolli di sicurezza e TLS (canali sicuri, autenticazione, handshake)

6. Infrastrutture a chiave pubblica (PKI) (certificati, CA, gestione della fiducia)

7. Modelli formali e attaccanti attivi (modello di Dolev–Yao, analisi di protocollo)

8. Temi avanzati (CSPRNG, secret sharing, aspetti di privacy)

Modalità d'esame

Prova scritta obbligatoria. Test orale successivo, facoltativo e solo per i sufficienti allo scritto.

Facoltativo: produrre homeworks durante l'anno.

Testi di riferimento

Slides distribuite attraverso Classroom (vedi sito web https://sites.google.com/diag.uniroma1.it/cybersecurity/)

Network Security: Private Communication in a Public World, di Charlie Kaufman , Radia Perlman , Mike Speciner, Pearson Education (US), 2022

Codice insegnamento 10600393

DATA MANAGEMENT 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali: L'obiettivo del corso è l'indagine sui concetti di base dei sistemi di gestione dei dati, facendo riferimento sia al modello relazionale, sia a modelli NoSQL. Vengono affrontate diverse questioni…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: L'obiettivo del corso è l'indagine sui concetti di base dei sistemi di gestione dei dati, facendo riferimento sia al modello relazionale, sia a modelli NoSQL. Vengono affrontate diverse questioni fondamentali relative alla teoria e alla progettazione di sistemi di gestione dei dati relazionali, tra cui controllo della concorrenza, ripristino, organizzazioni di file e indici, elaborazione delle query, OLAP e OLTP. È richiesta una buona conoscenza dei fondamenti di strutture di programmazione, linguaggi di programmazione e database (SQL, modello di dati relazionali, modello di dati Entità-Relazione, progettazione di database concettuali e logici).
Conoscenza e comprensione: Lo studente avrà una buona conoscenza di diversi modelli di dati, anche NoSQL, di come funziona un sistema di gestione dei dati, di come è strutturato e di come è progettato. Inoltre, lo studente acquisirà conoscenza dell'architettura di un sistema di gestione di database e dei suoi moduli principali (gestore delle transazioni, gestore di recupero, analizzatore di query). Lo studente acquisirà inoltre una buona conoscenza di come progettare l'organizzazione fisica delle relazioni (file e indici) e di come funziona l'ottimizzatore di query di un sistema di gestione dati.
Applicare conoscenza e comprensione: Gli studenti saranno in grado di progettare il proprio sistema di gestione dei dati, incluso il modulo di controllo della concorrenza, il modulo di ripristino, il modulo per i metodi accesso ai file e l'ottimizzatore di query.
Capacità critiche e di giudizio: Lo studente sarà in grado di valutare le caratteristiche e la qualità di diversi modelli di dati utilizzati nel mondo reale e dei relativi sistemi di gestione dei dati. Inoltre sarà in grado di scegliere la tecnica giusta per gestire la concorrenza, il recupero e l'elaborazione delle query in contesti applicativi specifici.
Capacità comunicativa: Gli studenti acquisiranno una buona conoscenza su come illustrare gli algoritmi e le tecniche alla base di un moderno Data Manager.
Capacità di apprendimento: Lo studente sarà in grado di comprendere qualsiasi nuova architettura e approccio alla gestione dei dati che si affermerà in futuro.

Programma

1. Ripasso su basi di dati e SQL

2. Data warehousing: architetture, modellazione multidimensionale, OLAP

3. Metodologie di progettazione dei Data Warehouse; Il modello DFM; I modelli logici per i DW: lo schema a stella, lo schema a fiocco di neve

4. Modelli e sistemi NoSQL: il caso dei database a grafo; Il sistema Neo4j

5. La nozione di Knowledge Graph; Knowledge Graph RDFS: sintassi, semantica, inferenza

6. Modelli e sistemi NoSQL: il caso dei database a documenti; Il sistema MongoDB

7. La struttura di un Sistema di Gestione di Basi di Dati (DBMS)

8. Gestione del buffer: buffer pool, strategie di rimpiazzamento, operazioni sul buffer

9. Gestione della concorrenza: Il concetto di transazione; La nozione di serializzabilità; Strategie di gestione della concorrenza; Controllo della concorrenza in SQL e PostgreSQL; Recupero: gestione dei crash; Classificazione dei guasti; Strategie di recupero

10. Strutture fisiche per la gestione dei dati: organizzazione di record e pagine, organizzazione semplice dei file, organizzazione indicizzata dei file

11. Elaborazione delle query: valutazione degli operatori di algebra relazionale

  • Ripasso su basi di dati e SQL
  • Testi di riferimento: Dispense distribuite dai docenti
  • Data warehousing: architetture, modellazione multidimensionale, OLAP
  • Testi di riferimento: M. Golfarelli, S. Rizzi. Data Warehouse Design: Modern Pronciples and Methodologies. McGraw-Hill, 2009
  • Metodologie di progettazione dei Data Warehouse; Il modello DFM; I modelli logici per i DW: lo schema a stella, lo schema a fiocco di neve
  • Testi di riferimento: M. Golfarelli, S. Rizzi. Data Warehouse Design: Modern Pronciples and Methodologies. McGraw-Hill, 2009
  • Modelli e sistemi NoSQL: il caso dei database a grafo; Il sistema Neo4j
  • Testi di riferimento: Dispense distribuite dai docenti
  • La nozione di Knowledge Graph; Knowledge Graph RDFS: sintassi, semantica, inferenza
  • Testi di riferimento: Dispense distribuite dai docenti
  • NoSQL data models and systems: the case of Document databases; The MongoDB system
  • Testi di riferimento: Dispense distribuite dai docenti
  • La struttura di un Sistema di Gestione di Basi di Dati (DBMS) . Gestione del buffer: buffer pool, strategie di rimpiazzamento, operazioni sul buffer
  • Testi di riferimento: R. Ramakrishnan, J. Gehrke. Database Management Systems. McGraw-Hill, 2004
  • Gestione della concorrenza: Il concetto di transazione; La nozione di serializzabilità; Strategie di gestione della concorrenza; Controllo della concorrenza in SQL e PostgreSQL; Recupero: gestione dei crash; Classificazione dei guasti; Strategie di recupero
  • Testi di riferimento: R. Ramakrishnan, J. Gehrke. Database Management Systems. McGraw-Hill, 2004
  • Strutture fisiche per la gestione dei dati: organizzazione di record e pagine, organizzazione semplice dei file, organizzazione indicizzata dei file
  • Testi di riferimento: R. Ramakrishnan, J. Gehrke. Database Management Systems. McGraw-Hill, 2004
  • Elaborazione delle query: valutazione degli operatori di algebra relazionale
  • Testi di riferimento: R. Ramakrishnan, J. Gehrke. Database Management Systems. McGraw-Hill, 2004

Modalità d'esame

Ogni studente può scegliere tra due opzioni:

OPZIONE 1: sostenere solo l’esame scritto; in questo caso l’esame scritto è completo e il voto va da 18 a 30, come di consueto.

OPZIONE 2: sostenere sia l’esame scritto che il progetto. In questo caso l’esame scritto è ridotto rispetto all’OPZIONE 1, il voto massimo è 24 e il voto minimo per superarlo è 15; per il progetto, il voto massimo è 8 e il voto minimo per superarlo è 4. Il voto finale sarà la somma dei due punteggi.

Testi di riferimento

  • Dispense distribuite dai docenti;
  • R. Ramakrishnan, J. Gehrke. Database Management Systems. McGraw-Hill, 2004;
  • M. Golfarelli, S. Rizzi. Data Warehouse Design: Modern Pronciples and Methodologies. McGraw-Hill, 2009,
  • Materiale aggiuntivo opzionale sul controllo della concorrenza:
  • http://research.microsoft.com/en-us/people/philbe/ccontrol.aspx
  • Gerhard Weikum, Gottfried Vossen, "Transactional Information Systems: Theory,

Algorithms, and the Practice of Concurrency Control and Recovery", The Morgan Kaufmann

Series in Data Management Systems.

Gerhard Weikum, Gottfried Vossen, "Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery", The Morgan Kaufmann, Series in Data Management Systems.

Codice insegnamento 1022797

DEPENDABLE DISTRIBUTED SYSTEMS 1° anno · 1° semestre · 9 CFU · IINF-05/A · 0 file

OBIETTIVI GENERALI Il corso ha come obiettivo principale quello di fornire le conoscenze di base per la progettazione e lo sviluppo di un sistema distribuito che sia in grado di soddisfare i principali requisiti di…

Scheda dell'insegnamento

Obiettivi formativi

OBIETTIVI GENERALI Il corso ha come obiettivo principale quello di fornire le conoscenze di base per la progettazione e lo sviluppo di un sistema distribuito che sia in grado di soddisfare i principali requisiti di dependability (e.g., affidabilità, disponibilità del servizio, integrità dei dati, confidenzialità delle informazione etc.).
OBIETTIVI SPECIFICI - Conoscenza e comprensione I sistemi distribuiti sono alla base di qualsiasi applicazione informatica moderna e pertanto devono essere progettati e sviluppati tenendo in considerazione i principali requisiti non funzionale in grado garantire la qualità del servizio erogato a fronte di guasti, malfunzionamenti e intrusioni nel sistema. Il corso si propone l'obiettivo principale di fornire agli studenti una chiara caratterizzazione della concorrenza in un sistema distribuito considerando le caratteristiche di tale sistema come guasti, latenza variabile nelle comunicazioni e assenza di un clock globale. Successivamente si analizzeranno i principali modelli di sistema e le astrazioni di base per la comunicazione e la sincronizzazione, si introdurranno le primitive di base per la costruzione di un middleware, si forniranno i concetti di base di un sistema peer-to-peer con alcuni esempi di sistemi reali tra cui i var tipi di ledger e blockchain. Infine, verranno presentate agli studenti tecniche di base per l'analisi della dependability (modelli analitici e modelli di simulazione) che consentano di valutare il sistema stesso e la sua capacità di soddisfare i livelli di dependability e di qualità del servizio imposti dalle specifiche del sistema stesso.

  • Applicare conoscenza e comprensione Lo studente sarà in grado di progettare sistemi e algoritmi distribuiti al di sopra di diversi modelli di sistema da quelli sincrono, asincrono e parzialmente sincrono capendo impossibilità e limitazione nelle prestazioni. Inoltre avrà la capacita di astrarre sistemi e piattaforme reali in modelli astratti più facili da trattare. Infine, lo studente sarà in grado di svolgere un'analisi delle dependability del sistema stesso e di svolgere un'analisi comparativa tra diverse soluzioni.
  • Capacità critiche e di giudizio Lo studente sarà in grado di valutare e comparare diverse soluzioni per la realizzazione di applicazioni distribuite. Sarà, inoltre, in grado valutare gli opportuni trade-off in considerazione dei vari aspetti che caratterizzano l'ambiente specifico in cui l'applicazione andrà in esercizio.
  • Capacità comunicative Lo studente acquisirà la terminologia propria del settore.
  • Capacità di apprendimento Lo studente apprenderà tecniche e metodologie di base per la progettazione e lo sviluppo di sistemi e applicazioni distribuite con requisiti di dependability.

Programma

Introduction to Distributed Systems and Dependability

Basic Abstractions

  • Distributed Computations
  • Abstracting Processes
  • Abstracting Communications
  • Timing Assumptions
  • Abstracting Time

** Failure Detector abstractions

** Leader Election abstractions

Clock Synchronization

  • Internal and External synchronization
  • Christian’s algorithm
  • Berkley’s algorithm
  • NTP
  • Happened-before relation
  • Application of scalar logical clocks to the mutual exclusion

** Lamport’s algorithm

** Ricarta-Agrawala’s algorithm

Distributed Mutual Exclusion

  • Coordinator-based strategy
  • Token-based strategy
  • Quorum-based strategy

Broadcast

  • Best Effort Broadcast
  • Reliable Broadcast
  • Uniform Reliable Broadcast
  • Probabilistic Broadcast

Consensus

  • Regular Consensus
  • FLP Impossibility Result
  • Uniform Consensus
  • Paxos Algorithm

Ordered Communication Primitives

  • FIFO Broadcast
  • Causal Order Broadcast
  • Total Order Broadcast

Registers

  • Regular Register
  • Atomic Register
  • Message Passing Implementatios
  • Transformation from (1, N) Regular to (1, N) Atomic

Software Replication and Consistency Criteria

  • Linearizability
  • Primary-backup
  • Active Replication
  • Sequential Consistency
  • Causal Consistency

CAP Theorem

Byzantine Fault Tolerance

  • Authenticated point-to-point links
  • Byzantine Broadcast
  • Byzantine Tolerant Registers
  • The Byzantine General Problem
  • State Machine Replication - PBFT

Information Dissemination in large scale Networks

  • Broadcasting Information in Multi-hop Networks

** Static networks

** Dynamic networks

  • Publish and Subscribe Paradigm

** Topic vs content-based dissemination

** Distributed ENS strategies

** SIENA

Dynamic Distributed Systems

  • The notion of Churn
  • Churn Models
  • Time Varying Graph
  • Random-way-point mobility
  • Focal Point model
  • Shared Memories Emulation in Dynamic Systems

Blockchain and Distributed Ledgers

Distributed Systems’ Performance Evaluation

  • Performance models: analytical vs simulation
  • Queuing Model
  • Worse-case analysis
  • Simulation methodology

Dependability Evaluation

  • Metrics
  • Redundancy vs diversity
  • Combinatorial Analysis

** Series vs parallel deployment

  • Introduction to Chaos Engineering

Modalità d'esame

L'esame è composto da una prova scritta a domande aperte sugli argomenti del corso.

Le domande possono essere nozionistiche, piccoli esercizi da risolvere o un algoritmo distribuito da progettare.

Testi di riferimento

Testi principali

[T1] - C. Cachin, R. Guerraoui and L. Rodrigues. Introduction to Reliable and Secure Distributed Programming, Springer, 2011

[S] – Slides from Lectures

Letture

[T2] - George Coulouris, Jean Dollimore and Tim Kindberg, Gordon Blair "Distributed Systems: Concepts and Design (5th Edition)". Addison - Wesley, 2012.

[R1] - Roberto Baldoni, Michel Raynal, “Fundamentals of Distributed Computing: A Practical Tour of Vector Clock Systems”, IEEE Distributed Systems Online 3(2) (2002) https://www.computer.org/csdl/mags/ds/2002/02/o2001.pdf

[R2] - L. Lamport “Paxos Made Simple”, https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/paxos-simple-Copy.pdf

[R3] - Stefano Cimmino, Carlo Marchetti, Roberto Baldoni ”A Guided Tour on Total Order Specifications” WORDS Fall 2003: 187-194

[R4] - Rachid Guerraoui and André Schiper: “Fault-Tolerance by Replication in Distributed Systems”. In Proceedings of the 1996 Ada-Europe International Conference on Reliable Software Technologies (Ada-Europe '96).

[R5] - Brewer “CAP twelve years later: How the "rules" have changed” http://ieeexplore.ieee.org/document/6133253/ (see NOTE above)

[R6] - Abadi “Consistency Tradeoffs in Modern Distributed Database System Design: CAP is Only Part of the Story” http://ieeexplore.ieee.org/document/6127847/ (see NOTE above)

[R10] - Leslie Lamport, Robert Shostak, and Marshall Pease “The Byzantine Generals Problem ” in ACM TOPLAS 1982 Available at https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/The-Byzantine-Generals-Problem.pdf

[R11] - T. Chandra, S. Toueg Unreliable Failure Detectors for Reliable Distributed Systems https://dl.acm.org/doi/pdf/10.1145/226643.226647

[R12] - Michel Raynal and André Schiper: “A suite of formal definitions for consistency criteria in distributed shared memories” available at: https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.52.6880&rep=rep1& type=pdf

[R13] - Antonio Carzaniga, Matthew J. Rutherford, Alexander J. Wolf “A Routing Scheme for Content-Based Networking” INFOCOM 2004

[R14] - Marcos Kawazoe Aguilera: A pleasant stroll through the land of infinitely many creatures. SIGACT News 35(2): 36-59 (2004)

[R15] - Steven Y. Ko, Imranul Hoque, Indranil Gupta: Using Tractable and Realistic Churn Models to Analyze Quiescence Behavior of Distributed Protocols. 259- 268, SRDS 2008

[R16] - Roberto Baldoni, Silvia Bonomi, Michel Raynal: Regular Register: An Implementation in a Churn Prone Environment. SIROCCO 2009: 15-29

[R17] - Arnaud Casteigts, Paola Flocchini, Walter Quattrociocchi, Nicola Santoro: Time-varying graphs and dynamic networks. Int. J. Parallel Emergent Distributed Syst. 27(5): 387-408 (2012)

[R18] - Daniela Tulone: Ensuring strong data guarantees in highly mobile ad hoc networks via quorum systems. Ad Hoc Networks 5(8): 1251-1271 (2007)

Codice insegnamento 10599896

FOUNDATIONS OF ROBOT PERCEPTION 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali: Acquisire conoscenza sugli strumenti di base per la stima dello stato in sistemi robotici. Essere in grado do applicare tali strumenti a casi di studio reali ed implementare soluzioni funzionanti.…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Acquisire conoscenza sugli strumenti di base per la stima dello stato in sistemi robotici. Essere in grado do applicare tali strumenti a casi di studio reali ed implementare soluzioni funzionanti. Valutare le prestazioni e la qualita' di uno stimatore dello stato. Il corso alterna teoria e pratica. Nelle lezioni pratiche agli studenti e' richiesto il completamento di frammenti di codice di un sistema che rappresenta casi pratici.
Obiettivi specifici:
Conoscenza e comprensione: - Manipolazione di distribuzioni di probabilita' - Basi sulle tecniche di filtraggio (hisrogram filters, Gaussian filters, particle filters) - Modello generale di un sistema non lineare stazionario e dinamico - Formulazione densa e sparsa di algoritmi di minimizzazione (Gauss-Newton, Levenberg Marquardt) - Il problema della Data Association, e strumeni tipici per affrontarlo (RANSAC, euristiche) - Casi di studio tipici per problemi di stima in robotics (Calibrazione, Localizzazione, Mappatura and SLAM)
Applicare conoscenza e comprensione: - Essere in gradi di modellare un problema di stima ed adattare gli strumenti proposti al dominio specifico - Svuluppare uno stimatore dello stato funzionante.
Capacità critiche e di giudizio: - Individuare i pro ed i contro che presentano soluzioni diverse allo stesso problema. - Individuare gli strumenti utilizzabili per approcciare i sotto-problemi di uno stimatore. Lo sviluppo di tali capacita' e' ottenuto mediante lo sviluppo di un progetto sviluppato come parte dell'esame.
Capacità comunicative: - Acquisire un linguaggio comune per descrivere e modellare gli stimatori dello stato e che supporti un'interazione tra sviluppatori definendo un insieme di obiettivi e termini comuni.
Capacità di apprendimento: Lo studente possiedera' capacita e conoscera' tecniche per affrontare problemi di stima dello stato generali. Gli esempi nel dominio della navigazione autonoma presentati durante il corso servono come casi di studio. Gli argomenti individuali appresi (Manipolazione di PDF , Filtering Designs, Minimizzazione), sono strumenti prezioni per affrontare problemi che esulano tali casi specifici di studio.

Codice insegnamento 10631638

GENERATIVE ARTIFICIAL INTELLIGENCE 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi Generali Al termine del corso, gli studenti avranno una solida comprensione e capacità pratica nell'ambito del Generative AI, essenziale per affrontare e risolvere problemi complessi di intelligenza artificiale…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali Al termine del corso, gli studenti avranno una solida comprensione e capacità pratica nell'ambito del Generative AI, essenziale per affrontare e risolvere problemi complessi di intelligenza artificiale generativa.
Obiettivi Specifici Conoscenza e Comprensione: Acquisire una comprensione approfondita dei principi di generazione di immagini e testi. Apprendere le strutture e i meccanismi dei modelli generativi basati su tecniche di diffusione e su tecniche autoregressive
Capacità Critiche e di Giudizio: Valutare criticamente le prestazioni dei modelli di generative AI e di come queste vengono utilizzati in ambiti reali. Analizzare le sfide relative alla robustezza nei modelli di generative AI e sviluppare soluzioni efficaci.
Capacità Comunicative: Presentare e discutere i risultati dei progetti di generative AI, dimostrando competenza nell'uso di strumenti avanzati come Diffusion Models e Transformers.
Capacità di Apprendimento: Sperimentare con tecnologie emergenti nel campo del deep learning, come LLM, Vision LM, Diffusion Models, Flow-based Model, etc.. Applicare le conoscenze teoriche in progetti pratici per affrontare problemi reali.

Programma

1. Introduzione alla Generative AI: panoramica e applicazioni.

2. Modellazione probabilistica: teoria, distribuzioni, MLE.

3. Modelli autoregressivi: linguaggio e immagini.

4. Variational Autoencoders (VAEs): inferenza variazionale e applicazioni.

5. Normalizing Flows: trasformazioni invertibili e distribuzioni complesse.

6. Generative Adversarial Networks (GANs): training avversario e miglioramenti.

7. Modelli basati su energia e punteggio: matching score ed energy functions.

8. Modelli a diffusione: processi stocastici e tecniche recenti.

9. Applicazioni su immagini: generazione e manipolazione.

10. Applicazioni su testo: modelli linguistici e sintesi.

11. Generazione di grafi e molecole: GNN e applicazioni scientifiche.

12. Valutazione dei modelli generativi: metriche e sfide.

  • Generative AI

Modalità d'esame

  • Progetto di gruppo: 30%
  • Esame scritto: 70%

Testi di riferimento

Lecture notes and materials provided by the instructor.

Codice insegnamento 10620853

INNOVATION MANAGEMENT 1° anno · 2° semestre · 6 CFU · IEGE-01/A · 0 file

OBIETTIVI GENERALI Il corso si pone l’obiettivo di fornire agli studenti una conoscenza di base di concetti e strumenti utili nell’ambito della Gestione dell’Innovazione. In particolare, il corso ha l’obiettivo di far…

Scheda dell'insegnamento

Obiettivi formativi

OBIETTIVI GENERALI Il corso si pone l’obiettivo di fornire agli studenti una conoscenza di base di concetti e strumenti utili nell’ambito della Gestione dell’Innovazione. In particolare, il corso ha l’obiettivo di far comprendere agli studenti: le forme, i modelli e le fonti dell'innovazione; i conflitti di standard e la definizione del disegno dominante; la scelta del tempo d'ingresso nel mercato; i meccanismi di protezione dell'innovazione; il processo di sviluppo di un nuovo prodotto; l’integrazione della sostenibilità ambientale nella strategia di marketing e nello sviluppo nuovo prodotto. Inoltre, attraverso l’analisi di una serie di casi di studio, il corso mira a far acquisire agli studenti una capacità di analisi critica che permetta loro di interpretare e spiegare il comportamento delle imprese e i risultati da esse ottenuti nell’ambito delle strategie di innovazione tecnologica alla luce dei concetti appresi durante il corso.
OBIETTIVI SPECIFICI CONOSCENZA E COMPRENSIONE. Il corso permetterà la conoscenza e la comprensione dei principali concetti e degli strumenti fondamentali della Gestione dell’Innovazione. Lo studente imparerà a riconoscere e a padroneggiare le best practices e i fattori di successo della Gestione dell’Innovazione e ad applicarli in contesti reali.
CAPACITÀ APPLICATIVE. Grazie al corso lo studente sarà in grado di valutare criticamente le strategie di innovazione tecnologica di un’impresa, oltre a classificare i prodotti in base al loro impatto ambientale.
AUTONOMIA DI GIUDIZIO. Il corso porrà lo studente in condizione di saper scegliere, date le principali forze ambientali, le caratteristiche dell’impresa e dell’innovazione, le migliori strategie di innovazione tecnologica. Inoltre, lo studente svilupperà la capacità di analisi critica della gestione dell’innovazione.
ABILITÀ DI COMUNICAZIONE. Alla fine del corso lo studente sarà in grado di illustrare i concetti della gestione dell’innovazione utilizzando la terminologia ed i modelli consolidati a livello internazionale, di organizzare le informazioni e i dati secondo un format e un processo di reporting comprensibile ai professionisti.
CAPACITÀ DI APPRENDERE. Lo studente svilupperà capacità di studio autonome e di comprensione e valutazione critica delle strategie di marketing e di innovazione tecnologica e dei relativi strumenti.

Codice insegnamento 10616576

INTERACTIVE GRAPHICS 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali: Far acquisire allo studente le basi della programmazione in grafica 3D con particolare enfasi sulle tecniche di animazione e visualizzazione interattiva. In particolare gli argomenti trattati…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:
Far acquisire allo studente le basi della programmazione in grafica 3D con particolare enfasi sulle tecniche di animazione e visualizzazione interattiva. In particolare gli argomenti trattati includono: Fondamenti della grafica computerizzata, rendering interattivo e animazione, la pipeline grafica, trasformazioni, visualizzazioni, rasterizzazione, illuminazione e shading, texture-mapping, tecniche di animazione basate su keyframes, simulazioni fisiche, sistemi di particelle ed animazione di personaggi. Verrà inoltre fornita un’introduzione alla computazione su hardware specializzato per la grafica (GPGU).
Obiettivi specifici:
Far acquisire allo studente familiarità con le tecniche matematiche alla base della grafica 3D, oltre che la capacità di programmare ambienti complessi ed interattivi in grafica 3D usando la libreria OpenGL o una delle sue varianti
Conoscenza e comprensione:
Approfondimento del funzionamento di un sistema per la grafica 3D nelle sue componenti hardware e software. Conoscenza dello standard HTML5 e del linguaggio Javascript, applicazione della libreria WebGL e di alcune librerie di più alto livello. Comprensione delle problematiche di efficienza e qualità visiva delle applicazioni in grafica 3D
Applicare conoscenza e comprensione:
Sviluppo di applicazioni interattive sul web in grafica 3D.
Capacità critiche e di giudizio:
Capacità di comprendere le complessità tecniche nella realizzazione di applicazioni interattive in grafica 3D. Capacità di analisi critica delle soluzioni presenti sul mercato ed analisi di punti di forza e debolezza.

Programma

Questo corso introdurrà lo studente agli aspetti essenziali della computer grafica e delle applicazioni 3D interattive. Più precisamente, il programma comprende le rappresentazioni dei colori, lo studio della pipeline grafica, un'introduzione alla libreria 3D WebGL, uno studio delle tecniche per la modellazione 3D, come rappresentare matematicamente i sistemi di coordinate e le trasformazioni. Verranno inoltre discussi dettagli sui processi di rasterizzazione e clipping, sulla definizione e implementazione di modelli di illuminazione e ombreggiatura e sul processo di texture mapping. Nell'ultima parte del corso verranno trattate tecniche più avanzate e l'estensione dei modelli d'illuminazione per includere l'illuminazione globale.

Modalità d'esame

Il corso prevede lo svolgimento (opzionale) di piccoli progetti da svolgere singolarmente e di un progetto finale in piccoli gruppi, oltre ad un esame orale

Testi di riferimento

Interactive Computer Graphics with WebGL, Edward Angel, Dave Shreiner, Pearson Education, ISBN 9780136681762, https://www.pearson.com/us/higher-education/program/Angel-Pearson-e-Text-for-Interactive-Computer-Graphics-Access-Card-8th-Edition/PGM2160099.html

Codice insegnamento 1044398

INTERNET-OF-THINGS ALGORITHMS AND SERVICES 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi Generali. Il corso è rivolto principalmente a rivolto principalmente a ingegneri informatici e mira a fornire le competenze di base per progettare, implementare e testare un sistema pervasivo, vale a dire un…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali. Il corso è rivolto principalmente a rivolto principalmente a ingegneri informatici e mira a fornire le competenze di base per progettare, implementare e testare un sistema pervasivo, vale a dire un sistema che consenta agli utenti di accedere ai servizi d'interesse sempre ed ovunque. Discuteremo le tecnologie, i protocolli, le funzionalità e algoritmi per realizzare un sistema pervasivo in grado di fornire servizi specifici (ad esempio servizi per gli utenti mobili, servizi per l'internet degli oggetti, ecc) soggetto ai vincoli tipici dei collegamenti wireless e alle risorse limitate del dispositivi che lo compongono (es. vincoli di energia, mobilità, rumore, potenza della CPU limitato, larghezza di banda limitata, ecc)

Codice insegnamento 10606829

INTERNET-OF-THINGS NETWORKS AND PROTOCOLS 1° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

The course will make students aware of the challenges behind the design, implementation and field use of Wireless system, sensing systems and the Internet of Things. The course will present both the theoretical…

Scheda dell'insegnamento

Obiettivi formativi

The course will make students aware of the challenges behind the design, implementation and field use of Wireless system, sensing systems and the Internet of Things. The course will present both the theoretical foundations and practical aspects you need to know to develop such systems. Hands on lab experiences are associated to the course.
Part 1, Wireless networks
Fundamentals of wireless systems
Fundamental of ad hoc and cellular networks
Part 2, Internet of Things Core
Internet of Thigs applications, architectures, enabling technologies and protocols
Part 3, Emerging Technological Trends in Internet of Things
Zero power sensing systems: Wake Up Radio, energy harvesting, ...
ML based system optimization
Cyber physical systems for the Blue Economy
Part 4, From technologies to Applications
Internet of Things for smart planet and smart cities: practical examples of how to put the pieces together to implement real systems
Part 5 (Lab): Simulating, implementing and testing novel ideas on wireless networked systems and IoT systems
Performance evaluation of Internet of Things systems: How to model, what to model
Network simulators for Internet of Things
How to move from an idea to a validated idea to a solution
Lab: The course provides some lectures on C++ tailored to what needed to program simulators on Internet of Things systems.
For students with limited background on C/C++, recording of classes on C++ from previous courses will be shared so that you can get the needed background

Codice insegnamento 10606830

LABORATORY OF ADVANCED PROGRAMMING 1° anno · 1° semestre · 3 CFU · 0 file

Obiettivi generali. Il corso propone un'introduzione a varie tecnologie di sviluppo software, anche distribuito, che potenzialmente possono essere utilizzate in altri corsi del percorso formativo. Inoltre vengono…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali. Il corso propone un'introduzione a varie tecnologie di sviluppo software, anche distribuito, che potenzialmente possono essere utilizzate in altri corsi del percorso formativo. Inoltre vengono applicate, attraverso lo sviluppo di un progetto in gruppo, le moderne metodologie e tecniche di sviluppo software agile.
Obiettivi specifici. Conoscenza e comprensione: Programmazione di servizi Web in Java e Python. Programmazione di sistemi distribuiti con chiamate bloccanti e non bloccanti. SCRUM e metodi agili. Virtualizzazione e dockerizzazione.
Applicare conoscenza e comprensione: Essere in grado di progettare una applicazione costituita da diversi componenti e microservizi.
Capacità critiche e di giudizio: Essere in grado di valutare la qualità di una applicazione anche in termini di differenti scelte architetturali e di distribuzione.
Capacità comunicative: Le attività progettuali e la presentazione del progetto in modalità pitch e con demo funzionante permettono allo studente di essere in grado di comunicare/condividere i requisiti di una applicazione software di media complessità, nonché le scelte progettuali e le metodologie di progettazione e sviluppo di tale applicazione.
Capacità di apprendimento: Oltre alle classiche capacità di apprendimento fornite dallo studio del materiale didattico, le modalità di svolgimento del corso, in particolare le attività progettuali, stimolano lo studente all'approfondimento autonomo di alcuni argomenti presentati nel corso, al lavoro di gruppo, e all'applicazione concreta delle nozioni e delle tecniche apprese durante il corso.

Codice insegnamento AAF2141

MACHINE LEARNING 1° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

General Objectives. The objectives of this course are to present a wide spectrum of Machine Learning methods and algorithms, discuss their properties, convergence criteria and applicability. The course will also…

Scheda dell'insegnamento

Obiettivi formativi

General Objectives.
The objectives of this course are to present a wide spectrum of Machine Learning methods and algorithms, discuss their properties, convergence criteria and applicability. The course will also present examples of successful application of Machine Learning algorithms in different application scenarios.The main outcome of the course is the capability of the students of solving learning problems, by a proper formulation of the problem, a proper choice of the algorithm suitable to solve the problem and the execution of experimental analysis to evaluate the obtained results.
Specific Objectives.
Knowledge and understanding: Providing a wide overview of the main machine learning methods and algorithms for classification, regression, and unsupervised learning learning problems. All the problems are formally defined and theoretical bases as well as technical and implementation details are provided, in order to understand the proposed solutions.
Applying knowledge and understanding: Solving specific machine learning problems starting from training data, through a proper application of the studied methods and algorithms. The development of small projects to be developed at home allows students to apply the acquired knowledge.
Making judgements: Ability of evaluating performance of a machine learning system using proper metrics and evaluation methodologies.
Communication skills: Ability of writing a technical report describing the adopted solution, thus showing abilities in communicating results obtained from the application of the acquired knowledge in solving a specific problem. Being exposed to examples of communication by discussing results obtained in practical cases. By working in team for home projects, students will learn how to effectively communicate at a technical level.
Learning skills: By acquiring the basic vocabulary and the fundamentals of Machine Learning, students will develop the required skills to autonomously access specialised literature and learn new approaches and techniques, useful to carry out home projects. More in general, the course provides the basics required to successfully learn more advanced ML topics, such as Deep Learning and NLP, typically offered in advanced academic courses.

Programma

Introduzione al Machine Learning

Linear Regression e Online Gradient Descent

Ottimizzazione in ML

Model Selection e Regularization

Classificazione, Alberi di Decisione e Kernel Methods

Statistical Learning, VC dimension, PAC Learning

Reti Neurali

Clustering e Dimensionality Reduction

Introduzione a PyTorch

  • Introduzione al Machine Learning.Linear Regression e Online Gradient Descent.(Settimane 1-2)
  • Testi di riferimento: [UML] Understanding Machine Learning by Shai Shalev-Shwartz & Shai Ben-David. Cap. 1,9,14.
  • Ottimizzazione in ML. Model Selection e Regularization (Settimane 3-4)
  • Testi di riferimento: [UML]: 11, 12, 13
  • Classificazione, Alberi di Decisione (Settimane 5-6)
  • Testi di riferimento: [UML]: 9, 18
  • Statistical Learning, VC Dimension, PAC Learning (Settimane 7-8)
  • Testi di riferimento: [UML]: 3, 6
  • Reti Neurali(Settimane 9-10)
  • Testi di riferimento: [UDL] Understanding Deep Learning by Simon J.D. Prince. Cap. 20
  • Clustering e Dimensionality Reduction(Settimane 11-12)
  • Testi di riferimento: [UML]: 22, 23

Modalità d'esame

L'esame consiste in una prova scritta riguardante tutti gli argomenti del corso..

Testi di riferimento

Understanding Machine Learning: From Theory to Algorithms. Shai Shalev-Shwartz and Shai Ben-David. Cambridge University Press. 2014.

Codice insegnamento 1022858

PROGRAMMABLE NETWORKS 1° anno · 2° semestre · 6 CFU · IINF-03/A · 0 file

Obiettivi Generali. Il corso si propone di fornire agli studenti una panoramica sulla programmabilità di rete, introducendo le principali architetture e tecnologie abilitanti. Attraverso la didattica frontale ed…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali. Il corso si propone di fornire agli studenti una panoramica sulla programmabilità di rete, introducendo le principali architetture e tecnologie abilitanti. Attraverso la didattica frontale ed esercitazioni pratiche, lo studente sarà in grado di configurare dispositivi di rete, progettare e realizzare applicativi di automazione della gestione di rete, sviluppare applicazioni di controllo e definire nuove logiche di processamento dei pacchetti.
Obiettivi Specifici. Conoscenza e comprensione: Conoscenza delle principali architetture a supporto delle reti programmabili, comprendendo le funzioni svolte dai diversi blocchi logici.
Applicare conoscenza e comprensione: Capacità di progettare e sviluppare applicazioni di controllo di rete, di network automation e pipeline di processamento dei pacchetti.
Capacità critiche e di giudizio: Essere in grado di analizzare criticamente il rapporto costi/benefici relativamente all'utilizzo di architetture di controllo centralizzate, approcci reattivi o pro-attivi, funzioni di rete fisiche o virtualizzate.
Capacità comunicative: Tramite attività di gruppo svolte in aula e lo svolgimento del progetto d'esame, lo studente acquisirà la capacità di illustrare la logica di funzionamento delle diverse funzioni di rete sviluppate, oltre che spiegare come queste possano integrarsi con i vari elementi architetturali.
Capacità di apprendimento: Il corso fornisce allo studente una visione strutturata e sistematica sui diversi punti di programmabilità di una infrastruttura di rete, oltre che delle architetture comunemente usate. Queste conoscenze consentiranno allo studente di comprendere facilmente il ruolo della network programmability anche in scenari applicativi non trattati nel corso.

Programma

Il programma è diviso in lezioni teoriche ed esercitazioni pratiche.

Argomenti trattati nelle lezioni teoriche:

  • Richiami di networking [2h]
  • Introduzione alle reti programmabili [2h]
  • Software Defined Networking [4h]
  • Network Function Virtualization [4h]
  • Data Plane programmabile [4h]
  • P4 [4h]
  • Network Slicing [2h]
  • Service Function Chaining [2h]
  • Segment Routing [4h]

Argomenti trattati nelle lezioni pratiche:

  • Network virtualization: Linux namespaces e virtual switches [4h]
  • Introduzione ai containers: Docker e Kubernetes [4h]
  • sviluppo di applicazioni SDN [12h]
  • data plane programming con switch BMv2 [12h]
  • Architetture delle reti programmabili
  • Testi di riferimento: CNIT Technical Report-06: Network Programmability: a (r)evolutionary approach. Editori: Giuseppe Bianchi, Walter Cerroni e Sergio Palazzo. Disponibile su: https://www.texmat.it/collana-cnit.htmlIl materiale didattico è reperibile nella pagina Moodle del corso
  • Esercitazioni pratiche su reti programmabili
  • Testi di riferimento: materiale a cura del docente

Modalità d'esame

L'esame prevede un colloquio orale con domande relative agli argomenti di teoria trattati nel corso e lo svolgimento di un progetto

Testi di riferimento

Il testo di riferimento è il seguente:

CNIT Technical Report-06: Network Programmability: a (r)evolutionary approach. Editori: Giuseppe Bianchi, Walter Cerroni e Sergio Palazzo. Disponibile su: https://www.texmat.it/collana-cnit.html

Il materiale didattico è reperibile nella pagina Moodle del corso

Codice insegnamento 10606936

PROJECT MANAGEMENT 1° anno · 2° semestre · 6 CFU · IEGE-01/A · 0 file

Obiettivi Generali. Il corso si propone di fornire agli studenti una panoramica sulla programmabilità di rete, introducendo le principali architetture e tecnologie abilitanti. Attraverso la didattica frontale ed…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali. Il corso si propone di fornire agli studenti una panoramica sulla programmabilità di rete, introducendo le principali architetture e tecnologie abilitanti. Attraverso la didattica frontale ed esercitazioni pratiche, lo studente sarà in grado di configurare dispositivi di rete, progettare e realizzare applicativi di automazione della gestione di rete, sviluppare applicazioni di controllo e definire nuove logiche di processamento dei pacchetti.
Obiettivi Specifici. Conoscenza e comprensione: Conoscenza delle principali architetture a supporto delle reti programmabili, comprendendo le funzioni svolte dai diversi blocchi logici.
Applicare conoscenza e comprensione: Capacità di progettare e sviluppare applicazioni di controllo di rete, di network automation e pipeline di processamento dei pacchetti.
Capacità critiche e di giudizio: Essere in grado di analizzare criticamente il rapporto costi/benefici relativamente all'utilizzo di architetture di controllo centralizzate, approcci reattivi o pro-attivi, funzioni di rete fisiche o virtualizzate.
Capacità comunicative: Tramite attività di gruppo svolte in aula e lo svolgimento del progetto d'esame, lo studente acquisirà la capacità di illustrare la logica di funzionamento delle diverse funzioni di rete sviluppate, oltre che spiegare come queste possano integrarsi con i vari elementi architetturali.
Capacità di apprendimento: Il corso fornisce allo studente una visione strutturata e sistematica sui diversi punti di programmabilità di una infrastruttura di rete, oltre che delle architetture comunemente usate. Queste conoscenze consentiranno allo studente di comprendere facilmente il ruolo della network programmability anche in scenari applicativi non trattati nel corso.

Codice insegnamento 10600453

USER-DRIVEN SOFTWARE ENGINEERING 1° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Il corso analizza il processo di sviluppo del software e presenta le metodologia, gli standard di qualità, le metriche e le tecniche comunemente usate per la stima economica, la pianificazione ed il test di…

Scheda dell'insegnamento

Obiettivi formativi

Il corso analizza il processo di sviluppo del software e presenta le metodologia, gli standard di qualità, le metriche e le tecniche comunemente usate per la stima economica, la pianificazione ed il test di applicazioni software di qualità professionale. Al fine di interpretare correttamente le misure utilizzate nel contesto dell'assicurazione della qualità del software, il corso presenta le nozioni di base della teoria della misura e della verifica di esperimenti tramite l'analisi della varianza.
Alla fine del corso lo studente sarà in grado di: -scegliere un modello per lo sviluppo di una applicazione software, -stimarne il costo, -pianificare le attività di progetto, -progettare i test ed indicare delle metriche per l'assicurazione qualità -valutare la significatività statistica di esperimenti basati sulla raccolta di campioni numerici.

Codice insegnamento 10620852

A SCELTA DELLO STUDENTE 2° anno · 1° semestre · 6 CFU · 0 file

Fra le altre attività formative sono previsti 12 CFU sono a scelta dello studente.

Scheda dell'insegnamento

Obiettivi formativi

Fra le altre attività formative sono previsti 12 CFU sono a scelta dello studente.

Codice insegnamento AID-99b81539-565

ADVANCED TOPICS IN COMPUTER SCIENCE AND ARTIFICIAL INTELLIGENCE 2° anno · 1° semestre · 3 CFU · 0 file

Il corso offre allo studente la possibilità di approfondire le proprie conoscenze attraverso una serie di seminari su argomenti di ricerca nel campo della Computer Science e dell'Intelligenza Artificiale. Il corso…

Scheda dell'insegnamento

Obiettivi formativi

Il corso offre allo studente la possibilità di approfondire le proprie conoscenze attraverso una serie di seminari su argomenti di ricerca nel campo della Computer Science e dell'Intelligenza Artificiale. Il corso prevede lo studio di argomenti avanzati, anche con l'approfondimenti attraverso articoli scientifici relativi agli sviluppi più recenti nel settore e l'intervento in aula di ricercatori e studiosi della materia.

Codice insegnamento AAF2536

DATA MINING 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali: Conoscenza dei principali scenari applicativi di interesse nell'analisi di collezioni di dati appartenenti a spazi euclidei o meno, possibilmente di elevata dimensionalità. Conoscenza e comprensione…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Conoscenza dei principali scenari applicativi di interesse nell'analisi di collezioni di dati appartenenti a spazi euclidei o meno, possibilmente di elevata dimensionalità. Conoscenza e comprensione delle tecniche elementari. Conoscenza e comprensione dei principali problemi metodologici e di analisi posti dalla dimensione crescente dei dati. Conoscenza delle principali tecniche di soluzione e dei principali strumenti a disposizione per implementarle. Comprensione degli aspetti teorici e fondazionali delle principali tecniche per l'analisi di collezioni di dati di grandi dimensioni Capacità di tradurre le nozioni acquisite in programmi per la soluzione di problemi specifici. Conoscenza delle principali tecniche di valutazione e loro applicazione a scenari specifici.
Obiettivi specifici: Capacità di: - individuare le tecniche più adatte a un problema di analisi di dati, in particolare ad elevata dimensionalità; - implementare la soluzione proposta, individuando gli strumenti più adatti a raggiungere lo scopo tra quelli disponibili; - progettare e realizzari scenari sperimentali per valutare le soluzioni proposte in condizioni realistiche;
Conoscenza e comprensione: - conoscenza dei principali scenari applicativi; - conoscenza delle principali tecniche di analisi; - comprensione dei presupposti teorici e metodologici alla base delle tecniche principali - conoscenza e comprensione delle principali tecniche e indici di valutazione delle prestazioni
Applicare conoscenza e comprensione: - essere in grado di tradurre esigenze applicative in problemi concreti di analisi dei dati; - essere in grado di identificare gli aspetti del problema, se presenti, che potrebbero rendere la dimensione (o dimensionalità) dei dati un fattore critico; - essere in grado di individuare le tecniche e gli strumenti più adatti alla soluzione dei problemi concreti di cui sopra; - essere in grado di stimare a priori, almeno qualitativamente, la scalabilità delle soluzioni proposte;
Capacità critiche e di giudizio: Essere in grado di valutare, anche sperimentalmente, l'efficacia, l'efficienza e la scalabilità delle soluzioni proposte Capacità comunicative: Essere in grado di descrivere in modo efficace le specifiche di un problema e di comunicare ad altri le scelte adottate e le motivazioni sottostanti a tali scelte.
Capacità di apprendimento: Il corso consentirà lo sviluppo di capacità di approfondimento autonomo su argomenti del corso o ad essi correlati. Metterà lo studente nelle condizioni di individuare e consultare in modo critico manuali avanzati o letteratura scientifica per affrontare scenari nuovi oppure per applicare tecniche alternative a scenari noti.

Codice insegnamento 1038138

DIGITAL ENTREPRENEURSHIP 2° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi Generali: L'obiettivo del corso è fornire a studenti con una formazione prevalentemente tecnologica gli strumenti principali per progettare un attività di imprendtioria digitale Obiettivi specifici Il corso…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali:
L'obiettivo del corso è fornire a studenti con una formazione prevalentemente tecnologica gli strumenti principali per progettare un attività di imprendtioria digitale
Obiettivi specifici
Il corso fornisce agli studenti le principali competenze complementari per sviluppare un progetto di imprenditoria digitale e si articola in quattro sezioni principali: 1) la formazione volta ad acquisire le metodologie e le tecniche lean per progettare. La formazione sarà ispirata ai concetti del design thinking con l'obiettivo di chiarire e valutare la fattibilità tecnica del progetto, la sostenibilità in termini di business e la desiderabilità da parte di uno specifico target di utenza. 2) Come presentare il progetto. Il pitch 3) Esperienze di successo presentate da imprenditori e/o ricercatori 4) Attività progettuali in cui gli studenti metteranno alla prova le competenze acquisite nel corso nella progettazione di un attività imprenditoriale digitale.
Conoscenza e comprensione:
Lo studente alla fine del corso conoscerà le tecniche, i processi e le metodologie princiapli per limitari i rischi connessi all'avvio di un progetto di imprenditoria digitale
Applicare conoscenza e comprensione:
Il corso è caratterizzato da un approccio sperimentale "impara facendo" ispirato alle moderne teorie del design thinking. Le competenze acquisite verranno dimostrate nella realizzazione del progetto finale.
Capacità critiche e di giudizio:
Le capacità critiche e di giudizio verranno principalmente sviluppate attraverso l'attività progettuale ed il confronto permanente all'iterno del gruppo, tra i gruppi di progetto e con gli istruttori. L'approccio lean costringerà gli studenti ad una continuo esercizio critico con l'obiettivo di analizzare incrementalmnte pregi e difetti delle soluzioni proposte uscendo fuori dalla comfort zone dell'ambito tecnologico.
Capacità comunicative:
Gli studenti dovranno essere in grado di presentare in modo conciso, ma efficace i risultati raggiunti attraverso l'esposizione di un Pitch
Capacità di apprendimento:
Il corso ha l'obiettivo di cambiare la mentalità degli studenti in modo che l'esigenza di confrontarsi col mondo esterno in modo strutturato, non limitandosi a considerare i soli aspetti di carattere tecnologico, diventi una consuetudine capace di proiettarli con maggiore consapevolezza in attività di carattere imprenditoriale.

Programma

Il programma è disponibile su https://sites.google.com/diag.uniroma1.it/digital-entrepreneurship/program e segue i llibro di testo

  • Materiale online
  • Testi di riferimento: Running Lean di Ash Marrya

Modalità d'esame

Il corso prevede una prova individuale e di gruppo come specificato in https://sites.google.com/diag.uniroma1.it/digital-entrepreneurship/exam

Testi di riferimento

Il libro di riferimento è "Running Lean, 3rd Edition by Ash Maurya"

Codice insegnamento 10596250

ECONOMICS AND COMPUTATION 2° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali: Il corso presenterà un'ampia panoramica di argomenti all’intersezione di informatica, scienza dei dati ed economia, sottolineando l’efficienza, la robustezza e le applicazioni ai mercati online…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Il corso presenterà un'ampia panoramica di argomenti all’intersezione di informatica, scienza dei dati ed economia, sottolineando l’efficienza, la robustezza e le applicazioni ai mercati online emergenti. Introdurrà i principi della teoria algoritmica dei giochi e della progettazione dei meccanismi economici, della progettazione algoritmica del mercato, nonché dell'apprendimento automatico nei giochi e nei mercati. Dimostrerà applicazioni a casi di studio nella ricerca sul Web e nella pubblicità online, nell'economia delle reti, nei dati, nelle criptovalute e nei mercati dell'intelligenza artificiale.
Obiettivi specifici: Conoscenza e comprensione: I principi algoritmici e matematici dell’economia alla base della progettazione e del funzionamento di mercati online efficienti e robusti. L'applicazione di questi principi in esempi concreti di mercati online.
Applicare conoscenza e comprensione: Essere in grado di progettare e analizzare algoritmi per concrete applicazioni dei mercati online rispetto ai requisiti di efficienza e robustezza. Capacità critiche e di giudizio: Essere in grado di valutare la qualità di un algoritmo per applicazioni nel mercato online, discriminando gli aspetti di modellizzazione da quelli legati all'implementazione algoritmica e di sistema.
Capacità comunicative: Capacità di comunicare e condividere le scelte di modellazione e i requisiti di sistema, nonché i risultati dell'analisi dell'efficienza degli algoritmi del mercato online.
Capacità di apprendimento: Il corso stimola gli studenti ad acquisire capacità di apprendimento al crocevia tra informatica, economia e applicazioni del mercato digitale, compresi i diversi linguaggi utilizzati in questi campi.

Programma

  • Properties of social networks
  • Models for social networks
  • Communities in social networks
  • Network dynamics
  • Auctions in networks
  • Markets in networks
  • https://sites.google.com/a/uniroma1.it/stefanoleonardi-eng/teaching/social-network-and-online-markets

Modalità d'esame

Homeworks and/or project and oral exam or written exam

Testi di riferimento

Twenty Lectures on Algorithmic Game Theory by Tim Roughgarden

Codice insegnamento 10616532

FORMAL METHODS 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali: L'obiettivo del corso è lo studio e l'approfondimento della qualità più importante del software: la correttezza. Lo studio della correttezza verrà affrontato con riferimento ad aspetti concettuali e…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:
L'obiettivo del corso è lo studio e l'approfondimento della qualità più importante del software: la correttezza. Lo studio della correttezza verrà affrontato con riferimento ad aspetti concettuali e realizzativi affrontando la modellazione e la verifica sia di aspetti statici che di aspetti dinamici. Gli argomenti vengono trattati dando enfasi ad aspetti metodologici e ad aspetti sperimentali utilizzando varie forme di logica (logica del prim'ordine, logiche dinamiche e logiche temporali) e vari strumenti per la verifica automatica. Risultati di apprendimento attesi: Alla fine del corso lo studente dovrebbe avere acquisito tecniche e metodi per la dimostrazione della correttezza dei programmi e degli schemi concettuali.
Obiettivi specifici:
Conoscenza e comprensione: I principali fondamentali dei metodi formali. L'uso di specifiche rigorose e formali e la loro verifica. Principi fondanti della logica per l'informatica, verifica formale di proprieta' dei dati e dei processi.
Applicare conoscenza e comprensione: Essere in grado di affrontare l'analisi di correttezza di programmi attraverso metodi rigorosi e formali, sia relativamente ad aspetti relativi ai dati che ai processi.
Capacità critiche e di giudizio: Essere in grado di valutare il rigore di una data argomentazione di correttezza dei programmi. Orientarsi nella scelta degli strumenti concettuali forniti dalla logica e i metodi formali per la verifica di proprieta' sia statiche che dinamiche.
Capacità comunicative: Le attività di gruppo in classe e le esercitazioni del corso permettono allo studente di essere in grado di comunicare/condividere le conoscenze acquisite e confrontarsi con gli altri sui temi del corso.
Capacità di apprendimento: Oltre alle classiche capacità di apprendimento fornite dallo studio teorico del materiale didattico, le modalità di svolgimento del corso, stimolano lo studente all'approfondimento autonomo di alcuni argomenti presentati nel corso, al lavoro di gruppo, e all'applicazione concreta delle nozioni e delle tecniche apprese durante il corso.

Programma

Introduzione. Introduzione ai metodi formali, garanzie formali, revisione della logica proposizionale e della logica del primo ordine, verifica del modello/interrogazione e ragionamento (soddisfacibilità, validità e implicazione logica). Tableau per la logica proposizionale e del primo ordine.

Analisi e verifica degli aspetti statici. Sintassi e semantica dei diagrammi concettuali basati su classi come i diagrammi delle classi UML e i diagrammi entità-relazioni. Verifica delle proprietà statiche. Uso della logica del primo ordine per il ragionamento automatizzato su tali diagrammi. Chase per dipendenze complete per completare le istanze dei diagrammi delle classi UML.

Semantica operazionale astratta e correttezza parziale. Semantica operazionale astratta per i programmi: semantica di valutazione (calcolo completo) e semantica di transizione (singolo passo del calcolo). Logiche di Hoare, precondizione più debole, invarianti dei programmi. Correttezza parziale, correttezza totale.

Sistema di transizione e punti fissi. Programmi reattivi/interattivi (stato finito), sistemi di transizione, raggiungibilità, bisimulazione. Punti fissi, teorema di Knaster-Tarski sui punti fissi minimi e massimi, approssimazioni per i punti fissi minimi e massimi.

Verifica di sistemi dinamici. Verifica delle proprietà dinamiche e temporali sui sistemi di transizione: Safeness, Liveness, Fairness, Strong Fairness. Logica temporale per la verifica: LTL, CTL, CTL*, mu-calcolo. Verifica del modello per mu-calcolo. Verifica del modello per CTL tramite traduzione in μ-calcolo. Verifica del modello per LTL tramite automi. Soddisfacibilità LTL tramite Tableau.

Focalizzarsi su tracce finite. Automi regolari, logiche temporali lineari su tracce finite, LTLf, LDLf, Pure Past LTL,, connessioni agli automi, calcolo degli DFA, manipolazione di DFA, ragionamento su tracce finite.

Sintesi reattiva. Sintesi automatizzata dei programmi, sintesi da specifiche in logica temporale lineare su tracce finite, game-theoretic view, arena e obiettivo, adversarial reachability.

  • Introduzione. Introduzione ai metodi formali, garanzie formali, revisione della logica proposizionale e della logica del primo ordine, verifica del modello/interrogazione e ragionamento (soddisfacibilità, validità e implicazione logica). Tableau per la logica proposizionale e del primo ordine.Analisi e verifica degli aspetti statici. Sintassi e semantica dei diagrammi concettuali basati su classi come i diagrammi delle classi UML e i diagrammi entità-relazioni. Verifica delle proprietà statiche. Uso della logica del primo ordine per il ragionamento automatizzato su tali diagrammi. Chase per dipendenze complete per completare le istanze dei diagrammi delle classi UML.Semantica operazionale astratta e correttezza parziale. Semantica operazionale astratta per i programmi: semantica di valutazione (calcolo completo) e semantica di transizione (singolo passo del calcolo). Logiche di Hoare, precondizione più debole, invarianti dei programmi. Correttezza parziale, correttezza totale.Sistema di transizione e punti fissi. Programmi reattivi/interattivi (stato finito), sistemi di transizione, raggiungibilità, bisimulazione. Punti fissi, teorema di Knaster-Tarski sui punti fissi minimi e massimi, approssimazioni per i punti fissi minimi e massimi.Verifica di sistemi dinamici. Verifica delle proprietà dinamiche e temporali sui sistemi di transizione: Safeness, Liveness, Fairness, Strong Fairness. Logica temporale per la verifica: LTL, CTL, CTL*, mu-calcolo. Verifica del modello per mu-calcolo. Verifica del modello per CTL tramite traduzione in μ-calcolo. Verifica del modello per LTL tramite automi. Soddisfacibilità LTL tramite Tableau.Focalizzarsi su tracce finite. Automi regolari, logiche temporali lineari su tracce finite, LTLf, LDLf, Pure Past LTL,, connessioni agli automi, calcolo degli DFA, manipolazione di DFA, ragionamento su tracce finite. Sintesi reattiva. Sintesi automatizzata dei programmi, sintesi da specifiche in logica temporale lineare su tracce finite, game-theoretic view, arena e obiettivo, adversarial reachability.
  • Testi di riferimento: Slides del corso

Modalità d'esame

Prova scritta con esercizi su tutti gli argomenti del programma del corso.

Testi di riferimento

Slide del corso 2025/2026 e materiale addizionale disponibili sulla pagina web del corso.

Codice insegnamento 1038133

GRAPH MINING AND APPLICATIONS 2° anno · 2° semestre · 6 CFU · IINF-05/A · 0 file

Il corso presenterà modelli e algoritmi per l'analisi di grafi con applicazioni in vari ambiti. L'obiettivo alla fine del corso è che gli studenti conoscano algoritmi e framework che possano consentire loro di analizzare…

Scheda dell'insegnamento

Obiettivi formativi

Il corso presenterà modelli e algoritmi per l'analisi di grafi con applicazioni in vari ambiti. L'obiettivo alla fine del corso è che gli studenti conoscano algoritmi e framework che possano consentire loro di analizzare dati grafici di grandi dimensioni.

Programma

The course will include some of the following topics:

  • Theoretical algorithms for graph modeling and analysis:

◦ Real graph properties and models (Gnp, preferential attachment, Kleinberg’s reachability)

◦ Models for propagation (linear threshold, cascade) and for opinion formation

◦ Homophily and influence and algorithms for identifying and distinguishing

◦ Influence maximization

◦ Algorithms for graph alignment

◦ Dense subgraphs, community detection, graph minors

◦ Graph summarization and sampling

  • Machine-learning approaches:

◦ Label propagation

◦ Graph transformers

◦ Knowledge-graph emdeddings

◦ Models for analysis of temporal graphs

◦ Explainability

  • Architectures for handling large graph data:

◦ Spark GraphsX

◦ AWS Neptune

◦ AWS GraphStorm

◦ Neo4J

Modalità d'esame

The evaluation will include one or more of the following:

  • homework problems
  • presentations
  • project

Testi di riferimento

We will use some book chapters and current research publications.

Codice insegnamento 10616533

INFORMATION TECHNOLOGIES FOR SMART MANUFACTURING 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi Generali. - Conoscenza dei principali scenari applicativi di interesse per le tecnologie di Smart Manufacturing; - Conoscenza delle tecnologie impiegate in ambito Smart Manufacturing comprese quelle per: (a)…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali. - Conoscenza dei principali scenari applicativi di interesse per le tecnologie di Smart Manufacturing; - Conoscenza delle tecnologie impiegate in ambito Smart Manufacturing comprese quelle per: (a) programmazione a basso livello dei macchinari, (b) trasmissione di dati su reti industriali, (c) sviluppo di soluzioni di Intelligenza Artificiale (Computer Vision, Symbolic Artificial Intelligence, Machine and Deep Learning); - Capacità di progettare e sviluppare soluzioni pratiche in ambito Smart Manufacturing; - Comprendere l'integrazione dei sistemi di smart manufacturing nel moderno Big Data Continuum; - Comprendere lo stack tecnologico utilizzato in ambito industriale e la necessità di integrarlo in soluzioni di più alto livello;
Obiettivi specifici. Capacità di: - individuare le tecniche più adatte per sviluppare una soluzione di smart manufacturing che soddisfi un bisogno industriale; - implementare la soluzione proposta, individuando gli strumenti più adatti a raggiungere lo scopo tra quelli disponibili; - progettare e realizzare scenari sperimentali per valutare le soluzioni proposte in condizioni realistiche;
Conoscenza e comprensione: - conoscenza dei principali scenari applicativi; - conoscenza delle principali tecniche di analisi; - comprensione dei presupposti teorici e metodologici alla base delle tecniche principali - conoscenza e comprensione delle principali tecniche e indici di valutazione delle prestazioni
Applicare conoscenza e comprensione: - essere in grado di tradurre esigenze applicative in problemi concreti di smart manufacturing; - essere in grado di individuare le tecniche e gli strumenti più adatti alla soluzione dei problemi concreti di cui sopra; - essere in grado di stimare a priori, almeno qualitativamente, la scalabilità delle soluzioni proposte;
Capacità critiche e di giudizio: Essere in grado di valutare, anche sperimentalmente, l'efficacia, l'efficienza e la scalabilità delle soluzioni proposte
Capacità comunicative: Essere in grado di descrivere in modo efficace le specifiche di un problema e di comunicare ad altri le scelte adottate e le motivazioni sottostanti a tali scelte.
Capacità di apprendimento: Il corso consentirà lo sviluppo di capacità di approfondimento autonomo su argomenti del corso o ad essi correlati. Metterà lo studente nelle condizioni di individuare e consultare in modo critico manuali avanzati o letteratura scientifica per affrontare scenari nuovi oppure per applicare tecniche alternative a scenari noti.

Codice insegnamento 10616534

KNOWLEDGE REPRESENTATION AND SEMANTIC TECHNOLOGIES 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali: Conoscere i linguaggi di riferimento delle tecnologie semantiche attuali, in particolare le famiglie dei linguaggi di rappresentazione della conoscenza basate sul concetto di classe (class-based) e…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali:
Conoscere i linguaggi di riferimento delle tecnologie semantiche attuali, in particolare le famiglie dei linguaggi di rappresentazione della conoscenza basate sul concetto di classe (class-based) e sul concetto di regola (rule-based), e le principali tecniche di ragionamento per tali linguaggi. Conoscere le tecnologie semantiche standard basate su tali formalismi di rappresentazione della conoscenza, in particolare i linguaggi RDF e OWL, con l'obiettivo di progettare e gestire una base di conoscenza ontologica. Conoscere gli elementi di base della rappresentazione di azioni e ragionamento su azioni.
Obiettivi specifici:
Conoscenza e comprensione: Le logiche descrittive, i principali formalismi per la rappresentazione della conoscenza basati sul concetto di classe, e i linguaggi basati su regole, con particolare riferimento a Datalog e alcune sue estensioni. I principali standard Web per le tecnologie semantiche, in particolare i linguaggi RDF, SPARQL e OWL.
Applicare conoscenza e comprensione: Essere in grado di progettare una base di conoscenza, scegliendo il formalismo e le tecnologie di gestione più appropriati per il contesto applicativo in esame.
Capacità critiche e di giudizio: Essere in grado di valutare gli aspetti semantici salienti di una base di conoscenza e di una applicazione basata sulla conoscenza. Essere in grado di scegliere la migliore tecnologia disponibile per il processamento di una base di conoscenza.
Capacità comunicative: Le attività progettuali e le esercitazioni del corso permettono allo studente di essere in grado di comunicare e condividere i requisiti di una applicazione che richiede la costruzione e la gestione di una base di conoscenza e/o l'uso delle tecnologie semantiche standard.
Capacità di apprendimento: Oltre alle classiche capacità di apprendimento fornite dallo studio teorico del materiale didattico, le modalità di svolgimento del corso, in particolare le attività progettuali, stimolano lo studente all'approfondimento autonomo di alcuni argomenti presentati nel corso, al lavoro di gruppo, e all'applicazione concreta delle nozioni e delle tecniche apprese durante il corso.

Programma

1 - Introduction to knowledge representation

2 - Class-based formalisms

Description Logics

Reasoning in Description Logics

Description Logics vs. relational databases

3 - Rule-based formalisms

Brief introduction to logic programming

Datalog

Reasoning in Datalog

Datalog vs. Description Logics

Datalog extensions

Datalog with negation

Answer Set Programming (ASP)

Reasoning in ASP

Comparison with SQL

4 - Semantic technologies

Semantic Web

RDF, RDFS, SPARQL

Linked data

Ontologies

OWL

OWL profiles

Reasoning in OWL profiles

5 - Knowledge representation and Deep Learning

Deep Learning and Large Language Models

Knowledge graph embedding

The role of Knowledge Representation and Reasoning in Large Language Models

  • Rappresentazione della conoscenza in Intelligenza Artificiale
  • Rappresentazione della conoscenza basata sulla logica
  • Rappresentazione della conoscenza e ragionamento basati su classi
  • Rappresentazione della conoscenza e ragionamento basati su regole
  • RDF, SPARQL, OWL
  • Rappresentazione della conoscenza nell'apprendimento automatico

Modalità d'esame

L'esame consiste in una prova scritta e un progetto pratico.

Testi di riferimento

Dispense distribuite dal docente.

Codice insegnamento 1041706

LARGE-SCALE DATA MANAGEMENT 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali: L'obiettivo del corso è di comunicare agli studenti i concetti di base della gestione dei sistemi informativi a larga scala. Verranno esaminati in dettaglio due argomenti specifici, vale a dire i…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: L'obiettivo del corso è di comunicare agli studenti i concetti di base della gestione dei sistemi informativi a larga scala. Verranno esaminati in dettaglio due argomenti specifici, vale a dire i modelli informativi per la gestione dei Big Data e l'integrazione delle informazioni. Entrambi gli argomenti sono estremamente rilevanti nella società basata sui dati, in cui praticamente tutti i sistemi informativi di organizzazioni di dimensioni ragionevoli devono sia gestire grandi set di dati sia interagire con diverse fonti di dati.
Obiettivi specifici: Studiare i modelli di dati utilizzati nella gestione di Big Data, in particolare i modelli di dati NoSQL, che includono i modelli di dati basati su colonne, su coppie chiave-valore e su documenti, e acquisire familiarità con le nozioni e le tecniche per l'integrazione delle informazioni.
Conoscenza e comprensione: Dopo il corso lo studente avrà una buona conoscenza delle differenze e delle somiglianze tra il modello relazionale e le varie classi di modelli di dati NoSQL. Inoltre, gli studenti capiranno le questioni teoriche relative all'integrazione e allo scambio dei dati e avranno una buona conoscenza delle varie architetture dei sistemi di integrazione delle informazioni.
Applicare conoscenza e comprensione: Gli studenti saranno in grado di progettare il proprio repository Big Data utilizzando uno dei modelli di dati adottati nella pratica, di scegliere un'architettura appropriata per l'integrazione delle informazioni e di costruire e mantenere un sistema di integrazione delle informazioni strutturato in base all'architettura scelta.
Capacità critiche e di giudizio: Lo studente sarà in grado di valutare i requisiti per un sistema di gestione di Big Data e sarà in grado di scegliere il giusto modello di dati e l'infrastruttura adeguata. Analogamente, lo studente sarà in grado di comprendere i requisiti per uno specifico sistema di integrazione delle informazioni e scegliere gli approcci e le tecniche appropriate per la progettazione di una soluzione di alta qualità.
Capacità comunicativa: Gli studenti acquisiranno una buona conoscenza su come illustrare i risultati di un processo di progettazione, sia nel contesto della gestione dei Big Data, sia nel contesto dei sistemi di integrazione delle informazioni.
Capacità di apprendimento: Lo studente sarà in grado di comprendere qualsiasi nuova architettura e approccio alla gestione dei Big Data e all'integrazione delle informazioni che diventeranno popolari in futuro.

Programma

Big Data Management:

---------------------------

  • Introduzione ai Big Data
  • Database Aggregati: Modelli di dati aggregati per NoSQL: Key-value, document, column-family; Modellazione dei dati; Modelli Distribuiti;
  • Consistenza: consistenza in lettura ed in aggiornamento; il CAP Theorem; il framework Map Reduce.
  • Document-based Data models: MongoDB
  • Hadoop and its Ecosystem; Hive; Data Lakes.
  • RDFS; SPARQL; Linked Open Data; Ontology-based Data Access

Information Integration:

----------------------------

  • Architetture per l'integrazione dell'informazione
  • Gestione distribuita dei dati
  • Data federation
  • Data exchange and data warehousing
  • ETL (Extraction, Transformation and Loading), pulizia e riconciliazione dei dati
  • Data integration
  • Ontology-based data integration

Modalità d'esame

L'esame prevede lo sviluppo di un piccolo progetto sia relativamente alla parte di Big Data, sia relativamente alla parte di Information Integration. Il progetto è incentrato sulla dimostrazione di un tool per la gestione di dati in ambito DataWarehousing, di modelli dati NoSQL e, per la parte di Information Integration, sulla dimostrazione di un tool per data integration o data federation. È anche accettabile lo sviluppo di una applicazione di esempio che faccia uso di questi tool. Il progetto viene presentato al docente con l'ausilio di slide. Oltre al progetto, lo studente sostiene una prova orale sugli argomenti del corso.

Testi di riferimento

Appunti e Lucidi preparati dai docenti

NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence.

Pramod J. Sadalage, Martin Fowler. Addison-Wesley. 2014.

Codice insegnamento 1044408

MALWARE ANALYSIS 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi Generali. Gli odierni scenari legati alla cyber security ci testimoniano la sempre più pervasiva presenza di software malevolo utilizzato per perpetrare attacchi informatici. Il corso si propone di fornire agli…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali. Gli odierni scenari legati alla cyber security ci testimoniano la sempre più pervasiva presenza di software malevolo utilizzato per perpetrare attacchi informatici. Il corso si propone di fornire agli studenti le conoscenze, i metodi e gli strumenti di base per analizzare, identificare, categorizzare e comprendere il comportamento dei software malevoli. Il corso adotterà un approccio pratico, con una importante componente di applicazione a casi reali.
Obiettivi Specifici. Conoscenza e comprensione: Conoscenza di caratteristiche e funzionalità distintive del software malevolo.
Applicare conoscenza e comprensione: Capacità di analizzare staticamente e dinamicamente una istanza di software untrusted potenzialmente malevolo. Capacità applicata di individuare e di valutare differenti funzionalità di una istanza di software untrusted tramite metodi e strumenti di reverse-engineering.
Capacità critiche e di giudizio: Capacità di interpretare in chiave potenzialmente malevola le risultanze delle attività di analisi e di reverse engineering di un software untrusted.
Capacità comunicative: Essere in grado di esporre i risultati dell’analisi tecnica in forma di un report nello spirito di quanto realizzano i professionisti del settore.
Capacità di apprendimento: Le modalità di svolgimento del corso stimolano lo studente all’approfondimento autonomo delle metodologie esposte nelle lezioni teoriche e pratiche verticali su ciascun tema. Le applicherà a istanze complesse di software che esercitano una pluralità di tecniche e funzionalità.

Codice insegnamento 10600447

MOBILE, EDGE AND CLOUD COMPUTING 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi Generali. Il corso approfondisce l'integrazione tra mobile computing edge computing e cloud computing, con aspetti architetturali e software per la realizzazione di sistemi distribuiti moderni, scalabili e…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali.
Il corso approfondisce l'integrazione tra mobile computing edge computing e cloud computing, con aspetti architetturali e software per la realizzazione di sistemi distribuiti moderni, scalabili e adattativi, includendo lo sviluppo di applicazioni mobili che sfruttano feature come i sensori dei dispositivi mobili e integrano moderne librerie di Machine Learning e servizi cloud. Inoltre, il corso analizza tecniche di bilanciamento del carico, offloading e ottimizzazione delle risorse, e la gestione dei carichi di lavoro in scenari distribuiti.
Obiettivi Specifici.
Conoscenza e capacità di comprensione: Il corso mira a fornire le conoscenze necessarie per comprendere: (i) le specificità delle app mobili rispetto alle app desktop; (ii) i principali pattern di progettazione per le app mobili; (iii) le principali problematiche legate alla sicurezza delle applicazioni per dispositivi mobili; (iv) l’utilizzo dei principali servizi cloud di backend e del paradigma di edge/fog computing; (v) le metodologie di progettazione e sviluppo di semplici servizi di backend dispiegati su piattaforme cloud o edge; (vi) la classificazione dei modelli di servizio cloud.
Capacità di applicare conoscenza e comprensione: Lo studente sarà in grado di progettare, sviluppare e testare applicazioni native per il sistema operativo Android che interagiscono con servizi cloud, utilizzando i principali strumenti ufficiali di sviluppo, progettazione e testing. Inoltre, dovrà essere in grado di progettare, sviluppare e testare semplici servizi backend da dispiegare su piattaforme cloud o edge a supporto delle applicazioni mobili.
Autonomia di giudizio: In base alle competenze acquisite, lo studente dovrà essere in grado di valutare i vantaggi gli svantaggi delle tecnologie con cui è possibile sviluppare app (applicazioni native, ibride e web based), valutare/ scegliere in modo ottimale e critico le funzionalità di supporto cloud per il funzionamento di applicazioni mobili; giudicare la fattibilità, complessità e le implicazioni di nuove possibili applicazioni, anche indicate da terzi. Inoltre, dovrà essere in grado di aggiornarsi autonomamente in base alle possibili future tecnologie relative ad app mobili o servizi cloud.
Abilità comunicative: Lo studente dovrà essere in grado di motivare le scelte tecnologiche, metodologiche ed architetturali ad altre persone del settore, nonché di presentare, anche a persone non esperte, il funzionamento e le caratteristiche di possibili nuove applicazioni
Capacità di apprendimento: Per stimolare la capacità di apprendimento verranno effettuati esercitazioni pratiche sui diversi argomenti trattati e verrà richiesto di usare criticamente informazioni disponibili per specifici problemi su varie piattaforme di discussione (es. Stack Overflow, siti ufficiali, blog, etc.)

Codice insegnamento 10620854

MULTILINGUAL NATURAL LANGUAGE PROCESSING 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi Generali Lo scopo del corso è quello di fornire una panoramica sulle tecniche più avanzate di elaborazione del linguaggio naturale e le loro applicazioni. Obiettivi Specifici Gli studenti impareranno i principi…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali Lo scopo del corso è quello di fornire una panoramica sulle tecniche più avanzate di elaborazione del linguaggio naturale e le loro applicazioni.
Obiettivi Specifici Gli studenti impareranno i principi del trattamento automatico delle lingue, comprendendo come le macchine possono interpretare, generare e rispondere al linguaggio umano. Questo include temi come la rappresentazione delle parole, i word e i sense embedding, le architetture neurali per l'NLP, la traduzione automatica, e più in generale la generazione di testo.
Conoscenza e Comprensione -) Conoscenza delle architetture di reti neurali, come le reti neurali ricorrenti e i Transformer, utilizzate per l'elaborazione del linguaggio naturale. -) Conoscenza dei metodi di apprendimento supervisionato e non supervisionato in NLP. -) Conoscenza delle tecniche di semantica computazionale lessicale e frasale. -) Comprensione dei modelli di linguaggio per interpretare e generare testo.
Applicazione di Conoscenza e Comprensione -) Come sviluppare modelli per la comprensione del linguaggio -) Come sviluppare modelli per la generazione del linguaggio -) Come utilizzare le architetture neurali per l'NLP
Autonomia di Giudizio Gli studenti saranno in grado di valutare l'efficacia delle tecniche di NLP nelle diverse applicazioni.
Abilità Comunicative Gli studenti saranno in grado di spiegare i principi e le tecniche di elaborazione del linguaggio naturale.
Capacità di Apprendimento Successivo Gli studenti interessati alla ricerca scopriranno quali sono le principali sfide aperte nell'area dell'NLP, ottenendo le basi necessarie per studi più approfonditi in materia.

Programma

Introduction to Natural Language Processing

N-gram language models; smoothing; interpolation; backoff

Deep learning for NLP

Introduction to PyTorch and PyTorch Lightning

Monolingual and multilingual word embeddings, sense and concept embeddings

Neural language models: recurrent e Transformer-based (BERT, XLM-RoBERTa, GPT-x, etc.)

Large Language Model: pretraining e finetuning

Computational lexical semantics

Computational lexicons: WordNet

Multilingual semantic networks: BabelNet

Word embeddings vs. contextualized word embeddings vs. sense embeddings

Word Sense Disambiguation and Entity Linking

Multilinguality in Natural Language Processing

Computational sentence-level semantics

Neural Semantic Role Labeling and Semantic Parsing

Natural Language Generation and Question Answering

Neural Machine Translation

Modalità d'esame

Invio di homework + presentazione orale degli stessi.

Testi di riferimento

Jurafsky and Martin. Speech and Language Processing, Prentice Hall, third edition.

Codice insegnamento 10606869

NETWORK INFRASTRUCTURES 2° anno · 1° semestre · 6 CFU · IINF-03/A · 0 file

Obiettivi Generali: Il corso presenta i concetti di base, i protocolli e le architetture delle attuali infrastrutture di rete. Particolare attenzione è dedicata alla rete di accesso a larga banda larga e alle reti…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali: Il corso presenta i concetti di base, i protocolli e le architetture delle attuali infrastrutture di rete. Particolare attenzione è dedicata alla rete di accesso a larga banda larga e alle reti wireless di nuova generazione. Verranno trattate tecnologie quali l’ xDSL, PON, LTE, 5G, SDH, OTN, SDN. Inoltre si presenterà come configurare ed analizzare reti IP e relativi protocolli a vari livelli (di rete ed applicativi) mediante la piattaforma Netkit. Aspetti specifici su Netkit riguarderanno: l’istradamento dinamico, il DNS, l’SSH, le VPN, Firewall e aspetti di sicurezza.
Obiettivi specifici:
A) Conoscenza e capacità di comprensione - Conoscenze sulle principali infrastrutture di rete sia cablate (in rame ed in fibra) che in tecnologie wireless. Capacità di comprensione dei requisiti per la pianificazione di una infrastruttura di rete per servizi digitali di nuova generazione con enfasi sulla qualità di servizio e sicurezza.
B) Capacità di applicare conoscenza e comprensione - Essere in grado di risolvere problemi di pianificazione ed analisi di infrastrutture digitali e relativi requisiti, inseriti in contesti applicativi differenti (larga banda, wireless LTE e 5G, Software Defined Networks e IoT).
C) Autonomia di giudizio -Essere in grado, integrando le conoscenze a livello di rete e applicative, di capire la complessità di una infrastruttura di rete e il tipo di servizio che questa puo’ offrire; essere in grado di analizzare il funzionamento e le prestazioni di differenti protocolli di rete.
D) Abilità comunicative - Le attività progettuali e le esercitazioni di laboratorio del corso permettono allo studente di essere in grado di discutere casi d’uso di piattaforme di rete in contesi applicativi differenti e di presentarne le potenzialità, i limiti e le prestazioni.
E) Capacità di apprendimento - Le attività progettuali ed il laboratorio netkit stimolano lo studente all'approfondimento autonomo di alcuni argomenti presentati nel corso, al lavoro di gruppo, e all'applicazione concreta delle nozioni e delle tecniche di rete apprese durante il corso.

Programma

Introduzione alle infrastrutture di rete

  • Introduzione alle architetture delle reti, descrizione delle aree funzionali [2h].
  • Presentazione delle differenti metodologie di accesso cablate e wireless, terrestri e non terrestri [2h].

Accesso alla rete cablato e wireless

  • Reti di accesso in rame a banda larga [3h]
  • ADSL e VDSL, soluzioni di networking [5h]
  • Accesso basato su fibra: FTTX e PON e relative evoluzioni [3h]
  • Reti wireless Multihop/3G/4G [2h]
  • Reti wireless non terrestri [2h]
  • La famiglia Wi-xx [2h]
  • Sistemi 4G: LTE e LTE-A [5h]
  • Evoluzione 5G [1h]

Trasporto in rete e controllo di rete

  • Introduzione alle reti ottiche [5h]
  • Optical Transport Network [2h]
  • Management e Control di reti WDM [5h]
  • Multi Protocol Label Switching [5h]
  • Architetture per la Quality of Service [5h]
  • Inter Domain Routing e Border Gateway Protocol [3h]

Esercitazioni su configurazioni di rete su Kathara

  • IP addressing [2h]
  • IP routing [2h]
  • DNS [2h]
  • VPN [2h]
  • Firewall [2h]

Modalità d'esame

L'esame e' diviso in due parti: PARTE 1) parte pratica su kathara (da svolgere al PC, vale max 22 punti), avente la finalità di verificare la capacità dello studente di configurare correttamente gli apparati di rete; PARTE 2) parte teorica (2 domande di teoria a risposta aperta, valgono max 10 punti), volta a valutare l'apprendimento degli aspetti teorici presentati durante il corso. Durante il semestre la parte pratica su kathara viene svolta attraverso degli homework valutati durante i corso.

Durante il semestre verranno anche svolte due prove in itinere come test che danno diritto a dei punti bonus.

Gli homework ed eventuali punti bonus presi durante il corso saranno spendibili solo negli appelli di Gennaio/Febbraio.

A partire da Marzo l'esame si svolgerà svolgendo interamente la PARTE 1) e la PARTE 2) in aula durante l’appello.

Testi di riferimento

Lucidi del corso e articoli disponibili sul sito web del corso e sulla piattaforma Moodle

Lucidi del corso e articoli disponibili sul sito web del corso e sulla piattaforma Moodle

Codice insegnamento 1027171

NEURAL NETWORKS 2° anno · 1° semestre · 6 CFU · IIET-01/A · 0 file

Obiettivi generali: Il corso è una overview generale sulle reti neurali, sia dal punto di vista metodologico che pratico. Gli studenti acquisiranno una forte competenza teorica e pratica su come le reti neurali…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Il corso è una overview generale sulle reti neurali, sia dal punto di vista metodologico che pratico. Gli studenti acquisiranno una forte competenza teorica e pratica su come le reti neurali funzionano e sono implementate, con particolare attenzione sui componenti più usati, e sulle attuali limitazioni.
Obiettivi specifici: Dal punto di vista teorico, rivedremo il paradigma generale per la costruzione di modelli differenziabili che possono essere ottimizzati end-to-end con la discesa al gradiente. Successivamente, esamineremo i componenti essenziali per progettare architetture in grado di lavorare su immagini (convoluzioni), sequenze (recurrent layer) ed insiemi (transformers). L'ultima parte del corso si concentrerà su una selezione di importanti argomenti di ricerca, tra cui le reti neurali su grafi, l'apprendimento continuo e i modelli generativi.
Conoscenza e comprensione: Alla fine del corso, lo studente avrà una ottima conoscenza di come le reti neurali funzionano in pratica, con la capacità di implementare nuovi componenti da zero, riutilizzare modelli esistenti o progettare nuove architetture per problemi al di là della panoramica del corso.
Abilità critiche e di giudizio: Ci si aspetta che lo studente sia in grado di analizzare un nuovo problema che richiede l'apprendimento automatico e progettare la soluzione appropriata basata su una rete neurale, comprendendone sia i punti di forza che i limiti.
Abilità comunicative: Il corso favorirà le abilità comunicative in termini di capacità di descrivere (in modo tecnico e non tecnico) la matematica alla base dei modelli, nonché di scrivere codice chiaro e comprensibile per la loro implementazione.
Abilità di apprendimento: Al di là degli argomenti del corso, lo studente sarà in grado di studiare autonomamente nuovi argomenti di ricerca e di navigare la letteratura scientifica, oltre a saper comprendere punti di forza e debolezze delle attuali librerie software.

Programma

La prima parte del corso si focalizzerà su alcuni argomenti di base, che includono:

  • Introduzione al corso (obiettivi, testi, esame)
  • Preliminari: algebra lineare per reti neurali, regressione e classificazione lineare, reti neurali fully-connected, differenziazione automatica di programmi (forward e backward, prodotti Jacobiani-vettori, checkpointing)
  • Reti neurali convolutive
  • Progettare reti neurali convolutive moderne
  • Modelli basati sull'attenzione per sequenze, multi-head attention, embedding posizionali
  • Modelli ricorrenti per sequenze di lunghezza variabile

La seconda parte del corso si focalizzerà su alcuni argomenti di ricerca a vari livelli di complessità ed approfondimento:

  • Graph neural network
  • Continual learning
  • Modelli generativi
  • Self-supervised models

Il corso include anche diverse lezioni pratiche che spaziano da PyTorch a JAX.

Modalità d'esame

Il corso include uno o più homework (di complessità variabile), di modo che gli studenti possano auto-valutare le proprie conoscenze. L'esame è diviso in un progetto pratico (che richiede la parziale re-implementazione di un articolo scientifico recente), ed una valutazione orale.

Testi di riferimento

Dive Into Deep Learning (https://d2l.ai/), disponibile online. Inoltre, verrano usate le slide ed il materiale condiviso sul sito del corso.

Codice insegnamento 1022870

PLANNING AND REASONING 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Questo corso introduce i concetti relativi alla pianificazione automatica e ai meccanismi di ragionamento logico dell'intelligenza artificiale. Lo scopo del corso e' quello di permettere allo studente di usare i…

Scheda dell'insegnamento

Obiettivi formativi

Questo corso introduce i concetti relativi alla pianificazione automatica e ai meccanismi di ragionamento logico dell'intelligenza artificiale. Lo scopo del corso e' quello di permettere allo studente di usare i sistemi esistenti di pianificazione automatica e di capire i loro meccanismi interni, in modo da poterli sfruttare nel modo migliore ed eventualmente estendere a fronte di problemi specifici. Inoltre, lo studente verrà messo in condizione di comprendere i fondamenti teorici alla base dei meccanismi di ragionamento logico usati in intelligenza artificiale.

Codice insegnamento 1052222

PROCESS MANAGEMENT AND MINING 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi generali. La corretta gestione dei processi rappresenta un elemento fondamentale per rendere le organizzazioni moderne più efficienti ed efficaci nella gestione del loro business. A tal scopo, questo corso…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali. La corretta gestione dei processi rappresenta un elemento fondamentale per rendere le organizzazioni moderne più efficienti ed efficaci nella gestione del loro business. A tal scopo, questo corso introduce linguaggi, principi e metodi per la modellazione, l'analisi, l'innovazione ed il monitoraggio dei processi.
Il corso enfatizza il ruolo della modellazione concettuale (business process modeling) come strumento necessario per comprendere ed analizzare i processi di interesse in sistemi informativi di varia natura. Gli studenti del corso apprenderanno la modellazione dei processi attraverso lo standard internazionale BPMN (Business Process Model and Notation).
Il corso si focalizzerà sulla modellazione di processi di singole organizzazioni (orchestrazioni di processo) e processi che coinvolgono l'interazione fra organizzazioni multiple (coreografie di processo), investigando le tecniche formali necessarie per l'analisi e l'innovazione di tali processi.
Il corso fornirà inoltre le conoscenze di base per la progettazione, l'implementazione ed il monitoraggio di processi eseguibili con un sistema informativo aziendale.
Infine, il corso presenterà tecniche e strumenti per l'utilizzo delle recenti tecniche di process mining, che consentono la costruzione di modelli di processo (la cui struttura non è nota a priori) partendo dai log che memorizzano gli eventi concreti eseguiti dal processo reale.
Obiettivi specifici. Conoscenza e comprensione: Al termine del corso gli studenti: - apprendono i principali metodi per condurre un progetto di BPM (Business Process Management); - sono in grado di modellare un processo con lo standard BPMN; - sono in grado di implementare ed eseguire un processo utilizzando un sistema informativo reale; - conoscono gli algoritmi e le tecniche di process mining.
Applicare conoscenza e comprensione: Gli studenti sono in grado di utilizzare gli strumenti metodologici e tecnologici adeguati per: (i) modellare un processo in BPMN; (ii) analizzarlo con tecniche quantitative; (iii) eseguirlo e monitorarlo con un sistema informativo.
Capacità critiche e di giudizio: Lo studente acquisice autonomia di giudizio nel proporre l’approccio più opportuno per realizzare un progetto di BPM.
Capacità comunicative: Le attività progettuali e le lezioni del corso permettono allo studente di essere in grado di comunicare/condividere le scelte progettuali e le metodologie di progettazione e sviluppo di un processo di business.
Capacità di apprendimento: Oltre alle classiche capacità di apprendimento fornite dallo studio teorico del materiale didattico, le modalità di svolgimento del corso, in particolare le attività progettuali, stimolano lo studente all'approfondimento autonomo di alcuni argomenti presentati nel corso, al lavoro di gruppo, e all'applicazione concreta delle nozioni e delle tecniche apprese durante il corso.

Programma

  • Gestione dei processi aziendali
  • Identificazione dei processi aziendali
  • Progettazione di processi di business
  • Modellazione dei processi con lo standard BPMN
  • Analisi quantitativa e qualitativa dei processi di business
  • Simulazione di processi
  • Ri-progettazione di processi (da processi AS-IS a TO-BE)
  • Automazione ed Esecuzione di Processi
  • Sistemi Informativi per la gestione e l'esecuzione dei processi di business
  • Robotic Process Automation
  • Process Mining
  • Dettagli sulla pagina web del corso: https://elearning.uniroma1.it/course/view.php?id=20065

Modalità d'esame

(1) Un esame scritto comprendente una lista di esercizi e domande relativi agli argomenti trattati nel corso.

(2) Un progetto pratico da tenersi in gruppi di 2-4 studenti

  • Il progetto deve coprire le fasi di process modeling/simulation/automation/execution/mining
  • I progetti consistono nell'utilizzo di strumenti software per il process modeling e mining utilizzati durante il corso sfruttando casi di studio realistici
  • Una presentazione del progetto (da tenersi preferibilmente con l'ausilio di slide) è richiesta
  • La presentazione dovrebbe anche includere una demo funzionante del progetto sviluppato

Maggiori informazioni disponibili sulla pagina web del corso: https://elearning.uniroma1.it/course/view.php?id=20065

Testi di riferimento

Dumas, M., La Rosa, M., Mendling, J., Reijers, H.

Fundamentals of Business Process Management (2nd Ed., 2018)

van der Aaalst W.M.P.

Process Mining. Data Science in Action (2nd Ed., 2016)

Codice insegnamento 10589744

PROVA FINALE 2° anno · 2° semestre · 30 CFU · 0 file

La prova finale consiste nella presentazione e discussione di un attività progettuale e di una relazione, supervisionata da un docente, nella quale lo studente dimostra di aver raggiunto una padronanza delle…

Scheda dell'insegnamento

Obiettivi formativi

La prova finale consiste nella presentazione e discussione di un attività progettuale e di una relazione, supervisionata da un docente, nella quale lo studente dimostra di aver raggiunto una padronanza delle metodologie proprie dell'Ingegneria Informatica e/o della loro applicazione.

Codice insegnamento AAF1028

REINFORCEMENT LEARNING 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi Generali. Il corso di Reinforcement Learning (RL) ha lo scopo di introdurre gli studenti alle tecniche fondamentali e avanzate del RL, un area di grande rilevanza nell'ambito dell'intelligenza artificiale e del…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali. Il corso di Reinforcement Learning (RL) ha lo scopo di introdurre gli studenti alle tecniche fondamentali e avanzate del RL, un area di grande rilevanza nell'ambito dell'intelligenza artificiale e del machine learning. Gli studenti acquisiranno competenze per progettare e implementare algoritmi che permettano ai sistemi di apprendere e migliorare autonomamente attraverso l'esperienza, ottimizzando le loro decisioni in tempo reale.
Obiettivi Specifici. Gli studenti esploreranno i concetti chiave del RL, come le politiche di decisione, i processi decisionali di Markov, l'apprendimento Q, e l'apprendimento profondo rinforzato. Impareranno a: Modellare problemi complessi attraverso l'approccio del RL. Sviluppare e implementare algoritmi come Q-learning e Deep Q-Networks (DQN). Applicare tecniche di RL in scenari reali come robotica, giochi, etc.
Conoscenza e Comprensione: Conoscenza approfondita degli algoritmi base e avanzati di RL. Comprensione dei modelli di apprendimento basati su ricompensa e delle loro applicazioni pratiche. Capacità di interpretare i risultati degli algoritmi di RL e di valutarne l'efficacia in diversi contesti.
Applicazione di Conoscenza e Comprensione: Utilizzo di framework software come TensorFlow o PyTorch per implementare e testare algoritmi di RL. Analisi di case studies e progetti di ricerca attuali per capire l'applicazione del RL nel mondo reale. Sviluppo di prototipi funzionali che utilizzano RL per risolvere problemi specifici.
Autonomia di Giudizio: Gli studenti svilupperanno la capacità di valutare criticamente gli algoritmi di RL, considerando la loro applicabilità, efficienza, e potenziali bias. Saranno anche in grado di scegliere l'algoritmo più adatto per un determinato problema.
Abilità Comunicative: Gli studenti impareranno a comunicare efficacemente i concetti di RL, le decisioni di design degli algoritmi e i risultati ottenuti, sia a un pubblico tecnico che a non esperti, utilizzando una varietà di mezzi comunicativi.
Capacità di Apprendimento Successivo: Questo corso preparerà gli studenti a perseguire studi avanzati e ricerca in RL, fornendo le basi necessarie per affrontare problemi aperti e innovare nel campo. Gli studenti saranno incentivati a contribuire attivamente alla comunità scientifica attraverso pubblicazioni, conferenze e collaborazioni.

Codice insegnamento 10606827

ROBOTICS I 2° anno · 1° semestre · 6 CFU · IINF-04/A · 0 file

Obiettivi generali Il corso fornisce strumenti di base per il controllo dei sistemi robotici: analisi cinematica, pianificazione e programmazione dei movimenti di robot manipolatori in ambienti industriali e di servizio.…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Il corso fornisce strumenti di base per il controllo dei sistemi robotici: analisi cinematica, pianificazione e programmazione dei movimenti di robot manipolatori in ambienti industriali e di servizio.
Obiettivi specifici
Conoscenza e comprensione: Lo studente apprenderà il funzionamento dei componenti di attuazione e sensoriali dei robot, i metodi di base per la modellistica, l'analisi e il controllo cinematico di manipolatori robotici, nonché gli algoritmi per la pianificazione delle traiettorie di moto.
Applicare conoscenza e comprensione: Lo studente sarà in grado di analizzare le strutture cinematiche dei robot di tipo industriale e di progettare algoritmi e moduli per la pianificazione e il controllo della movimentazione.
Capacità critiche e di giudizio: Lo studente sarà in grado di individuare le caratteristiche funzionali di un sistema robotico con riferimento al tipo di compito industriale o di servizio, di analizzarne la complessità di realizzazione, le possibili prestazioni e le eventuali debolezze.
Capacità comunicative: Il corso mette in grado lo studente di presentare le principali problematiche applicative e le soluzioni tecniche riguardanti l'impiego dei robot.
Capacità di apprendimento: Il corso mira a creare attitudini di apprendimento autonomo orientate all'analisi e alla soluzione di problemi connessi all'uso dei robot.

Programma

URL: http://www.diag.uniroma1.it/deluca/rob1_en.php

Sono illustrate le tipologie di robot manipolatori nelle applicazioni industriali e di servizio. Si presentano i principali componenti meccanici, di attuazione e sensoriali, con le architetture di controllo e la loro programmazione. Si analizzano i modelli della cinematica (diretta, inversa, differenziale) dei robot manipolatori. Si descrivono i metodi di pianificazione delle traiettorie di moto nello spazio dei giunti e nello spazio operativo. Si introducono infine alcuni schemi di controllo di tipo cinematico e di tipo dinamico decentralizzato (dei singoli assi di un manipolatore).

Modalità d'esame

Prova scritta, seguita eventualmente da un esame orale.

Testi di riferimento

B. Siciliano, L. Sciavicco, L. Villani, G. Oriolo

"Robotics: Modelling, Planning and Control", 3rd Edition, Springer, 2009.

Codice insegnamento 1023235

SECURE COMPUTATION 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi Generali Lo scopo del corso è quello di fornire una panoramica sulle più avanzate tecniche crittografiche e le loro applicazioni. Obiettivi Specifici Gli studenti impareranno il concetto di computazione sicura,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali Lo scopo del corso è quello di fornire una panoramica sulle più avanzate tecniche crittografiche e le loro applicazioni.
Obiettivi Specifici Gli studenti impareranno il concetto di computazione sicura, che consente ad una rete di giocatori malfidati, ognuno con il proprio input segreto, di eseguire un protocollo distribuito per valutare l'output di una funzione sui propri input in modo sicuro, cioè senza rivelare nulla oltre a quello che l'output della funzione rivela. La computazione sicura è un'astrazione di molte applicazioni importanti, incluso il voto elettronico, le aste digitali, le crittovalute, la conoscenza nulla, etc.
Conoscenza e Comprensione -) Conoscenza di strumenti crittografici avanzati, incluso la conoscenza nulla, gli impegni digitali, e la cifratura pienamente omomorfa. -) Conoscenza dei fondamenti della computazione sicura, in particolare come definire la sicurezza dei protocolli interattivi. -) Comprensione dei principi di funzionamento dei libri mastri distribuiti e delle crittovalute.
Applicazione di Conoscenza e Comprensione -) Come analizzare la sicurezza dei protocolli interattivi. -) Come progettare protocolli interattivi sicuri. -) Come programmare "contratti intelligenti" sicuri.
Autonomia di Giudizio Gli studenti saranno in grado di valutare il livello di sicurezza delle applicazioni crittografiche avanzate.
Abilità Comunicative Come descrivere la sicurezza dei protocolli interattivi per il voto digitale, le crittovalute, e la computazione sicura in generale.
Capacità di Apprendimento Successivo Gli studenti interessati alla ricerca verranno a conoscenza di alcuni problemi aperti nell'area, ed otterranno le basi necessarie per studi più approfonditi in materia.

Programma

Secure Communication

Ideal-Real World Paradigm for Secure Computation

Secure Two-Party Computation

Commitment Schemes (and coin flipping)

Secure Proof Systems

Non-malleability

Oblivious Transfer

Garbled Circuits

GMW-Compiler

(Verifiable) Secret Sharing

Secure Multi-Party Computation

Concurrency and Universal Composability

Fairness and Optimistic Security

Combiners

Fully Homomorphic Encryption

Popular Applications

Libraries/Tools for Secure Computation

  • Secure Communication (3h)
  • The Model of Secure Computation (3h)
  • Secure Two-Party Computation (3h)
  • Commitments and Proofs (12h)
  • Man-in-the-middle Attacks (3h)
  • Secure Multi-Party Computation (3)
  • OT, Garbled Circuits, GMW (8h)
  • VSS and Protocols for Secure Multi-Party Computation (10h)
  • Fairness, Optimistic Security (5h)
  • Combiners (3h)
  • FHE (3h)
  • Applications (4h)

Modalità d'esame

L'esame consiste in colloquio orale con domande specifiche che coprono la gran parte del programma del corso. La valutazione finale terrà conto della qualità delle risposte singolarmente, e della visione d'insieme che si evince dalle stesse. Il voto massimo richiede un'ottima comprensione di tutti gli argomenti del corso, mentre il voto di ammissione minimo, richiede una conoscenza mediamente sufficiente degli argomenti del corso.

Testi di riferimento

Carmit Hazay, Yehuda Lindell:​ Efficient Secure Two-Party Protocols - Techniques and Constructions. Information Security and Cryptography​ Springer 2010, ISBN 9783642143021.​

David Evans, Vladimir Kolesnikov and Mike Rosulek, A Pragmatic Introduction to Secure MultiParty Computation. NOW Publishers, 2018, ISBN:9781680835083.

Dan Boneh and Victor Shoup: A Graduate Course in Applied Cryptography (online).

Slide e risorse messe a disposizione dal docente agli studenti tempestivamente.

​

Codice insegnamento 1054962

SECURITY GOVERNANCE 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

Obiettivi Generali. L’obiettivo principale dell'insegnamento è di fornire un’introduzione a tutte le tematiche relative alla gestione della cybersecurity, ai principali processi di sicurezza e al valore della…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali. L’obiettivo principale dell'insegnamento è di fornire un’introduzione a tutte le tematiche relative alla gestione della cybersecurity, ai principali processi di sicurezza e al valore della misurabilità del livello di sicurezza.
Obiettivi Specifici. Conoscenza e comprensione: Verrà mostrato allo studente come il problema della cybersecurity sia verticale rispetto all'organizzazione aziendale e che per tanto la sua gestione ne impatta diversi livelli. Verranno analizzati aspetti legati alle normative, ai regolamenti e agli standard sia Internazionali che Nazionali. Verrà poi discusso come, dal punto di vista metodologico, questi aspetti vengano recepiti e messi in atto attraverso la definizione di appositi framework per la gestione della cybersecurity.
Applicare conoscenza e comprensione: Un altro aspetto fondamentale del corso sarà quello di fornire allo studente metodologie e strumenti per poter affrontare problemi aperti rispetto all'analisi, verifica e certificazione della cybersecurity.
Capacità critiche e di giudizio. Lo studente acquisirà gli strumenti necessari per poter analizzare, valutare e comparare diverse situazioni e progettare le opportune contromisure per migliorare lo stato di sicurezza della realtà analizzata.
Capacità comunicative: Lo studente apprenderà il linguaggio specifico del settore.
Capacità di apprendimento: Lo studente sarà in grado di far proprie e riapplicare tutte le metodologie discusse durante il corso

Programma

Modelli e Metodologie per Information Security Governance (5 ore)

SG Best Practices e Guidelines (3 ore)

  • CSF NIST
  • ISO 27000 Family

Risk Management e Cyber Risks (circa 15 ore)

  • ISO 31000
  • A Methodology for establishing a Risk Management Process
  • Review of existing Risk Management Methodologies
  • Case Study

Security Auditing

Threat Modelling (circa 15 ore)

  • Data Flow Diagrams
  • STRIDE
  • Attack Trees e Attack Libraries
  • Attack Graphs

Incident Management, SOC and CERT (5 ore)

Security Metrics

Seminari e casi di studio (circa 15 ore)

Modalità d'esame

L'esame sarà composto da un test a domande aperte e ha lo scopo di verificare se lo studente ha acquisito e fatto proprie le metodologie e i contenuti presentati durante il corso.

Testi di riferimento

Al momento non è disponibile un testo di riferimento e verranno utilizzate slide e dispense.

[1] von Solms, S.H., von Solms, Rossouw "Information Security Governance" Springer, 2009.

[2] Refsdal, A,. Solhaug, B., Stolen, K., "Cyber-Risk Management" Springer Briefs in Computer Science, 2015

[3] Shostack, A. "Threat Modeling: Designing for Security", Wiley, 2014

[4] NIST SP 800-94, Guide to Intrusion Detection and Prevention Systems (IDPS), 2007

[5] A. Lazarevic, V. Kumar and J. Srivastava, Intrusion Detection: a Survey. In V. Kumar et al. “Managing Cyber Threats: Issues, Approaches and Challenges”, Springer, 2005.

[6] D. Moore, V. Paxson, S. Savage, C. Shannon, S. Staniford and N. Weaver, The Spread of the Sapphire/Slammer Worm, http://www.cs.berkeley.edu/~nweaver/sapphire/, 2003.

[7] D. Powell and R. Stroud, Conceptual Model and Architecture, Deliverable D2, Project MAFTIA IST-1999-11583, IBM Zurich Research Laboratory Research Report RZ 3377, Nov. 2001.

[8] NIST Cyber Security Framework https://www.nist.gov/cyberframework

[9] S. Staniford, J. A. Hoagland and J. M. McAlerney, Practical automated detection of stealthy portscans, Journal of Computer Security, 10, 105–136, 2002.

[10] S. Cheung, R. Crawford, M. Dilger, J. Frank, J. Hoagland, K. Levitt, J. Rowe, S. Staniford-Chen, R. Yip and D. Zerkle, The design of GrIDS: A graph-based intrusion detection system, U.C. Davis Computer Science Department Technical Report CSE-99-2, 1999.

[11] M. Roesch, Snort – lightweight intrusion detection for networks, in: Proceedings of the 1999 USENIX LISA Conference, November 1999. http://www.snort.org/.

[12] P. Porras and A. Valdes, Live traffic analysis of TCP/IP gateways, in: 1998 Internet Society Symposium on Network and Distributed System Security, San Diego, March 1998.

[13] J. Jaeyeon, V. Paxson, A. W. Berger and H. Balakrishnan, Fast portscan detection using sequential hypothesis testing, Proceedings of the IEEE Symposium on Security and Privacy, 2004.

[14] NIST SP 800-61, Revision 2 Computer Security Incident Handling Guide - Recommendations of the National Institute of Standards and Technology https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-61r2.pdf

[15] SANS white paper - SANS: Building a World-Class Security Operations Center: A Roadmap

[16] ENISA – Good Practice Guide for Incident Management https://www.enisa.europa.eu/publications/good-practice-guide-for-incident- management

[17] SOC (Security operation center) e CERT: definizioni e sinergie per la sicurezza informatica - https://www.agendadigitale.eu/sicurezza/soc-security- operation-center-e-cert-definizioni-differenze-e-sinergie-per-una-migliore- sicurezza/

Codice insegnamento 1055061

VISUAL ANALYTICS 2° anno · 1° semestre · 6 CFU · IINF-05/A · 0 file

L'obbiettivo del corso è di fornire una introduzione alle tecniche di Information Visualization e Visual Analytics correntemente utilizzate. In particolare, verranno analizzate le metodologie di visualizzazione di dati…

Scheda dell'insegnamento

Obiettivi formativi

L'obbiettivo del corso è di fornire una introduzione alle tecniche di Information Visualization e Visual Analytics correntemente utilizzate. In particolare, verranno analizzate le metodologie di visualizzazione di dati puramente numerici (tabelle, diagrammi) e le tecniche di rappresentazione (mapping di attributi del dataset rappresentato in attributi visuali), fornendo le competenze pratiche per implementarle in d3.js e integrarle con soluzioni algoritmiche standard di Visual Analytics. Successivamente, verranno introdotte le tecniche di dimensionality reduction, con particolare attenzione a PCA, MDS e t-SNE, presentando soluzioni pratiche in Python. Infine, verrà introdotto il problema della presentazione delle tecniche descritte, acquisendo competenze su come superare limiti di spazio e di tempo nelle visualizzazioni, e fornendo indicazioni sulle principali tecniche di interazione.

Codice insegnamento 1052057

LABORATORY OF NETWORK DESIGN AND CONFIGURATION 2° semestre · 6 CFU · ING-INF/03 · 0 file
PROBABILISTIC ROBOTICS 2° semestre · 6 CFU · ING-INF/05 · 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.