Corso di laurea

Computer Science - Informatica

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

Elective course 1° anno · 2° semestre · 6 CFU · 0 file

Attività formative a scelta dello studente (art.10, comma 5, lettera a) Ambito disciplinare: A scelta dello studente

Scheda dell'insegnamento

Obiettivi formativi

Attività formative a scelta dello studente (art.10, comma 5, lettera a) Ambito disciplinare: A scelta dello studente

Codice insegnamento AID-25fefe6f-37d

ADDITIONAL EDUCATIONAL ACTIVITY 2° anno · 1° semestre · 6 CFU · 0 file

Le attività formative complementari si possono inquadrare in uno o più ambiti disciplinari affini o integrativi a quelli di base o caratterizzanti, e possono proporre obiettivi formativi di carattere interdisciplinare…

Scheda dell'insegnamento

Obiettivi formativi

Le attività formative complementari si possono inquadrare in uno o più ambiti disciplinari affini o integrativi a quelli di base o caratterizzanti, e possono proporre obiettivi formativi di carattere interdisciplinare o di approfondimento delle culture di contesto.

Codice insegnamento AAF2599

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

ADVANCED ALGORITHMS Obiettivi formativi (Educational goals) Il corso approfondisce tecniche avanzate di progettazione e analisi di algoritmi per problemi complessi. Particolare attenzione è dedicata alla modellazione dei…

Scheda dell'insegnamento

Obiettivi formativi

ADVANCED ALGORITHMS
Obiettivi formativi (Educational goals)
Il corso approfondisce tecniche avanzate di progettazione e analisi di algoritmi per problemi complessi. Particolare attenzione è dedicata alla modellazione dei problemi, alla valutazione rigorosa dell'efficienza degli algoritmi e all'uso di metodi probabilistici e combinatori.
Conoscenza e capacità di comprensione (Knowledge and understanding)
Lo studente acquisirà una conoscenza approfondita di algoritmi e tecniche avanzate, comprendendone i principi teorici, i limiti computazionali e gli strumenti matematici necessari alla loro analisi.
Capacità di applicare conoscenza e comprensione (Applying knowledge and understanding)
Lo studente sarà in grado di modellare problemi algoritmici complessi, progettare soluzioni efficienti, analizzarne correttezza e complessità e adattare tecniche note a nuovi contesti applicativi.
Autonomia di giudizio (Making judgements)
Lo studente svilupperà la capacità di valutare criticamente diverse soluzioni algoritmiche, confrontandone vantaggi, limiti e ipotesi sottostanti, e di scegliere gli strumenti più appropriati per affrontare un problema dato.
Abilità comunicative (Communication skills)
Lo studente sarà in grado di presentare in modo chiaro e rigoroso algoritmi, dimostrazioni e analisi di complessità, utilizzando il linguaggio e le convenzioni della disciplina.
Capacità di apprendimento (Learning skills)
Lo studente acquisirà gli strumenti concettuali necessari per affrontare autonomamente temi avanzati dell'algoritmica e per leggere e comprendere la letteratura scientifica del settore.

Codice insegnamento 1047613

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

Obiettivi formativi Il corso fornisce una comprensione avanzata dei principi dell’architettura dei calcolatori, con particolare riferimento ai sistemi di calcolo parallelo, alle architetture ad alte prestazioni e ai…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Il corso fornisce una comprensione avanzata dei principi dell’architettura dei calcolatori, con particolare riferimento ai sistemi di calcolo parallelo, alle architetture ad alte prestazioni e ai fondamenti del calcolo quantistico. Il corso integra aspetti teorici e metodologici relativi alla valutazione delle prestazioni, alla progettazione di circuiti aritmetici e allo studio delle principali architetture computazionali moderne.
Al termine del corso lo studente sarà in grado di:
analizzare i principali modelli di architettura dei calcolatori, sia sequenziali sia paralleli; comprendere le caratteristiche delle architetture SIMD, vettoriali e GPU; progettare e valutare circuiti aritmetici e relative ottimizzazioni; applicare tecniche avanzate di rappresentazione numerica (IEEE 754, sistemi ridondanti, sistemi in base residua); utilizzare modelli analitici per la valutazione delle prestazioni (Amdahl, Gustafson-Barsis, performance equation); comprendere le architetture di memoria e le reti di interconnessione nei sistemi paralleli; acquisire i concetti fondamentali del calcolo quantistico e della realizzazione di circuiti quantistici elementari. Conoscenza e capacità di comprensione
Lo studente acquisirà una conoscenza approfondita dei modelli di architettura dei calcolatori, delle tecniche di progettazione dei circuiti digitali, dei paradigmi del calcolo parallelo e dei fondamenti del calcolo quantistico. Comprenderà inoltre i principali modelli teorici per la valutazione delle prestazioni dei sistemi computazionali.
Capacità di applicare conoscenza e comprensione
Lo studente sarà in grado di applicare le conoscenze acquisite per: progettare e analizzare circuiti aritmetici; valutare le prestazioni di sistemi computazionali mediante modelli quantitativi; interpretare e confrontare architetture parallele moderne; analizzare problemi computazionali in contesti hardware complessi, inclusi sistemi vettoriali, GPU e reti di interconnessione.
Autonomia di giudizio
Lo studente svilupperà capacità critiche nell’analisi e nel confronto di diverse soluzioni architetturali, valutandone l’efficienza, la scalabilità, il costo computazionale e le prestazioni in relazione al contesto applicativo.
Abilità comunicative
Lo studente sarà in grado di esporre in modo chiaro e rigoroso concetti complessi relativi all’architettura dei calcolatori, sia in forma scritta sia orale. Sarà inoltre in grado di motivare e difendere scelte progettuali e analisi prestazionali utilizzando una terminologia tecnica appropriata.
Capacità di apprendimento
Lo studente svilupperà autonomia nello studio e nell’aggiornamento continuo delle conoscenze nel settore dell’architettura dei calcolatori, del calcolo parallelo e delle tecnologie emergenti, con capacità di approfondire autonomamente nuovi modelli e paradigmi computazionali.

Programma

Introduzione alle architetture parallele e a high-performance computing. Panoramica su organizzazione e architettura dei calcolatori. (5 hours)

Canalizzazione delle istruzioni. Cache coherence. (5 hours)

Moduli aritmetici. Circuiti aritmetici veloci. Rappresentazione dei numeri per aritmetica veloce. Valutazione di circuiti. (10 hours)

Classificazione di Flynn. La classe SIMD. Architetture vettoriali e GPU. (10 hours)

Matrici sparse. (3 hours)

La classe MIMD e le reti di interconnessione. (12 hours)

Analisi della performance. (3 hours)

Nozioni di quantum computing e circuiti aritmetici quantistici. (12 hours)

  • Fondamenti di aritmetica e circuiti: Ripple-carry adders, moltiplicatori, carry select/look-ahead adder, pipelining, sistemi numerici ridondanti e Residue Number Systems.
  • Prestazioni e architetture parallele: Leggi di Amdahl e Gustafson-Barsis, Calssificazione di Flynn e altr classificazioni di architetture parallele. SIMD, architetture vettoriali, GPU, MIMD.
  • Interconnessione e reti di calcolatori: Reti di interconnessione, topologie, Clos networks, fat trees, topologies per Data Center.
  • Quantum Computing: Qubit, porte a uno e più qubit, circuiti quantistici.

Modalità d'esame

L'esame prevede una prova scritta e una prova orale.

Prova scritta: Gli studenti frequentanti possono sostenere le prove in itinere (a metà corso e alla fine). La prova in itinere e la prova scritta complessiva prevedono esercizi e domande a risposta aperta.

Prova orale: Gli studenti possono scegliere una delle seguenti opzioni, concordando con il docente: esame orale oppure presentazione di uno o due articoli oppure progetto.

Il voto finale sarà calcolato come media tra i voti riportati nelle due prove.

Testi di riferimento

  • Computer Architecture: A Quantitative Approach J. L. Hennessy, D. A. Patterson - Morgan Kaufmann, 2019
  • Multicore and GPU Programming An Integrated Approach - G. Barlas - Morgan Kaufmann, 2014
  • Programming Massively Parallel Processors: A Hands-on Approach, David B. Kirk and Wen-mei W. Hwu, Morgan Kaufmann, 2010
  • Altro materiale è indicato nelle slide del corso http://twiki.di.uniroma1.it/twiki/view/CI/
  • Introduction to High-Performance Scientific Computing, Lloyd D. Fosdick, Elizabeth R. Jessup, Carolyn J. C. Schauble and Gitta Domik, The MIT Press, 1996, ISBN 0-262-06181-3
  • Introduction to scientific computing: A Matrix-Vector Approach Using MATLAB, Charles F. Van Loan, Prentice Hall , 1997
  • MATLAB: http://www.mathworks.com/help/techdoc/learn_matlab/bqr_2pl.html

Introduction to scientific computing: A Matrix-Vector Approach Using MATLAB, Charles F. Van Loan, Prentice Hall, 1997

Codice insegnamento 10612318

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

Obiettivi generali: Il corso presenterà agli studenti i concetti più avanzati e recenti del machine learning e la loro applicazione nella computer vision tramite modelli di deep neural networks (DNN). Comprenderà…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Il corso presenterà agli studenti i concetti più avanzati e recenti del machine learning e la loro applicazione nella computer vision tramite modelli di deep neural networks (DNN). Comprenderà teoria e programmazione pratica, oltre a un progetto finale pratico. Per le esercitazioni di programmazione e il progetto finale, gli studenti lavoreranno in team e presenteranno le loro idee e i risultati del progetto alla classe.
Obiettivi specifici La prima parte del corso prevede l'approfondimento dei modelli DNN all'avanguardia per la classificazione e la regressione applicati alla detection (individuazione della posizione degli oggetti nell'immagine), alla pose estimation (se le persone sono in piedi, sedute o in posizione eretta) e alla reidentification (stima di una rappresentazione vettoriale univoca per ogni persona). Il corso tratterà inoltre le DNN per obiettivi multi-task (detection congiunta a pose estimation, reidentification, segmentation, depth estimation, ecc.). Questa prima parte include DNN applicate a sequenze video, sfruttando la memoria e/o l'attenzione (Transformer).
La seconda parte del corso approfondisce modelli, tecniche di addestramento e manipolazione dei dati per la generalizzazione, il domain adaptation e il meta-learning. FROM HERE Oltre al transfer learning (come i modelli pre-addestrati possono essere impiegati per altri compiti), vengono discussi l'apprendimento multimodale (con diverse modalità di sensori come telecamere di profondità o termiche) e l'apprendimento auto-supervisionato (ad esempio, addestrando il modello DNN risolvendo puzzle) per l'annotazione automatica di grandi quantità di dati. Infine, vengono presentati domain adaptation (ad esempio, l'applicazione di rilevatori diurni alla visione notturna) e il meta-learning, un framework di recente sviluppo per imparare a svolgere un compito, ad esempio online o con pochi dati disponibili.
Conoscenze e comprensione: Al termine del corso, gli studenti avranno familiarità con i modelli DNN all'avanguardia per compiti multipli e obiettivi multi-task, nonché con la generalizzazione e l'uso efficace di dati etichettati e non etichettati per l'apprendimento, l'apprendimento auto-supervisionato e il meta-apprendimento.
Applicazione di conoscenze e comprensione: Al termine del corso, gli studenti avranno acquisito familiarità con i più recenti progressi nell'apprendimento automatico in una varietà di compiti, il loro adattamento a nuovi ambiti e il continuo autoapprendimento degli algoritmi. Saranno in grado di spiegare gli algoritmi e scegliere le tecniche più appropriate per un dato problema. Saranno in grado di sperimentare con implementazioni esistenti e progettare e scrivere programmi per nuove soluzioni per un dato compito o problema nei due ambiti.
Capacità di pensiero critico e di giudizio: Gli studenti saranno in grado di analizzare un problema o un compito e identificare le metodologie e le tecniche più adatte da applicare in termini di risoluzione efficace del problema (accuratezza) e di fattibilità, inclusi l'efficienza, la quantità di dati necessari e l'annotazione. Oltre alle discussioni in classe, le capacità di pensiero critico e di giudizio saranno il risultato di esercitazioni, un progetto di corso e una relazione finale sul progetto.
Capacità di comunicazione: Gli studenti acquisiranno la capacità di esporre le proprie conoscenze in modo chiaro e organizzato, che sarà verificata attraverso la presentazione del progetto finale e la relativa discussione. Gli studenti saranno in grado di esprimere le proprie soluzioni in modo rigoroso e di spiegare la struttura del codice che hanno scritto.
Capacità di apprendimento: Le conoscenze acquisite consentiranno agli studenti di affrontare lo studio di altri problemi nell'ambito dell'apprendimento automatico e della visione artificiale. La capacità di apprendimento deriverà dagli argomenti delle lezioni scelti, che coprono ampie aree dell'apprendimento automatico avanzato, nonché dal progetto finale, per il quale gli studenti approfondiranno un nuovo argomento, andando oltre la teoria.

Programma

The course will present advanced concepts of machine learning and their application in computer vision via deep neural network (DNN) models. It will include theory and practical coding, as well as a final hands-on project.

In the first part of the course, I will introduce state-of-the-art DNN models for classification, showing how to estimate which objects are within an image. I will then showcase regression, as applied to detection (where the objects are in the image), pose estimation (whether people stand, sit or crunch) and re-identification (estimating a unique vector representation for each person). I will further discuss DNNs for multi-task objectives (joint detection, pose estimation, re-identification, segmentation, depth estimation etc). This first part will include DNNs for video sequences, by leveraging memory (e.g. LSTMs), attention (Transformers), and graph structures (Graph Neural Networks).

In the second part of the course, I will discuss generalization and the effective use of labelled and unlabelled data for learning. Further to transfer learning (how pre-trained models may be deployed for other tasks), I will discuss multi-modal (with different sensor modalities such as text, audio, video and event-based cameras) and self-supervision (e.g. training the DNN model by solving jigsaw puzzles, and via the use of contrastive learning) to auto-annotate large amounts of data. Also, I will present domain adaptation (e.g. apply daytime-detectors for night vision) and meta-learning, a most recent framework to learn how to learn a task, e.g. online or from little available data. Finally, I will introduce novel machine learning trends such as hyperbolic neural networks and generative techniques such as diffusion, adversarial and auto-encoding models, and their applications to tasks such as anomaly detection while estimating the model uncertainty.

For more information, see the course websites of the 24/25 academic year:

https://sites.google.com/di.uniroma1.it/aml-2024-2025

and of the 25/26 academic year:

https://sites.google.com/di.uniroma1.it/amlcv-2025-2026

  • General Concepts of Deep Learning [10 hours]
  • Testi di riferimento: Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning
  • Advanced Concepts of Deep Learning [25 hours]
  • Testi di riferimento: Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning
  • Advanced Concepts of Computer Vision [15 hours]
  • Testi di riferimento: Antonio Torralba, Phillip Isola and William T. Freeman, 2024. Foundations of Computer Vision
  • Coding of Advance Machine Learning and Computer Vision [10 hours]
  • Testi di riferimento: Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning

Modalità d'esame

Exam:

1) Theory: 50% (oral)

2) Practise: 50%, including assignments in Python and Pytorch, to be submitted by given deadlines during the course, and a final project and presentation

Theory:

  • oral exam

Assignments:

  • The assignments and the final projects must be submitted in groups of size [ 2 – 4 ]

Final project:

  • Ideas for projects and resources will be discussed in class

Testi di riferimento

Slides and coding scripts will be distributed after lectures, as well as references to online material, including papers and blogs.

Reference books Machine Learning:

Deisenroth, Faisal, Ong, 2020. Mathematics for Machine Learning (available at: https://mml-book.github.io/)

Christopher M. Bishop, 2006. Pattern Recognition and Machine Learning

Reference books for Deep Learning:

Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning (available at: https://d2l.ai/)

Francois Fleuret, 2024. The Little Book of Deep Learning. (available at: https://fleuret.org/dlc/)

Michael M. Bronstein, Joan Bruna, Taco Cohen, Petar Veličković, 2024. Geometric Deep Learning: Grids, Groups, Graphs, Geodesics, and Gauges (available at: https://geometricdeeplearning.com/book/)

Ian Goofellow, Yoshua Bengio, Aaron Courville, 2017. Deep Learning (available at: https://www.deeplearningbook.org/)

Andrew Ng, 2019. Machine Learning Yearning (available at: https://www.deeplearning.ai/machine-learning-yearning/)

Zhang Lipton Li Smola Book, 2019 Dive into Deep Learning (interactive book and code at: http://d2l.ai/index.html)

Reference books for Computer Vision:

Antonio Torralba, Phillip Isola and William T. Freeman, 2024. Foundations of Computer Vision (https://mitpress.mit.edu/9780262048972/foundations-of-computer-vision/)

Richard Szeliski, 2010. Computer Vision: Algorithms and Applications

(available at: http://szeliski.org/Book)

Reference books for Robotics:

Frank Dellaert, 2024, Robotics. (available at: https://www.roboticsbook.org/)

Reference book for Python and Pytorch:

Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning (available at https://d2l.ai/ , select Notebooks/Pytorch)

Jake VanderPlas, 2016. Python Data Science Handbook: Tools and Techniques for Developers: Essential Tools for working with Data (Book and notebooks available at: https://github.com/jakevdp/PythonDataScienceHandbook)

Online tutorials for Python: https://docs.python.org/3/tutorial/

Online tutorials for Pytorch: https://pytorch.org/tutorials/

Christopher M. Bishop, 2006. Pattern Recognition and Machine Learning

Michael M. Bronstein, Joan Bruna, Taco Cohen, Petar Veličković, 2024. Geometric Deep Learning: Grids, Groups, Graphs, Geodesics, and Gauges (available at: https://geometricdeeplearning.com/book/)

Frank Dellaert, 2024, Robotics. (available at: https://www.roboticsbook.org/)

Deisenroth, Faisal, Ong, 2020. Mathematics for Machine Learning (available at: https://mml-book.github.io/)

Francois Fleuret, 2024. The Little Book of Deep Learning. (available at: https://fleuret.org/dlc/)

Ian Goofellow, Yoshua Bengio, Aaron Courville, 2017. Deep Learning (available at: https://www.deeplearningbook.org/)

Zhang Lipton Li Smola Book, 2019 Dive into Deep Learning (interactive book and code at: http://d2l.ai/index.html)

Andrew Ng, 2019. Machine Learning Yearning (available at: https://www.deeplearning.ai/machine-learning-yearning/)

Antonio Torralba, Phillip Isola and William T. Freeman, 2024. Foundations of Computer Vision (https://mitpress.mit.edu/9780262048972/foundations-of-computer-vision/)

Aston Zhang, Zachary Lipton, Alexander J. Smola, Mu Li, 2023. Dive Into Deep Learning (available at: https://d2l.ai/)

Richard Szeliski, 2010. Computer Vision: Algorithms and Applications

(available at: http://szeliski.org/Book)

Jake VanderPlas, 2016. Python Data Science Handbook: Tools and Techniques for Developers: Essential Tools for working with Data (Book and notebooks available at: https://github.com/jakevdp/PythonDataScienceHandbook)

Codice insegnamento 10589621

ADVANCED SOFTWARE ENGINEERING 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Il corso si propone di presentare un approccio tramite metodi formali, tipicamente basati su trasformazioni di modelli, allo sviluppo di sistemi software di media complessità (tipicamente applicazioni…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Il corso si propone di presentare un approccio tramite metodi formali, tipicamente basati su trasformazioni di modelli, allo sviluppo di sistemi software di media complessità (tipicamente applicazioni Enterprise). L'insegnamento è focalizzato sulle tematiche dello sviluppo guidato da modelli, nelle sue varie articolazioni, fornendo anche un fondamento teorico basato sull'approccio algebrico alla trasformazione di grafi. Al termine del semestre, i e le partecipanti al corso avranno appreso la modellazione di sistemi attraverso linguaggi testuali e diagrammatici basati su vari tipi di metamodello e le nozioni fondamentali relative alla definizione di linguaggi specifici al dominio, e avranno acquisito competenze nell'utilizzo di diversi strumenti di modellazione.
Obiettivi generali: Il corso si propone di presentare un approccio tramite metodi formali, tipicamente basati su trasformazioni di modelli, allo sviluppo di sistemi software di media complessità (tipicamente applicazioni Enterprise).
Obiettivi specifici: Il corso formerà gli studenti su: 1. Fondamenti di metamodellazione 2. Fondamenti di trasformazioni di modelli 3. Linguaggi specifici al dominio 4. Architetture software
Conoscenza e comprensione: Gli studenti apprenderanno le nozioni fondamentali per la modellazione indipendente dalla piattaforma a partire dalle specifiche dei requisiti e come utilizzare gli strumenti di trasformazione per ottenere implementazioni di codice (parziale) che soddisfino i requisiti e l'utilizzo di architetture enterprise.
Applicazione di conoscenza e comprensione: Gli studenti saranno in grado di utilizzare alcuni dei linguaggi e degli strumenti più popolari nel campo della modellazione dei sistemi e della trasformazione dei modelli e li utilizzeranno per sviluppare applicazioni a vari livelli di complessità.
Autonomia di giudizio: Gli studenti svilupperanno le capacità di analisi necessarie per valutare diverse alternative nel campo della modellazione di sistema, in particolare per quanto riguarda la modellazione di dominio e della valutazione dei requisiti architetturali.
Abilità comunicative: Gli studenti impareranno a documentare le loro scelte, anche attraverso l'uso di strumenti di generazione della documentazione, in particolare sfruttando notazioni diagrammatiche.
Capacità di apprendimento: La padronanza dei concetti di modello formale e di trasformazione di modello, nonché la familiarità con ambienti di sviluppo software che integrino queste nozioni, permetterà agli studenti di proseguire nell'esplorazione e nell'apprendimento di linguaggi e approcci basati su questi concetti.

Programma

Il corso si struttura in cinque parti principali

1. Fondamenti di metamodellazione (10 ore)

a. Modelli e metamodellazione.

b. Il metamodello di UML.

2. Fondamenti di trasformazioni di modello (14 ore)

a. Trasformazioni orizzontali

b. Trasformazioni verticali

c. Linguaggi per trasformazioni di modelli

c1. QVT

c2. Trasformazioni di grafi

3. Linguaggi specifici al dominio: (8 ore)

a. Metamodello per linguaggi specifici al dominio

b. Modelli di caratteristiche e linee di prodotto software

4. Utilizzo di strumenti: (16 ore)

a. AGG (Attributed Graph Grammars)

b. EMF (Eclipse Modeling Framework)

c. WebRatio

d. Besser

5. Fondamenti di architetture Software (6 ore)

a. Architetture distribuite

b. Architetture orientate ai servizi

c. Architetture a microservizio

Le restanti ore saranno dedicate ad affrontare collettivamente problematiche di carattere generale emergenti dallo svolgimento dei progetti.

  • Prima parte: Model Driven Development Contenuto: Introduzione a UML Presentazione del Metamodello di UML Introduzione allo sviluppo software centrato sull'architettura Introduzione al Model Driven Development Introduzione al modello QVT
  • Seconda parte: Metodi formali Contenuto:Introduzione ai grafiIntroduzione all'approccio algebrico Introduzione a AGG Introduzione alle semantiche di esecuzione
  • Terza parte. Tool e applicazioniContenuto: Introduzione a WebMLIntroduzione a WebRatioIntroduzione ai Feature ModelsIntroduzione alle Software Product LinesIntroduzione a Eclipse IIntroduzione alla Eclipse Modeling FoundationIntroduzione alla Graphic Modeling FoundationPresentazione del progettoIntroduzione a Epsilon
  • Quarta parte: Temi specificiContenuto: Introduzione al Model-Based Testing Introduzione ai Domain Specific Languages

Modalità d'esame

Il voto è principalmente basato sulla valutazione del lavoro svolto in relazione al progetto. Vengono proposti anche homework in relazione ai diversi argomenti affrontati man mano nel corso, la cui soluzione viene discussa in aula. La qualità degli homework concorre a determinare il voto finale.

Testi di riferimento

UML Documentation

Jordi Cabot, The low-code handbook: Learn how to unlock faster and better software development with low-code solutions, 2024

Marco Brambilla, Jordi Cabot, Manuel Wimmer, Model-Driven Software Engineering in Practice, Morgan & Claypool, USA, 2012.

Stefano Ceri, Piero Fraternali, Aldo Bongio, Marco Brambilla, Sara Comai, Maristella Matera, Designing Data Intensive Web Applications, Morgan Kauffman, 2003

Markus Völter, Thomas Stahl, Jorn Bettin, Arno Haase, Simon Helsen, Model-Driven Software Development: Technology, Engineering, Management, Wiley, 2006

Ian Sommerville, Engineering Software Products, Pearson, 2019

Documentazione OMG su UML e MDA

Markus Völter, DSL Engineering - Designing, Implementing and Using Domain-Specific Languages, http://voelter.de

Steven Kelly, Juha-Pekka Tolvanen, Domain-Specific Modeling: Enabling Full Code Generation, Wiley 2008

Letteratura scientifica su trasformazioni di grafi e linguaggi specifici al dominio.

Codice insegnamento 1047614

AUTOMATIC VERIFICATION OF INTELLIGENT SYSTEMS 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Obiettivi generali: Il corso si propone di fornire agli studenti metodi e strumenti software avanzati per la modellazione, progettazione, verifica e validazione automatica di sistemi intelligenti.…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Obiettivi generali: Il corso si propone di fornire agli studenti metodi e strumenti software avanzati per la modellazione, progettazione, verifica e validazione automatica di sistemi intelligenti.
Obiettivi specifici: Il corso di propone di mettere gli studenti in grado di comprendere tecniche avanzate di modellazione, progettazione, verifica e validazione per sistemi intelligenti.
Conoscenza e comprensione: Introduzione ad ampio spettro alle metodologie avanzate per la modellazione, progettazione ed analisi dei sistemi intelligenti.
Applicazione di conoscenza e comprensione: Saper applicare il portafoglio di tecniche e approcci illustrati per la modellazione, progettazione, verifica e validazione di sistemi intelligenti.
Autonomia di giudizio: Gli studenti saranno in grado di prendere autonomamente decisioni razionali sulle tecniche e sugli strumenti software da impiegare nella modellazione, progettazione, verifica e validazione di sistemi intelligenti.
Abilità comunicative: Gli studenti saranno in grado di interagire in modo proficuo con esperti di dominio su un'ampia gamma di argomenti relativi alla modellazione, progettazione, verifica e validazione di sistemi intelligenti.
Capacità di apprendimento: Gli studenti saranno in grado di ampliare le loro conoscenze in modo autonomo consultando, secondo necessità, la letteratura scientifica di rilievo.

Codice insegnamento 10600495

AUTONOMOUS NETWORKING 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Il corso ha l’obiettivo di fornire agli studenti conoscenze teoriche e pratiche sulle reti autonome, con particolare attenzione ai sistemi wireless, alle reti di sensori, alle reti Wi-Fi, RFID,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Il corso ha l’obiettivo di fornire agli studenti conoscenze teoriche e pratiche sulle reti autonome, con particolare attenzione ai sistemi wireless, alle reti di sensori, alle reti Wi-Fi, RFID, backscattering e alle reti robofisiche. Il corso introduce inoltre i principi del reinforcement learning e il loro impiego nella progettazione di protocolli di comunicazione adattivi, con focus su protocolli MAC e di routing capaci di modificare il proprio comportamento in funzione dello stato della rete e dell’ambiente operativo.
Conoscenza e capacità di comprensione
Al termine del corso, lo studente avrà acquisito conoscenze sui principali paradigmi di comunicazione wireless e sulle caratteristiche delle reti di sensori, RFID, backscattering e robofisiche. Sarà in grado di comprendere le problematiche legate alla condivisione del canale, alla mobilità, alla scarsità di risorse, all’interferenza e alla variabilità delle condizioni operative. Inoltre, lo studente comprenderà i concetti fondamentali del reinforcement learning e il modo in cui tali tecniche possono essere applicate alla progettazione di protocolli di rete autonomi e adattivi.
Capacità di applicare conoscenza e comprensione
Lo studente sarà in grado di analizzare scenari di rete caratterizzati da dinamicità, incertezza e vincoli sulle risorse, individuando soluzioni protocollari adeguate. Sarà capace di progettare, modellare e valutare semplici meccanismi adattivi per il controllo dell’accesso al mezzo, la selezione delle azioni di trasmissione e il routing. Inoltre, saprà applicare strumenti di base del reinforcement learning per formulare problemi di decisione in ambito networking e per confrontare strategie statiche e adattive attraverso metriche di prestazione appropriate.
Autonomia di giudizio
Il corso mira a sviluppare la capacità di valutare criticamente l’efficacia di soluzioni di rete autonome in diversi contesti applicativi. Lo studente sarà in grado di discutere vantaggi e limiti di approcci basati su regole, ottimizzazione e apprendimento automatico, considerando aspetti quali complessità, scalabilità, consumo energetico, robustezza, convergenza e overhead di comunicazione. Sarà inoltre in grado di interpretare risultati sperimentali o simulativi e di formulare giudizi motivati sulla scelta di un protocollo o di una strategia di apprendimento.
Abilità comunicative
Lo studente acquisirà la capacità di descrivere in modo chiaro e rigoroso problemi, modelli e soluzioni relativi alle reti autonome. Sarà in grado di presentare protocolli adattivi, algoritmi di reinforcement learning e risultati di valutazione utilizzando un linguaggio tecnico appropriato. Il corso favorisce inoltre la capacità di discutere articoli scientifici, motivare scelte progettuali e comunicare efficacemente risultati sperimentali sia in forma scritta sia orale.
Capacità di apprendimento
Al termine del corso, lo studente avrà sviluppato gli strumenti necessari per approfondire autonomamente temi avanzati nel campo delle reti autonome, delle reti wireless intelligenti e dell’applicazione del reinforcement learning ai sistemi di comunicazione. Sarà in grado di leggere e comprendere letteratura scientifica recente, individuare problemi aperti e aggiornare le proprie competenze rispetto all’evoluzione delle tecnologie wireless, dei protocolli adattivi e delle metodologie di apprendimento automatico applicate al networking.

Programma

Il corso prevede 3 parti:

1) Reti di sensori terrestri e aeree, Reti IoT, e principali protocolli MAC (20 ore)

2) Concetti di Reinforcement learning:

  • Multi-armed bandits (10 ore)
  • Processi di Markov (10 ore)
  • Q-learning (10 ore)

3) Applicazione di tecniche di Reinforcement Learning a protocolli MAC e routing per reti di sensori e IoT (20 ore)

  • Unità 1 — Concetti generali e di contesto (15 ore)Obiettivo: fornire le basi di reti di sensori/IoT, RFID, reti di droni (FANET), MAC e routing, metriche e modelli.Panorama delle reti wireless per sistemi autonomiSensor/IoT vs RFID vs FANET: vincoli energetici, mobilità, intermittency.Metriche: throughput, ritardo, PDR, jitter, fairness, efficienza energetica.Modelli di traffico e workload (periodico/event-driven, bursty).Richiami di MAC e routing802.11/CSMA-CA: DIFS/SIFS, backoff, hidden/exposed terminals.WSN MAC duty-cycled: S-MAC.RFID anti-collision: ALOHA slotted/dynamic, Query Tree, Tree Slotted ALoha.Routing ad hoc/mesh: AODV, DSR, BATMAN.Backscattering networks: MAC issues.
  • Testi di riferimento: Articoli scientifici
  • Unità 2 — Approfondimenti teorici e metodi (20 ore)Obiettivo: entrare in profondità su MAC/routing per sensori, RFID, IoT e droni; introdurre RL (bandit, Q-learning) e i principi per protocolli adattivi.Contenuti):CSMA/CA in dettaglio, interferenze, analisi collisioni/ritardi.WSN MAC avanzati: sincronizzazione, duty cycle adattivo, trade-off energia–latenza–affidabilità.RFID anti-collision avanzato: dimensionamento frame, backlog estimation, cattura/near–far, limiti di throughput.Routing per ad hoc/mesh/FANETReinforcement Learning – Parte IMDP, stati/azioni/reward, politiche e valore; multi-armed bandit (ε-greedy, UCB, softmax), esplorazione/sfruttamento; misura di performance (regret).Reinforcement Learning – Parte IITD learning, Q-learning (tabulare), on/off-policy, reward shaping.Applicazione del RL a MAC e Rounting in diversi tipi di reti: RFID, sensor networks, fanet.
  • Testi di riferimento: Sutton, Barto, Reinforcement Learning
  • Unità 3 — Laboratorio / Esercitazioni progettuali (10 ore)Obiettivo: implementare un protocollo MAC base e una versione adattiva (bandit o Q-learning) applicata a uno dei domini: WSN duty-cycled, RFID anti-collision, o Wi-Fi CSMA/CA semplificato; includere raccolta dati, analisi e report. Setup & MAC baseScelta dominio.Implementazione “from scratch” dell’ambiente (no simulatori esterni).Baseline e validationBaseline non adattive (CW fisso / frame-size fisso / duty-cycle fisso).Validazione: sanity-check su piccoli scenari, CI95% su ≥5 run.Variante adattiva con RLScelta: bandit contestuale o Q-learning tabulare.Analisi & report
  • Sessione di chiusura/recupero (5 ore)Q&A, sintesi del corso, presentazioni rapide dei progetti, collegamenti a temi avanzati.

Modalità d'esame

L'esame si svolge con una prova scritta, con domande sia a scelta multipla che aperte. Possono essere previsti degli homework che vengono valutati come parte dell'esame.

Testi di riferimento

Reinforcement Learning: An Introduction, Richard S. Sutton and Andrew G. Barto, Second Edition MIT Press, Cambridge, MA, 2018

Articoli scientifici indicati durante il corso.

Codice insegnamento 10596281

BIG DATA COMPUTING 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Il corso si propone di introdurre il big data computing come paradigma strutturale avanzato delle moderne piattaforme computazionali, evidenziando l'intersezione tra le architetture di calcolo…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi Il corso si propone di introdurre il big data computing come paradigma strutturale avanzato delle moderne piattaforme computazionali, evidenziando l'intersezione tra le architetture di calcolo distribuito, le rappresentazioni dei dati ad alta dimensione e i sistemi di machine learning scalabili. L'obiettivo primario è fornire agli studenti una comprensione esauriente di come il modello di calcolo scale-out gestisca grandi volumi, velocità e varietà di dati, offrendo le astrazioni metodologiche necessarie per progettare e analizzare sistemi in cui il calcolo esatto classico risulta impraticabile. Al termine del corso, gli studenti avranno acquisito i fondamenti metodologici per comprendere e analizzare le sfide legate alla progettazione di piattaforme software distribuite e complesse.
Conoscenza e capacità di comprensione Comprendere i principi teorici e la semantica di esecuzione delle infrastrutture distribuite su larga scala. Conoscenza delle proprietà geometriche che regolano gli spazi ad alta dimensione, dei compromessi della sparsità strutturale e dei limiti dell'elaborazione esatta delle query. Acquisizione di una panoramica completa sui modelli di ottimizzazione distribuita, sulle astrazioni di sincronizzazione dei parametri e sulle pipeline di addestramento efficienti in memoria.
Capacità di applicare conoscenza e comprensione Essere in grado di applicare astrazioni di elaborazione dati scale-out per mappare carichi di lavoro complessi (relativi a dati tabulari, testuali, immagini e grafi) in pipeline distribuite. Essere in grado di modellare e risolvere task massivi di estrazione, aggregazione e apprendimento dei dati utilizzando bound di sketching probabilistici e metodi di data-skipping in distribuzioni reali su larga scala.
Autonomia di giudizio Capacità di valutare criticamente i compromessi sistemici tra paradigmi di calcolo esatti e approssimati (es. velocità vs. accuratezza nello sketching, o overhead di sincronizzazione vs. efficienza statistica nell'ottimizzazione distribuita) rispetto a differenti vincoli operativi e infrastrutturali.
Abilità comunicative Essere in grado di spiegare in modo chiaro, formale e rigoroso i pattern architetturali avanzati e le astrazioni matematiche delle piattaforme big data, esponendo la letteratura scientifica sottoposta a revisione paritaria proveniente dalle principali conferenze internazionali con fluidità accademica.
Capacità di apprendimento Acquisire una solida base concettuale e orientata alla ricerca che consenta lo studio indipendente dei futuri sviluppi delle infrastrutture cloud, dei moderni framework di esecuzione e dei problemi aperti nell'ingegneria dei sistemi di machine learning massivi.

Programma

Introduzione

  • Il fenomeno "Big Data"
  • Infrastruttura
  • Distributed File Systems (HDFS)
  • MapReduce (Hadoop)
  • Spark
  • PySpark + Google Colaboratory

Apprendimento non-supervisionato: Clustering

  • Similarità
  • Algoritmi: K-means
  • Esempio: Clustering di documenti testuali

Riduzione della dimensionalità

  • Feature Extraction
  • Algoritmi: Principal Component Analysis (PCA)
  • Esempio: PCA + Riconoscimento cifre

Apprendimento supervisionato

  • Fondamenti di apprendimento automatico
  • Regressione/Classificazione
  • Algoritmi: Linear Regression/Logistic Regression/Random Forest
  • Esempi:
  • Linear Regression - Predizione prezzo vendita case
  • Logistic Regression/Random Forest - Predizione sottoscrizione offerta bancaria

Sistemi di Raccomandazione

  • Content-based vs. Collaborative filtering
  • Algoritmi: k-NN, Matrix Factorization (MF)
  • Esempio: Sistema di Raccomandazione di Film (MovieLens)

Analisi di Grafi

  • Link Analysis
  • Algoritmi: PageRank
  • Esempio: Ranking (di un estratto) del Google Web Graph

Analisi di dati real-time

  • Streaming Data Processing
  • Esempio: Twitter Hate Speech Detector
  • Introduzione [3 ore]
  • Clustering [7 ore]
  • Dimensionality Reduction [5 ore]
  • Il Problema di Raccomandazione [10 ore]
  • Analisi di Grafi [5 ore]

Modalità d'esame

Per il superamento dell'esame è previsto lo sviluppo di un progetto software attinente ai temi trattati durante lo svolgimento del corso e concordato in anticipo con il docente. La discussione e valutazione del progetto avverrà in opportuna sede di prova orale, la quale potrà essere integrata con domande su tutti gli argomenti affrontati nel corso.

Testi di riferimento

  • Mining of Massive Datasets [Leskovec, Rajaraman, Ullman] (available online)
  • Big Data Analysis with Python [Marin, Shukla, VK]
  • Large Scale Machine Learning with Python [Sjardin, Massaron, Boschetti]
  • Spark: The Definitive Guide [Chambers, Zaharia]
  • Learning Spark: Lightning-Fast Big Data Analysis [Karau, Konwinski, Wendell, Zaharia]
  • Hadoop: The Definitive Guide [White]
  • Python for Data Analysis [Mckinney]
  • Mining of Massive Datasets [Leskovec, Rajaraman, Ullman] (available online)
  • Big Data Analysis with Python [Marin, Shukla, VK]
  • Large Scale Machine Learning with Python [Sjardin, Massaron, Boschetti]
  • Spark: The Definitive Guide [Chambers, Zaharia]
  • Learning Spark: Lightning-Fast Big Data Analysis [Karau, Konwinski, Wendell, Zaharia]
  • Hadoop: The Definitive Guide [White]
  • Python for Data Analysis [Mckinney]

Codice insegnamento 1041764

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

Obiettivi formativi: Essere in grado di progettare e valutare un sistema biometrico o multibiometrico Conoscere le caratteristiche e le tecniche fondamentali relative alle biometrie fisiche come volto, impronte, iride,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi: Essere in grado di progettare e valutare un sistema biometrico o multibiometrico Conoscere le caratteristiche e le tecniche fondamentali relative alle biometrie fisiche come volto, impronte, iride, ecc., e comportamentali come camminata, firma (caratteristiche dinamiche), stile di battitura, ecc. Conoscere le caratteristiche dell’architettura di un sistema biometrico: sistemi unimodali e multimodali. Essere in grado di valutare le prestazioni di un sistema biometrico in base alla modalità adottata: verifica, identificazione. Essere in grado di valutare/garantire la robustezza di un sistema biometrico rispetto ad attacchi di spoofing (furto di identità).
Conoscenza e capacità di comprensione: Fondamenti teorici della progettazione di un sistema biometrico e delle tecniche di estrazione/confronto delle caratteristiche specifiche per i principali tratti biometrici.
Capacità di applicare conoscenza e comprensione: Essere in grado di progettare ed implementare una applicazione di riconoscimento biometrico per almeno uno tratto biometrico.
Autonomia di giudizio: Essere in grado di valutare le prestazioni e la robustezza agli attacchi di un sistema biometrico. Essere in grado di trasferire tecniche e protocolli in contesti diversi.
Abilità comunicative: Essere in grado di comunicare/condividere i requisiti di un sistema biometrico, le modalità operative più adatte ad una certa applicazione, e le misure di performance del sistema
Capacità di apprendimento: Essere in grado di approfondire autonomamente gli argomenti presentati nel corso, relativamente a tecniche e metodi specifici/complessi o a tratti biometrici non presenti tra gli argomenti.

Programma

Introduzione ai sistemi biometrici (5 ore)

Valutazione di un sistema biometrico (10 ore)

Valutazione delle prestazioni

Affidabilità dei risultati del riconoscimento

Principali biometrie (30 ore)

Rilevazione del volto

Riconoscimento del volto 2D e 3D

Riconoscimento dell'orecchio

Riconoscimento dell'iride

Nozioni fondamentali di riconoscimento delle impronte digitali

Altre biometrie

Sistemi multibiometrici (15 ore)

Pagina web del corso: https://sites.google.com/a/di.uniroma1.it/biometric-systems/

  • Introduzione alle biometrie (5 ore)
  • Testi di riferimento: Slide Lezione 1
  • Valutazione dei sistemi Biometrici (12 ore)
  • Testi di riferimento: Slide Lezione 2 e Lezione 2bis
  • Rilevazione e riconoscimento del volto (15 ore)
  • Testi di riferimento: Slide Lezioni 4-7
  • Antispoofing del volto (5 ore)
  • Testi di riferimento: Slide Lesson 8
  • Riconoscimento dell'orecchio (3 ore)
  • Testi di riferimento: Slide Lesson 9
  • Riconoscimento dell'iride (8 ore)
  • Testi di riferimento: Slide Lesson 10
  • Riconoscimento delle impronte digitali (5 ore)
  • Testi di riferimento: Slide Lesson 11
  • Sistemi multibiometrici (3 ore)
  • Testi di riferimento: Slide Lesson 12
  • Esempi di sistemi realizzati con biometrie comportamentali (4 ore)
  • Testi di riferimento: Presentazioni di progetti

Modalità d'esame

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

MODALITA' DI ESAME

Occorre conseguire una valutazione sufficiente sia sul progetto che sulle domande orali che verteranno sull'intero programma del corso.

Progetto: progettazione ed implementazione di un modulo biometrico utilizzando MATLAB oppure OpenCV, in gruppo (fortemente consigliato) oppure individualmente.

E' richiesta una relazione dettagliata sul progetto, che menzioni chiaramente le eventuali fornti esterne utilizzate, e i punti in cui è stato sviluppato del codice originale per costruire l'applicazione finale. Occorre sottolineare tutte le scelte di progetto che sono state necessarie per ottenere una applicazione funzionante, e un chiaro schema architetturale per evidenziare le parti di codice prese dalle librerie e quelle sviluppate. Infine occorre eseguire una estesa valutazione delle prestazioni, eventualmente in modalità di verifica, e i risultati devono essere riportati nella relazione. Infine, l'esame orale include domande sull'intero corso, e non solo sul progetto.

Presentazione in aula, relazione scritta e demo del progetto

Domande su tutti gli argomenti del corso

Lingua: italiano o inglese

Le date che saranno pubblicate su INFOSTUD si riferiscono alle scadenze per la presentazione della relazione sul progetto. Le date dell'esame orale verranno concordate in seguito.

Testi di riferimento

Slide del corso e letture consigliate

Per approfondimenti:

A.K. Jain, P. Flynn, A.A. Ross, Handbook of Biometrics, Springer, 2008.

H. Wechsler, Reliable Face Recognition Methods: System Design, Implementation and Evaluation, Springer, 2007.

A.Ross, K. Nandakumar; A.K. Jain. Handbook of Multibiometrics. Springer, 2006

Letture suggerite alla fine di ogni lezione

Codice insegnamento 1041792

BLOCKCHAIN AND DISTRIBUTED LEDGER TECHNOLOGIES 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Le blockchain costituiscono un paradigma nuovo e rivoluzionario per la gestione distribuita dei sistemi transazionali. Una blockchain è un protocollo per la gestione di ledger distribuiti, ossia per…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Le blockchain costituiscono un paradigma nuovo e rivoluzionario per la gestione distribuita dei sistemi transazionali. Una blockchain è un protocollo per la gestione di ledger distribuiti, ossia per la memorizzazione decentralizzata di una sequenza di transazioni (ledger) a prova di manomissione, mantenuta e verificata dai nodi che partecipano alla rete. Una combinazione di reti peer-to-peer, consenso automatico, crittografia e meccanismi di mercato è al centro delle blockchain, che garantiscono così l'integrità e la trasparenza dei dati. Un numero crescente di piattaforme blockchain fornisce il supporto per i cosiddetti smart contract, ossia codice eseguibile che esprime come condurre attività di business tra le parti contraenti (ad esempio, trasferire beni digitali se una condizione è soddisfatta). La progettazione di un'applicazione sicura, verificabile ed efficiente basata su blockchain richiede la capacità di architettare correttamente le strutture comportamentali tra le parti coinvolte. Il corso copre in dettaglio i principi e le tecnologie alla base delle piattaforme blockchain e le proprietà che garantiscono, da un lato, e mira a fornire i mezzi per la creazione e l'analisi di soluzioni e applicazioni basate su blockchain, dall'altro.
Obiettivi specifici:
Il corso affronta quattro argomenti principali: 1) fondamenti delle blockchain e delle tecnologie distributed ledger; 2) funzionamento di Bitcoin, transazioni, UTXO, Script e consenso Proof-of-Work; 3) funzionamento di Ethereum, account, EVM, gas, Proof-of-Stake e introduzione agli smart contract, con cenni alla loro implementazione per token e NFT; 4) analisi di protocolli di DeFi, wallet, incentivi e applicazioni blockchain-based.
Conoscenza e comprensione:
Gli studenti apprenderanno le basi delle tecnologie blockchain e distributed ledger, comprendendo l’interazione tra primitive crittografiche, strutture dati, reti peer-to-peer, modelli transazionali e protocolli di consenso che contribuiscono a garantire integrità, persistenza e sicurezza delle piattaforme blockchain. Inoltre, studieranno il funzionamento di Bitcoin ed Ethereum, con attenzione a transazioni, UTXO, Script, Proof-of-Work, account, EVM, gas e Proof-of-Stake. Il corso introdurrà gli smart contract, chiarendone il ruolo, il funzionamento e alcuni cenni implementativi relativi a token e NFT. Sarà fornita anche una panoramica delle sfide di cybersecurity inerenti a wallet, protocolli di DeFi, exchange e applicazioni blockchain-based. Inoltre, i discenti guarderanno gli argomenti trattati anche da un punto di vista legislativo, al fine di considerare i principali vincoli normativi, incluso il rispetto della privacy degli utenti.
Applicazione di conoscenza e comprensione: Al termine del corso, gli studenti avranno ottenuto una elevata comprensione dei pilastri fondamentali delle tecnologie per distributed ledger e delle blockchain. Avranno altresì la capacità di progettare e implementare sistemi basati su blockchain. Inoltre, produrranno report ad elevato livello informativo progettati per gli stakeholder delle applicazioni decentralizzate.
Autonomia di giudizio: Gli studenti svilupperanno la capacità di valutare la qualità delle applicazioni decentralizzate e delle soluzioni basate su blockchain in generale dal punto di vista dell'affidabilità, della solidità comportamentale, del costo di esecuzione, dell'equilibrio del carico on-chain e off-chain, dell'applicabilità, della sicurezza informatica e della privacy.
Abilità comunicative: Gli studenti impareranno a documentare le loro scelte progettuali, anche attraverso l'uso di diagrammi e reportistica. Avranno anche acquisito la capacità di preparare presentazioni su argomenti scientifici.
Capacità di apprendimento: Le nozioni acquisite durante il corso forniranno agli studenti una solida base di conoscenza per poter ulteriormente approfondire gli aspetti più tecnici, e per mantenersi autonomamente informati sui continui sviluppi e aggiornamenti sulle blockchain e le distributed ledger technologies.

Programma

Bitcoin

Hash and Data Structure based on Hash

Digital Signatures

Consensus on Bitcoin and PoW

Incentives in Bitcoin

Mining and mining pool

51% Attacks

Bitcoin Transactions

Bitcoin Script and scripts applications

Bitcoin Blocks

Soft and Hard Forks

Wallet and Bitcoin Storage

Ethereum

EOA and Smart Contracts Accounts

PATRICIA Merkle Trie

Gas and Gas Fee

Ethereum PoS Consensus protocols, Casper and GHOST

Ethereum Incentive Layer

MEV

Advanced Topics:

Pump and Dump.

NFT WashTrading.

Liquidity Pool and Rug Pull.

  • Introduzione e concetti fondamentali
  • Testi di riferimento: Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction (Capitolo 1)
  • Bitcoin
  • Testi di riferimento: Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction (Capitolo 2,3,4,5)andMastering Bitcoin
  • Ethereum
  • Testi di riferimento: Mastering Ethereum and Eth2book
  • Argomenti avanzati
  • Testi di riferimento: Articoli e materiale condiviso a lezione

Modalità d'esame

L'esame è composto da 3 parti: Esame Scritto, Relazione con presentazione e Attività Pratiche.

1. Esame Scritto:

L'esame scritto si terrà nella data d'esame programmata. Consiste in domande aperte, domande a risposta multipla e esercizi.

2. Relazione con presentazione

Questa attività consiste nella stesura di una tesina basata su un argomento concordato con il docente e di relativa presentazione.

3. Attività Pratiche:

Queste attività prevedono applicazioni pratiche dei concetti di blockchain e saranno assegnate durante il corso.

Testi di riferimento

Bitcoins:

Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction, Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, and Steven Goldfeder.

Bitcoin: A Peer-to-Peer Electronic Cash System, Satoshi Nakamoto. Link: https://bitcoin.org/bitcoin.pdf

Ethereum:

White paper: https://ethereum.org/en/whitepaper/

Ethereum documentation: https://ethereum.org/en/developers/docs/

Ethereum book: https://eth2book.info

Additional materials:

Mastering Bitcoin: https://github.com/bitcoinbook/bitcoinbook/tree/develop

Mastering Ethereum: https://github.com/ethereumbook/ethereumbook

The doge of wall street: Analysis and detection of pump and dump cryptocurrency manipulations: Massimo La Morgia, Alessandro Mei, Francesco Sassi, Julinda Stefa

A game of NFTs: Characterizing NFT wash trading in the Ethereum blockchain: Massimo La Morgia, Alessandro Mei, Alberto Maria Mongardini, Eugenio Nerio Nemmi

Token Spammers, Rug Pulls, and Sniper Bots: An Analysis of the Ecosystem of Tokens in Ethereum and in the Binance Smart Chain : Federico Cernera, Massimo La Morgia, Alessandro Mei, Francesco Sassi

Codice insegnamento 10600490

CLOUD COMPUTING 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Il Cloud Computing è divenuto una delle fondamentali tecnologie dell’informazione, fornendo elevata scalabilità ed elasticità nella fornitura di applicazioni distribuite (aziendali e scientifiche).…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Il Cloud Computing è divenuto una delle fondamentali tecnologie dell’informazione, fornendo elevata scalabilità ed elasticità nella fornitura di applicazioni distribuite (aziendali e scientifiche). Alla fine del corso gli studenti avranno gli strumenti per comprendere l’impatto del Cloud Computing in un ambiente aziendale (e non) e le implicazioni tecnologiche nello sviluppo di applicazioni Cloud, specificatamente applicazioni per la memorizzazione e l’elaborazione di big data.
Obiettivi specifici Alla fine del corso, gli studenti avranno acquisito gli strumenti per:
usare le tecnologie di virtualizzazione a livello di sistema e a livello di applicazione usare tecnologie IaaS e PaaS progettare architetture virtualizzate fare il deployment di applicazioni Cloud valutare costi e prestazioni di sistemi Cloud Conoscenza e comprensione: Alla fine del corso, gli studenti avranno acquisito la conoscenza relativa ai fattori che hanno influenzato la diffusione del Cloud Computing, alle tecnologie di virtualizzazione, alle architetture Cloud (autoscaling, load balancing, monitoring, high availability), ai sistemi di memorizzazione dei dati nel Cloud. Alla fine del corso, gli studenti saranno capaci di comprendere i principi di funzionamento delle soluzioni basate su Cloud (design and operation) e di comprendere problemi di ricerca applicata relativi alle soluzioni basate su Cloud.
Applicare conoscenza e comprensione: Alla fine del corso, gli studenti saranno capaci di:
spiegare i principi del Cloud Computing spiegare le principali tecnologie Cloud risolvere problemi che richiedono l’uso delle tecnologie Cloud e del design e deployment di architetture virtualizzate e di applicazioni Cloud valutare le prestazioni e i costi di soluzioni basate su Cloud Capacità critiche e di giudizio: Nel corso gli studenti svilupperanno abilità di pensiero critico nel campo del Cloud Computing.
Capacità comunicative: Alla fine del corso gli studenti saranno capaci di comunicare le nozioni imparate a personale tecnico e manageriale.
Capacità di apprendimento successivo: Dopo il corso, gli studenti avranno acquisito la conoscenza per seguire corsi avanzati di Cloud Computing e di tecnologie big data.

Programma

OVERVIEW

The course will cover the fundamentals of Cloud computing: Processing, Storage of large data sets, performance, scalability, reliability and security. It also will cover the organization of popular public cloud platforms like Google and Amazon and the use of cloud application programming frameworks like MapReduce and Spark.

The course will deal with theoretical and practical aspects. Specific assignments and hands-on sessions will give you the possibility to develop your skill.

Examples of technologies you will learn about are: Docker, Amazon Web Services

The course will use the resource made available by the AWS Academy program

ARGUMENTS

  • The big picture of cloud computing, definition, business drivers, benefit and risks.
  • Cloud computing reference architecture
  • Enabling technologies
  • Virtualization (system level and process level)
  • Storage (cloud file systems, storage serving)
  • Monitoring
  • Adaptation and automation
  • Scalability and high availability
  • Security

For the latest version of the program and more information check the course web site https://sites.google.com/di.uniroma1.it/cloudcomputingcourse/

  • Lezioni seminario
  • Testi di riferimento: Vedi schedule corso
  • Flipped Classrooms
  • Testi di riferimento: Vedi schedule corso
  • Laboratori/progetto
  • Testi di riferimento: Vedi schedule corso

Modalità d'esame

The exam is based on

  • Lab assignments
  • A project
  • An oral exam

Update information is available on the teacher's bulletin board and the Google Classroom course page (updated each academic year) https://corsidilaurea.uniroma1.it/en/users/emilianocasalicchiouniroma1it

Testi di riferimento

  • Mastering Cloud Computing, Rajkumar Buyya; Christian Vecchiola; S.Thamarai Selvi

Morgan Kaufmann, ISBN: 978-0-12-409539-7

  • Cloud Computing: Concepts, Technology & Architecture, Thomas Erl, Zaigham Mahmood, Ricardo Puttini, Prentice Hall/PearsonPTR

ISBN: 978-0-13-338752-0

The learning material will be integrated with research papers and technical documentation

Update information are available on the course web site

https://sites.google.com/di.uniroma1.it/cloudcomputingcourse/home

Codice insegnamento 1047205

COMPUTATIONAL COMPLEXITY 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Apprendimento dei concetti fondamentali della complessità computazionale mediante strumenti matematici rigorosi. I temi principali del corso: l'intrattabilità dei problemi computazionali, i modelli di…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Apprendimento dei concetti fondamentali della complessità computazionale mediante strumenti matematici rigorosi. I temi principali del corso: l'intrattabilità dei problemi computazionali, i modelli di calcolo (macchine di Turing, circuiti booleani, alberi di decisione, complessità della comunicazione), la gerarchia delle classi di complessità (P, NP, coNP, BPP, ZPP, la gerarchia polinomiale), il problema P vs NP, la NP-completezza, i protocolli interattivi e i metodi probabilistici.
Conoscenza e capacità di comprensione
Conoscenza dei principali modelli di calcolo e delle relative misure di complessità. Comprensione delle tecniche per dimostrare lower bound e per ridurre problemi. Capacità di leggere e comprendere dimostrazioni matematiche di carattere combinatorio e probabilistico tipiche della teoria della complessità computazionale.
Capacità di applicare conoscenza e comprensione
Essere in grado di applicare le tecniche di riduzione per dimostrare la NP-completezza o la NP-hardness di problemi. Saper utilizzare metodi combinatori e probabilistici per ricavare risultati di complessità in modelli quali alberi di decisione e complessità della comunicazione.
Autonomia di giudizio
Capacità di valutare la difficoltà intrinseca di un problema computazionale, di identificare il modello di calcolo più adeguato per analizzarlo e di giudicare la correttezza e l'efficacia di una dimostrazione di complessità.
Abilità comunicative
Presentazione orale (in inglese, alla lavagna) di una dimostrazione di NP-hardness o NP-completezza scelta da una lista fornita dal docente, della durata di circa 20–25 minuti, rivolta ai colleghi del corso.
Capacità di apprendimento
Capacità di leggere autonomamente articoli e capitoli di testo avanzati di teoria della complessità computazionale, e di applicare le tecniche apprese per affrontare nuovi modelli e problemi aperti del settore.

Programma

Questo è il programma dell'anno 2022/2023. Il programma potrà subire leggere variazioni di anno in anno.

_________________________________________________

SYLLABUS OF "COMPUTAIONAL COMPLEXITY 2022/2023"

Massimo Lauria

_________________________________________________

1 Bibliography

==============

The main textbook of the course is

  • [AB] Arora, Barak. /Computational Complexity: A Modern Approach/.

Cambridge University Press, 2007.

Additional material on communication complexity and proof complexity

are in

  • [J] Jukna. /Boolean Function Complexity/. Springer, 2012.
  • [RY] Rao, Yehudayoff. /Communication Complexity and Applications/.

Cambridge University Press, 2020.

A proof from the last part of the course is only published, as far as

I know, in

  • [K] Knuth, the Art of Computer Programming, Vol 4, fascicle 6, Page

55-56.

All reference to a textbook refer to book [AB] unless

specified otherwise.

2 Introduction

==============

  • Introduction
  • Chapter 0
  • Parity on n variables requires CNF formulas of size Theta(n 2^n)
  • Equality of two strings of n bits requires n bits of

communication

3 Turing machines, Universality, Uncomputability, the class P

=============================================================

  • Sections 1.1, 1.2, 1.3, 1.4
  • Sections 1.5, 1.6
  • Exercises 1.2, 1.3, 1.5, 1.8, 1.14
  • Read and ponder the statement of Exercise 1.6, 1.7 and 1.9

4 NP and NP-completeness

========================

  • Karp reductions
  • NP-completeness
  • Non deterministic Turing Machines
  • Cook-Levin theorem proved via Circuit-SAT (see Section 6.1)
  • Decision vs Seach
  • coNP, EXP, NEXP
  • Implications of P vs NP
  • Sections 2.1, 2.2, 2.3 (Section 2.3.4 is optional), 2.4, 2.5, 2.6,

2.7

  • Section 6.1
  • Exercises 2.1, 2.2, 2.4, 2.6, 2.7, 2.8, 2.9, 2.10, 2.11, 2.12, 2.14,

2.15, 2.16, 2.17, 2.18, 2.21, 2.23, 2.24, 2.25, 2.26, 2.27, 2.29,

2.30, 2.31, 2.34.

5 Time Hierarchy Theorems, Oracles

==================================

  • Hierarchy theorem for deterministic time
  • Hierarchy theorem for non-deterministic time (just the statement)
  • Ladner theorem (just the statement)
  • Turing Machines with oracles
  • P vs NP does not relativize w.r.t. to Oracles
  • Sections 3.1, 3.2, 3.3, 3.4

6 Space complexity, NL-completeness

===================================

  • The Graph of configurations
  • PSPACE, TQBF is PSPACE-complete
  • Savitch's Theorem
  • Lospace reductions and NL-completeness
  • NL = coNL
  • Sections 4.1, 4.2, 4.3
  • Exercises 4.1, 4.2, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 4.10, 4.11

7 Randomized computation, RP, coRP, BPP, ZPP

============================================

  • Appendix A.2
  • Sections 7.1, 7.2 (no 7.2.4), 7.3, 7.4, 7.5 (no 7.5.3)
  • Exercises 7.1, 7.4, 7.5, 7.6

8 Interactive Proofs and PSPACE

===============================

  • randomness in interaction is necessary
  • public vs private randomness
  • IP, AM, MA classes
  • protocol for Graph Non Isomorphism
  • coNP \(\in\) IP
  • IP = PSPACE
  • Sections 8.1, 8.2, 8.3
  • Sections 8.2.2 and 8.2.3 are optional, but the statement of Theorems

8.12 and 8.13 are part of the program

  • Exercises 8.1, 8.2, 8.6, 8.8

9 Circuits and Polynomial Hierarchy

===================================

  • BPP vs P/poly
  • BPP in the second level of the hierarchy
  • Karp-Lipton theorem
  • if GI is NP-complete, then PH collapses to second level
  • Circuit size complexity
  • Theorem 1.29 on Jukna's book [J]
  • Sections 5.1, 5.2, 6.1, 6.2, 6.4, 6.5, 6.6, 7.5, 8.2.4
  • Exercises 5.1, 6.3, 6.5, 6.6

10 Decision trees

=================

  • decision trees
  • worst case depth complexity
  • certificate complexity
  • just the statement that bs(f)
  • P vs NP and various other topics

Modalità d'esame

1.Presentazione alla lavagna di risultati semplici (durante il corso)

2. Compito per casa di metà corso

3. Prova orale finale

Testi di riferimento

Testi principali:

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

S. Jukna. Boolean Function Complexity. Springer. 2012

A.Rao, A. Yehudayoff. Communication Complexity and Applications. Cambridge University Press, 2020

Altri testi complementari

E. Kushilevitz & N. Nisan. Communication Complexity. Cambridge University Press 2006.

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. 2019

C. Papadimitriou. Computational Complexity. Pearsons. 1994.

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

J. Krajicek. Proof Complexity. Cambridge. 2019.

Codice insegnamento 1047616

COMPUTER NETWORK PERFORMANCE 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Il corso ha l'obiettivo di fornire agli studenti gli strumenti analitici e metodologici per modellare, valutare e progettare le prestazioni dei sistemi di calcolo e delle reti, con particolare…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Il corso ha l'obiettivo di fornire agli studenti gli strumenti analitici e metodologici per modellare, valutare e progettare le prestazioni dei sistemi di calcolo e delle reti, con particolare riferimento alla teoria delle code applicata ai sistemi informatici. Il corso introduce i concetti fondamentali della teoria delle code, il background probabilistico necessario, le leggi operazionali (tra cui la legge di Little) per l'analisi predittiva e la risposta a domande di tipo "what-if", le catene di Markov a tempo discreto e continuo, il processo di Poisson e la coda M/M/1, fino ai sistemi multi-server e alle reti di code (server farm M/M/k, provisioning di capacità, teorema di Burke, reti di Jackson, reti chiuse e Mean Value Analysis). A partire da questo impianto quantitativo, il corso affronta inoltre il problema di conciliare l'ottimizzazione delle prestazioni con la sostenibilità dei sistemi, con particolare attenzione alle infrastrutture dei data center per l'intelligenza artificiale, dove il compromesso tra prestazioni, consumo energetico ed efficienza è oggi una sfida centrale. Il corso combina la trattazione teorica con l'analisi di casi reali e con attività di modellazione e simulazione.
Conoscenza e capacità di comprensione
Al termine del corso, lo studente avrà acquisito una conoscenza solida dei principi e delle tecniche alla base della modellazione delle prestazioni dei sistemi di calcolo e delle reti. Comprenderà la terminologia e la classificazione dei sistemi a coda, aperti e chiusi, e le metriche fondamentali di throughput, utilizzazione, numero di clienti nel sistema e tempo di risposta. Avrà padronanza del background probabilistico necessario, compresi variabili aleatorie, valore atteso e varianza, distribuzione normale, teorema del limite centrale e generazione di variabili aleatorie per la simulazione. Comprenderà le leggi operazionali e la legge di Little, le catene di Markov a tempo discreto e continuo, i concetti di ergodicità e distribuzione stazionaria, la distribuzione esponenziale, il processo di Poisson e la proprietà PASTA, nonché l'analisi della coda M/M/1. Conoscerà inoltre i modelli per sistemi multi-server e reti di code (M/M/k e M/M/k/k, provisioning di capacità e square-root staffing, reversibilità temporale e teorema di Burke, reti di Jackson e reti classificate, reti chiuse e Mean Value Analysis). Comprenderà infine le principali problematiche legate al compromesso tra prestazioni ed efficienza energetica nei sistemi di calcolo su larga scala e nelle infrastrutture data center per l'intelligenza artificiale.
Capacità di applicare conoscenza e comprensione
Lo studente sarà in grado di costruire e risolvere modelli a coda per rappresentare il comportamento di sistemi di calcolo e reti reali. Saprà applicare le leggi operazionali e la legge di Little per rispondere a domande di tipo "what-if" e stimare l'impatto di modifiche di sistema sulle prestazioni. Sarà capace di modellare sistemi tramite catene di Markov a tempo discreto e continuo, calcolare distribuzioni stazionarie e metriche di prestazione, e analizzare code M/M/1 e sistemi multi-server M/M/k. Saprà dimensionare la capacità di una server farm, applicare regole di provisioning come lo square-root staffing e analizzare reti di code aperte e chiuse mediante il product form di Jackson e la Mean Value Analysis. Sarà inoltre in grado di impostare e interpretare esperimenti di simulazione e di valutare quantitativamente il compromesso tra prestazioni, consumo energetico e sostenibilità, con applicazione alle infrastrutture data center per carichi di lavoro di intelligenza artificiale.
Autonomia di giudizio
Il corso mira a sviluppare la capacità di valutare criticamente le scelte progettuali dei sistemi di calcolo e delle reti sulla base di modelli quantitativi. Lo studente sarà in grado di discutere vantaggi e limiti delle diverse organizzazioni di server e politiche di gestione delle risorse, di riconoscere l'impatto della variabilità dei carichi di lavoro sulle prestazioni e di giudicare l'adeguatezza di un modello rispetto al sistema reale che intende rappresentare. Sarà inoltre in grado di valutare in modo consapevole il compromesso tra ottimizzazione delle prestazioni e sostenibilità, comprendendo le tensioni tra obiettivi di prestazione, costi, consumo energetico e impatto ambientale, con particolare riferimento alle infrastrutture data center per l'intelligenza artificiale.
Abilità comunicative
Lo studente acquisirà la capacità di descrivere in modo chiaro e rigoroso i modelli di prestazione dei sistemi di calcolo e delle reti e i risultati dell'analisi. Sarà in grado di utilizzare un linguaggio tecnico e matematico appropriato per formulare ipotesi di modellazione, presentare i risultati analitici e di simulazione e discuterne le implicazioni progettuali. Il corso favorisce inoltre la capacità di presentare e discutere i risultati di esercizi, casi di studio e attività di modellazione, argomentando le scelte effettuate e le conclusioni raggiunte anche in relazione agli aspetti di efficienza e sostenibilità.
Capacità di apprendimento
Al termine del corso, lo studente avrà sviluppato le competenze necessarie per approfondire autonomamente temi avanzati nel campo della valutazione delle prestazioni, della teoria delle code e della progettazione di sistemi di calcolo e reti efficienti e sostenibili. Sarà in grado di leggere letteratura tecnica e scientifica, comprendere modelli e metodi analitici, interpretare risultati sperimentali e aggiornare le proprie conoscenze rispetto all'evoluzione delle architetture di calcolo, delle tecniche di modellazione e delle sfide poste dalle infrastrutture per l'intelligenza artificiale.

Programma

Metodi analitici per stimare le prestazioni dei sistemi di rete esistenti e dimensionare nuovi sistemi ad alte prestazioni.

Analisi di processi stocastici discreti e continui, reti di code, metodi di misurazione delle reti tramite network tomography, analisi delle prestazioni di sistemi wired e wireless.

Modalità d'esame

Si terranno delle prove pratiche che prevedono soluzione di esercizi e piccoli progetti.

A discrezione del docente potrebbe essere richiesta una prova orale aggiuntiva.

Testi di riferimento

Mor Harcol-Balter, Performance Modeling and Design of Computer Systems, Cambridge University Press, 2013.

Mor Harcol-Balter, Performance Modeling and Design of Computer Systems, Cambridge University Press, 2013.

Codice insegnamento 1047617

COMPUTER VISION 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Il corso si propone di fornire agli studenti una panoramica completa della Computer Vision. Obiettivi specifici: Il corso fornisce i principi, le metodologie di base e gli algoritmi fondamentali per…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Il corso si propone di fornire agli studenti una panoramica completa della Computer Vision.
Obiettivi specifici: Il corso fornisce i principi, le metodologie di base e gli algoritmi fondamentali per la progettazione e l’applicazione di sistemi di visione artificiale.
Conoscenza e comprensione: Introduzione ai principi fondamentali e alle principali aree della Computer Vision, con conoscenze relative alla risoluzione di problemi quali estrazione delle caratteristiche, tracking, analisi della scena, riconoscimento di oggetti e analisi degli eventi.
Applicare conoscenza e comprensione: Saper applicare l’insieme di tecniche e approcci illustrati per la progettazione e realizzazione di sistemi di visione artificiale.
Capacità critiche e di giudizio: Gli studenti apprenderanno tecniche consolidate e una vasta gamma di metodi matematici utili alla progettazione di sistemi di visione.
Capacità comunicative: Gli studenti saranno in grado di interagire efficacemente con altri ricercatori nel campo della Computer Vision su un’ampia gamma di argomenti.
Capacità di apprendimento: Gli studenti saranno in grado di ampliare autonomamente le proprie conoscenze consultando la letteratura scientifica nel campo della Computer Vision.

Codice insegnamento 1047618

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

Obiettivi generali: Capire i concetti base dei sistemi concorrenti e le metodologie adottate nella soluzione dei problemi da essi posti Obiettivi specifici: Mutua esclusione, diverse proprietà di liveness, semafori,…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Capire i concetti base dei sistemi concorrenti e le metodologie adottate nella soluzione dei problemi da essi posti
Obiettivi specifici: Mutua esclusione, diverse proprietà di liveness, semafori, monitor, transazioni, atomicità, concorrenza senza mutua esclusione, altre proprietà di liveness, oggetto universale e consenso. Sistemi di transizioni etichettate, semantica a interleaving, sincronizzazione, simulazione e bisimulazione, tecniche di verifica, passaggio di nomi, sistemi di tipo.
Conoscenza e comprensione: Capire the problematiche di base dei sistemi concorrenti e le relative soluzioni possibili, i principi fondazionali dei linguaggi di programmazione concorrente e le relative tecniche di verifica
Applicare conoscenza e comprensione: essere in grado di risolvere problematiche basilari di semplici sistemi concorrenti
Capacità critiche e di giudizio: capire vantaggi e svantaggi delle varie possibili soluzioni a problematiche di sistemi concorrenti
Capacità comunicative: sviluppare un linguaggio tecnico e formale in grado di spiegare le soluzioni ideate e i relativi meriti
Capacità di apprendimento: comprendere scenari di programmazione complessi e le relative soluzioni, anche sofisticate

Programma

The course is split into 3 parts:

The first part studies foundational problems of concurrent systems:

  • sequential vs concurrent programs
  • Process synchronization (competition vs cooperation)
  • Safety and liveness properties; a hierarchy of liveness properties (deadlock freedom, starvation freedom, bounded bypass)
  • Mutual exclusion: atomic registers (algorithms by Peterson and Lamport; how to obtain a starvation free lock object from a deadlock free lock object), with specialized hardware primitives (test&set, compare&swap, fetch&add) and with non-atomic registers (Bakery algorithm).
  • Semaphores, monitors and their use for solving classical problems (producers-consumers, readers-writers, rendezvous, dining philosophers)
  • Transactional memory
  • Atomicity and its properties
  • mutex-free concurrency: liveness revisited (obstruction freedom, non-blocking and wait-freedom); mutex-free implementation of an unbounded stack; failure detectors Omega_X and Diamond_P, and the associated construction of non-blocking and wait-free implementations from an obstruction free implementation; hints on how to implement the Omega failure detector.
  • Universal object; consensus object and its universality; primitives hierarchy based on the consensus number.

The second part is focused on CCS (Calculus of Communicating Systems [Milner:1980]):

  • non-determinism
  • Labeled transition systems
  • recursion
  • parallel composition (interleaving semantics)
  • synchronization
  • restriction
  • bisimulation: strong vs weak, axiomatization, logical characterization, algorithmic verification.

The third part will present possible enhancements of the previous material (every lecture will be on a different topic). By following the students' interests, some of the following topics can be presented:

  • communication: name creation and passage
  • polyadic communication (type system for correct communications and encodability in the base calculus)
  • asynchronous communication and encodability of synchrony
  • higher-order communication and its encodability in the base calculus
  • encoding of the lambda-calcolus
  • a model for object-oriented languages
  • concurrent calculi with cryptography or distribution
  • truly concurrent semantics

WEBPAGE OF THE COURSE: https://sites.google.com/uniroma1.it/conc-sys/

  • Algoritmi per sistemi concorrenti (30 ore)
  • Testi di riferimento: Raynal (capitoli 1, 2, 3, 4, 5, 14, 16, 17)
  • Teoria della concorrenza (30 ore)
  • Testi di riferimento: appunti

Modalità d'esame

Esoneri nel corso delle lezioni o esame orale finale

Testi di riferimento

M. Raynal: Concurrent Programming: Algorithms, Principles and Foundations. Springer, 2013.

R. Milner. Communicating and Mobile Systems. Cambridge University Press, 1999.

R. Cleaveland and S. Smolka. Process Algebra. In Encyclopedia of Electrical Engineering, John Wiley & Sons, 1999.

R. Cleaveland and O. Sokolsky. Equivalence and Preorder Checking for Finite-State Systems.

J. Parrow. An Introduction to the pi-Calculus. In Handbook of Process Algebra, pages 479-543. Elsevier, 2001.

R. Milner. The Polyadic pi-Calculus: A Tutorial. In Logic and Algebra of Specification. Springer-Verlag, 1993.

Codice insegnamento 1047619

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

Obiettivi Generali: Lo scopo del corso è quello di tramandare i fondamenti della crittografia, che è la componente principale per la sicurezza nelle applicazioni digitali odierne. Obiettivi Specifici: Gli studenti…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi Generali: Lo scopo del corso è quello di tramandare i fondamenti della crittografia, che è la componente principale per la sicurezza nelle applicazioni digitali odierne.
Obiettivi Specifici: Gli studenti impareranno la metodologia della sicurezza dimostrabile, che permette di dimostrare la sicurezza dei moderni crittosistemi in senso matematico.
Conoscenza e Comprensione: -) Conoscenza dei fondamenti matematici della crittografia moderna. -) Conoscenza delle principali assunzioni crittografiche, su cui si basa la sicurezza dei moderni crittosistemi. -) Conoscenza degli schemi crittografici usati nella vita reale. Comprensione delle loro proprietà (teoriche e pratiche).
Applicare Conoscenza e Comprensione: -) Come selezionare la giusta primitiva crittografica per una data applicazione. -) Come analizzare la sicurezza di un dato crittosistema.
Capacità critiche e di giudizio: Gli studenti saranno in grado di giudicare se una data primitiva crittografica è sicura oppure no.
Capacità Comunicative: Come descrivere la sicurezza di una costruzione crittografica nel linguaggio della sicurezza dimostrabile.
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

Il corso coprirà i seguenti argomenti.

1) Crittografia incondizionata: Sicurezza perfetta, one-time pad, teorema di Shannon. Autenticazione perfetta, universal hashing, estrattori, lemma "leftover-hash".

2) Sicurezza computazionale: Funzioni unidirezionali (OWFs) e teoria della complessità. Basi di teoria dei numeri e OWFs candidate. Indistinguibilità computazionale, e assunzioni decisionali.

3) Crittografia simmetrica: Generatori pseudocasuali (PRGs), bit hard-core, costruzioni di PRGs. Funzioni pseudocasuali (PRFs), costruzioni di PRFs, reti di Feistel. Cifratura simmetrica: Definizioni, costruzioni, e modi operativi. Autenticazione di messaggio: Definizioni, costruzioni, e cifratura autenticata.

4) Funzioni hash: Modello dell'oracolo casuale, resistenza alla pre-immagine primaria/secondaria, resistenza alle collisioni, costruzione di Merkle-Damgaard. Alberi di Merkle.

5) Crittografia a chiave pubblica: Cifrari a chiave pubblica: Definizioni, e crittosistemi di RSA ed ElGamal. Sistemi hash-proof e cifratura di Cramer-Shoup. Firme digitali: Definizioni, hash a dominio pieno, firme di Waters. Schemi di identificazione: Definizioni, costruzioni, e applicazioni alle firme digitali.

  • Sicurezza incondizionata (10 ore)
  • Testi di riferimento: Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, CRC Press, Second Edition, 2014
  • Crittografia simmetrica (25 hours)
  • Testi di riferimento: Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, CRC Press, Second Edition, 2014
  • Crittografia asimmetrica (25 hours)
  • Testi di riferimento: Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, CRC Press, Second Edition, 2014

Modalità d'esame

La modalità di esame consiste in un esame scritto che richiede la risoluzione di 3 esercizi (simili a quelli svolti a lezione) e l'esposizione di 3 argomenti di teoria tra quelli trattati durante il corso. Non è ammesso consultare libri o note, e dispositivi digitali. Per superare l'esame occorre conseguire un voto non inferiore a 18/30 alla prova scritta.

Testi di riferimento

Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, CRC Press, Second Edition, 2014. Il materiale didattico ed altre informazioni sono disponibili anche da: https://dventuri83.github.io.

Daniele Venturi, Crittografia nel Paese delle Meraviglie, Springer, Collana di Informatica, 2012.

Oded Goldreich, Foundations of Cryptography - Volume 1 Basic Techniques, Cambridge University Press, 2001.

Jonathan Katz, Digital Signatures, Springer, 2010.

Salil P. Vadhan, Pseudorandomness, Foundations and Trends in Theoretical Computer Science, Vol. 7, Issue 1-3, 2012.

Codice insegnamento 1047622

DATA AND NETWORK SECURITY 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali Il corso di Data and Network Security è progettato per fornire agli studenti una solida base nei principi fondamentali della cybersecurity, esponendoli al contempo alle tendenze attuali e agli sviluppi…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Il corso di Data and Network Security è progettato per fornire agli studenti una solida base nei principi fondamentali della cybersecurity, esponendoli al contempo alle tendenze attuali e agli sviluppi più avanzati del settore. Inoltre, il corso mira a promuovere la partecipazione attiva in aula e la discussione tra studenti su tematiche relative alla sicurezza. Obiettivi specifici
Il corso di Data and Network Security ha l’obiettivo di offrire agli studenti una comprensione approfondita di un ampio spettro di concetti, paradigmi e applicazioni pratiche della cybersecurity. Si pone particolare enfasi su una prospettiva critica nei confronti del panorama di minacce in continua evoluzione, stimolando gli studenti non solo ad apprendere le basi della materia, ma anche a esplorare le sfide più recenti e le tendenze di ricerca. Ogni lezione è strutturata con un duplice obiettivo: in primo luogo, introdurre un argomento specifico di cybersecurity—come meccanismi di autenticazione, tipi di malware, canali di comunicazione occulti, cyber deception, attestazione remota nell’IoT, digital forensics, protezione dei dati, software-defined networking e minacce persistenti avanzate—e in secondo luogo, evidenziare le principali domande di ricerca, minacce emergenti e tecniche innovative relative a ciascun tema. Questo approccio garantisce agli studenti una preparazione teorica solida insieme a una consapevolezza delle problematiche pratiche e orientate alla ricerca. Uno degli obiettivi centrali del corso è coltivare il pensiero critico e la curiosità verso la ricerca. Gli studenti sono incoraggiati ad andare oltre una comprensione superficiale, approfondendo articoli scientifici che hanno avanzato lo stato dell’arte o evidenziato nuove vulnerabilità e abusi di sistema. Per stimolare questa mentalità, ogni studente condurrà una ricerca indipendente su un argomento di sicurezza a scelta. Analizzerà approcci esistenti, presenterà i risultati ai colleghi e parteciperà a discussioni sulle future direzioni della cybersecurity. Questo coinvolgimento attivo con la ricerca contemporanea fornirà agli studenti le competenze per valutare, mettere in discussione e contribuire al campo. Conoscenza e capacità di comprensione
Gli studenti acquisiranno una solida base nei principi fondamentali della cybersecurity, inclusi i concetti, le tecnologie e le pratiche essenziali per proteggere i sistemi digitali e i dati da accessi non autorizzati, attacchi ed exploit. Esploreranno aree chiave come i metodi crittografici, i protocolli di comunicazione sicura, la modellazione delle minacce e i principali tipi di attacco informatico (es. phishing, malware, attacchi di tipo denial-of-service). Attraverso lezioni teoriche e esempi pratici, svilupperanno la comprensione di come le misure di sicurezza siano progettate, implementate e valutate in contesti reali. Questa conoscenza costituirà la base per valutare i rischi, riconoscere vulnerabilità e applicare meccanismi protettivi in vari ambienti digitali. Capacità di applicare conoscenza e comprensione
Gli studenti metteranno in pratica quanto appreso attraverso progetti individuali o di gruppo che li stimoleranno a esplorare ambiti emergenti nel panorama della cybersecurity. Tali progetti li porteranno ad analizzare problemi specifici di sicurezza, valutare minacce reali o vulnerabilità e investigare meccanismi difensivi esistenti o innovativi. Attraverso revisioni della letteratura, progettazione di esperimenti o sviluppo di prototipi, gli studenti approfondiranno la comprensione della materia e svilupperanno competenze di pensiero critico, problem-solving e comunicazione scientifica. I progetti si concluderanno con presentazioni e relazioni tecniche, favorendo l’apprendimento collaborativo e il feedback tra pari. Capacità critiche e di giudizio
Gli studenti svilupperanno capacità analitiche critiche necessarie per valutare e confrontare approcci alternativi nella progettazione di sistemi informativi sicuri. Ciò include l’abilità di identificare vulnerabilità potenziali, valutare i compromessi tra sicurezza e usabilità e prendere decisioni informate basate su considerazioni teoriche e pratiche. Abilità comunicative
Gli studenti impareranno a documentare in modo efficace le scelte tecniche e progettuali, utilizzando sia metodi manuali sia strumenti automatizzati comunemente adottati nei flussi di lavoro in cybersecurity. Inoltre, svilupperanno la capacità di comunicare chiaramente argomenti scientifici complessi attraverso la preparazione e la presentazione di contenuti strutturati. Questo rafforzerà le loro competenze nel presentare risultati di ricerca, difendere le proprie scelte e partecipare a discussioni informate, abilità fondamentali in contesti accademici e professionali. Capacità di apprendimento
Le conoscenze e competenze acquisite nel corso forniranno agli studenti una base solida per proseguire gli studi in ambito cybersecurity. Saranno inoltre in grado di restare aggiornati sugli sviluppi continui del settore, consentendo loro di affrontare in modo critico nuove minacce, tecnologie e trend di ricerca nel corso della carriera.

Programma

Il corso è strutturato nelle seguenti due parti:

Background

La prima parte del corso introduce i concetti principali che vengono utilizzati nel resto del corso:

Introduction to cybersecurity

Concepts and terminology

Identification and authentication

Access control techniques

Virus, trojan and, covert channels

Main vulnerabilities of computer systems

Analysis of the most widespread attacks: buffer overflow, cross-site scripting, SQL injection.

Secure operating systems

Security of group communications

Security in cloud computing

Security in wireless networks

Secure protocols for wireless networks topology control

Information security management systems

Analisi della letteratura

Ogni studente sceglierà un argomento da una lista di possibili temi e terrà una presentazione al resto della classe.

  • Lezioni frontali
  • Testi di riferimento: vedi programma del corso

Modalità d'esame

The exam consists of an oral presentation, and in submitting a report. Each student will give a seminar on a topic of their choice from a list of possible topics, and answer questions from the other students in the classroom. Students' participation in the questions&answers phase will be considered in the final grade.

Students will also have to deliver a report describing how and in what measure they intend to solve a cybersecurity problem, which can be also related to the topic of their seminar.

The final grade is calculated as follows:

  • 45% Literature Analysis and active participation
  • 45% Written research report
  • 10% Active participation to Question&Answer section.

If for any reason students do not turn in most of the required above tests, then those students will be required to take an oral exam on the entire course programme, see. The weight of this final oral exam = 100%.

Testi di riferimento

https://sites.google.com/di.uniroma1.it/dns-sapienza/home

https://sites.google.com/di.uniroma1.it/dns-sapienza/home

Codice insegnamento 1047623

DEEP LEARNING AND APPLIED ARTIFICIAL INTELLIGENCE 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Tecniche avanzate di machine learning supervisionato e non supervisionato e modellazione di problemi complessi mediante deep learning. Reti neurali profonde, loro addestramento e interpretazione; reti…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi Tecniche avanzate di machine learning supervisionato e non supervisionato e modellazione di problemi complessi mediante deep learning. Reti neurali profonde, loro addestramento e interpretazione; reti convoluzionali e architetture prominenti; teoria del deep learning (con attenzione alla convergenza); framework per l'implementazione; autoencoders; attacchi avversari; modelli generativi a diffusione.
Conoscenza e capacità di comprensione Conoscenza del funzionamento delle reti neurali e della loro interpretazione matematica come approssimatori universali. Comprensione dei limiti e delle potenzialità dei modelli avanzati di machine learning.
Capacità di applicare conoscenza e comprensione Progettazione, implementazione, messa in esercizio e analisi di architetture di deep learning per risolvere problemi complessi in diversi ambiti applicativi.
Autonomia di giudizio Capacità di valutare le prestazioni di diverse architetture e la loro capacità di generalizzazione.
Abilità comunicative Capacità di comunicare con chiarezza la formulazione di un problema di apprendimento avanzato e la sua implementazione, nonché la sua applicabilità in contesti realistici, motivando le scelte architetturali e di regolarizzazione.
Capacità di apprendimento Capacità di apprendere tecniche alternative, più complesse e recenti selezionate dallo stato dell'arte, e di implementare tecniche esistenti in modo efficiente, robusto e affidabile.

Programma

  • Data, features, and embeddings
  • Data awareness
  • Modeling prior knowledge
  • The curse of dimensionality
  • Task-driven features and invariances
  • Recap of linear algebra
  • Vector spaces, bases
  • Linear maps
  • Matrix notation and matrix algebra
  • Tensors and tensor operations
  • Parametric models and regression
  • Linear and polynomial regression
  • Convexity and Lp norms
  • Underfitting and overfitting
  • Cross validation
  • Logistic regression
  • Optimization
  • Gradient descent
  • Stochastic gradient descent
  • Learning rate, decay, momentum, batch size
  • Forward and reverse-mode automatic differentiation
  • Deep neural networks
  • Multi layer perceptron
  • Backpropagation
  • Universal approximation theorems
  • Autograd and modules
  • Invariance, equivariance, compositionality
  • Convolutional neural networks
  • Pooling
  • Double descent
  • Regularization: weight penalty, early stopping, dropout, batchnorm
  • Generative models
  • PCA
  • Manifolds and the manifold hypothesis
  • Representation learning
  • Autoencoders: variational, contractive, denoising
  • Generative adversarial networks
  • Adversarial learning
  • Decision boundaries
  • Black-box and white-box attacks
  • Adversarial perturbations: universal and one-pixel
  • Adversarial training
  • Geometric deep learning
  • Learning on graphs and point clouds
  • Learning on surfaces
  • Generative models of structured data
  • Adversarial surfaces
  • Introduzione al deep learning
  • Testi di riferimento: Slide e note
  • Dati, feature, ed embedding
  • Testi di riferimento: Slide e note
  • Regressione lineare, convessità e gradienti
  • Testi di riferimento: Slide e note
  • Tensori e operazioni su tensori
  • Testi di riferimento: Slide e note
  • Overfitting e modelli nonlineari
  • Testi di riferimento: Slide e note
  • Modelli lineari e PyTorch Dataset
  • Testi di riferimento: Slide e note
  • Stochastic gradient descent
  • Testi di riferimento: Slide e note
  • Regressione logistica e ottimizzazione
  • Testi di riferimento: Slide e note
  • Multi-layer perceptron e back-propagation
  • Testi di riferimento: Slide e note
  • Autograd e Module
  • Testi di riferimento: Slide e note
  • Convolutional neural networks
  • Testi di riferimento: Slide e note
  • Regolarizzazione, batchnorm e dropout
  • Testi di riferimento: Slide e note
  • Incertezza, regolarizzazione e il deep learning toolset
  • Testi di riferimento: Slide e note
  • PCA e VAE
  • Testi di riferimento: Slide e note
  • VQ-VAE
  • Testi di riferimento: Slide e note
  • Strumenti del mestiere
  • Testi di riferimento: Slide e note
  • Adversarial learning & Geometric deep learning
  • Testi di riferimento: Slide e note
  • Diffusion models
  • Testi di riferimento: Slide e note
  • Self-attention e transformers
  • Testi di riferimento: Slide e note

Modalità d'esame

Le modalità di verifica consistono nei seguenti passi:

1. Una prova intermedia scritta di autovalutazione, che non concorre al calcolo finale del voto.

2. Lo svolgimento di un progetto, potenzialmente in gruppi.

3. Un esame orale opzionale.

L'esame orale, opzionale, può apportare fino a 3 punti (sia in positivo che in negativo) al voto complessivo.

Tutte queste fasi sono volte a valutare le competenze tecniche e la comprensione teorica sviluppate nel corso dell'insegnamento, così come la capacità di lavorare in gruppo, la conoscenza della letteratura, la capacità di formulare correttamente un problema di deep learning e la messa a punto di un impianto sperimentale (software).

Testi di riferimento

Data la natura altamente dinamica dell'area coperta da questo corso avanzato, non è previsto un testo unico di riferimento. Durante il corso verranno indicate e fornite di volta in volta le fonti sotto forma di articoli scientifici e capitoli di libri.

Come riferimento generale, i seguenti libri possono rivelarsi utili:

Deep Learning

Ian Goodfellow, Yoshua Bengio, Aaron Courville

MIT Press, 2016

Deep Learning with PyTorch

Vishnu Subramanian

Packt, 2018

Deep Learning

Ian Goodfellow, Yoshua Bengio, Aaron Courville

MIT Press, 2016

Deep Learning with PyTorch

Vishnu Subramanian

Packt, 2018

Codice insegnamento 10593236

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

Obiettivi generali Il corso ha come obiettivo di illustrare i concetti fondamentali dei sistemi distribuiti e la loro implementazione nei sistemi reali a larga scala moderni. Obiettivi specifici Gli studenti si…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Il corso ha come obiettivo di illustrare i concetti fondamentali dei sistemi distribuiti e la loro implementazione nei sistemi reali a larga scala moderni.
Obiettivi specifici Gli studenti si familiarizzeranno con tecniche di analisi, progetto e monitoraggio di sistemi distribuiti
Conoscenza e comprensione Al termine del corso gli studenti avranno acquisito conoscenze avanzate relative al monitoraggio delle computazioni distribuite, fault tollerance e failure detectors, consistenza e consenso, orologi logici e vector clocks per i sistemi asincroni,
Applicare conoscenza e comprensione Al termine del corso gli studenti saranno in grado di applicare le conoscenze acquisite all'analisi di sistemi reali come ad esempio Chord e Amazon.
Capacità critiche e di giudizio Lo studente otterrà la capacità di analisi e valutazione della correttezza e dell’efficienza delle computazione distribuite, di comprendere le loro caratteristiche principali e di valutare in maniera critica pregi e difetti.
Capacità comunicative Lo studente acquisirà la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata durante la prova orale.
Capacità di apprendimento successivo Le conoscenze acquisite permetteranno allo studente di affrontare lo studio di ulteriori ma più specifici protocolli di tipo distribuito in modo approfondito e completo, e di essere in grado di progettare soluzioni di system design a partire da quelle dei sistemi reali affrontati in classe.

Programma

1. Observing distributed computations

2. 2-Phase Commit

3. Paxos, Fast Paxos, and Multi-Paxos

4. Raft

5. Randomized Consensus

6. Failure Detectors

7. Shared Memory

8. Bitcoin

9. Tor and the Dark Web

10. Other interesting Practical Distributed Systems

  • Nozioni fondamentali
  • Testi di riferimento: Nessuno
  • Consensus
  • Testi di riferimento: Nessuno
  • Bitcoin
  • Testi di riferimento: Nessuno
  • Practical Distributed Systems
  • Testi di riferimento: Nessuno

Modalità d'esame

Prove in itinere, prova scritta e prova orale.

Testi di riferimento

Nessun testo.

Nessuna bibliografia.

Codice insegnamento 1047624

Elective course 2° anno · 1° semestre · 6 CFU · 0 file

Attività formative a scelta dello studente (art.10, comma 5, lettera a) Ambito disciplinare: A scelta dello studente

Scheda dell'insegnamento

Obiettivi formativi

Attività formative a scelta dello studente (art.10, comma 5, lettera a) Ambito disciplinare: A scelta dello studente

Codice insegnamento AID-81eacc8b-9fb

FINAL EXAM 2° anno · 2° semestre · 36 CFU · 0 file

La prova finale consiste nella discussione di una tesi di laurea magistrale, costituita da un documento scritto, preferibilmente in lingua inglese, che presenta i risultati di uno studio originale condotto su un problema…

Scheda dell'insegnamento

Obiettivi formativi

La prova finale consiste nella discussione di una tesi di laurea magistrale, costituita da un documento scritto, preferibilmente in lingua inglese, che presenta i risultati di uno studio originale condotto su un problema di natura applicativa, sperimentale o di ricerca.
Questo permetterà di valutare la capacità di applicare le conoscenze apprese a un problema specifico, la capacità di prendere decisioni autonome e di comunicare gli aspetti metodologici e tecnici del lavoro svolto.

Codice insegnamento AAF2600

FORMAL METHODS FOR AI-BASED SYSTEMS ENGINEERING 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: L'insegnamento è indirizzato all'acquisizione delle conoscenze logiche e di modellazione necessarie alla ingegneria dei sistemi basata su intelligenza artificiale. Obiettivi specifici:…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: L'insegnamento è indirizzato all'acquisizione delle conoscenze logiche e di modellazione necessarie alla ingegneria dei sistemi basata su intelligenza artificiale.
Obiettivi specifici: L'insegnamento consentirà agli studenti di padroneggiare un portafoglio rappresentativo di metodi formali per l'ingegneria dei sistemi basata su intelligenza artificiale, tra cui approcci alla verifica formale e di ottimizzazione del design di sistemi complessi.
Conoscenza e comprensione: Alla fine del corso gli studenti avranno piena comprensione degli strumenti di modellazione e delle tecnologie proposti.
Capacità di applicare conoscenza e comprensione: Gli studenti saranno in grado di utilizzare gli strumenti presentati durante il corso e di approfondirne lo studio consultando autonomamente altri testi dedicati all'argomento, inclusa la letteratura scientifica dell'area.
Capacità critiche e di giudizio: Le conoscenze acquisite permetteranno agli studenti di affrontare al meglio le attività di ingegneria dei sistemi durante la loro carriera lavorativa.
Capacità di comunicazione: Gli studenti verranno stimolati ad esporre ed a comunicare le proprie esperienze con i loro colleghi e con i docenti.
Capacità di proseguire lo studio: Il corso tratterà soltanto alcune delle metodologie e tecnologie disponibili, ma renderà edotti gli studenti dell'ampio spettro di approcci disponibili all’ingegneria dei sistemi basata su intelligenza artificiale. Questo permetterà agli studenti di poter scegliere criticamente le metodologie e le tecnologie più opportune per ogni nuovo problema.

Programma

Strutture di Kripke, logiche temporali, il problema del model checking, complessità.

Automi di Buchi, on-the-fly computation, riduzione dello spazio di ricerca, mu-calcolo, OBDD, automi ibridi.

Ragionamento composizionale, model checking per il software, model checking probabilistico.

Intelligenza artificiale nell'ingegneria dei sistemi, ragionatori e model checker stato dell'arte, casi di studio.

  • Strutture di Kripke, Logiche temporali, il problema del Model Checking, Complessità
  • Automi di Buchi, calcolo on-the-fly, riduzioni dello spazio di ricerca, mu-calcolo, OBDD, automi ibridi
  • Ragionamento composizionale, model checking del software, model checking probabilistico
  • Intelligenza artificiale nell'ingegneria dei sistemi, ragionatori e model checker allo stato dell'arte, casi di studio

Modalità d'esame

L'esame consiste in una prova scritta ed un progetto da svolgere sotto forma di relazione scritta e software, e da presentare in seminari multipli.

La prova scritta consiste in domande ed esercizi sulle diverse parti del programma d'esame.

Il progetto consiste nell'approfondimento di uno o più argomenti non visti nel corso e/o nella progettazione e sviluppo di software che permetta l'uso di metodi formali nell'ingegneria dei sistemi basata su intelligenza artificiale.

Per superare con successo l'esame è necessario che il punteggio di ogni singola prova sia almeno pari a 'sufficiente'.

Testi di riferimento

Materiale didattico reso disponibile dal docente.

Libro di testo consigliato:

Edmund M. Clarke, Jr., Orna Grumberg, Daniel Kroening, Doron Peled and Helmut Veith.

Model Checking, Second Edition.

MIT Press, 2018

ISBN: 9780262038836

Altri testi suggeriti:

Clarke, E.M., Henzinger, Th.A., Veith, H., Bloem, R. (eds).

Handbook of Model Checking.

Springer, 2018

ISBN: 9783319105758

Christel Baier, Joost-Pieter Katoen

Principles of Model Checking

MIT Press, 2008.

ISBN: 9780262026499

Codice insegnamento 10607006

FOUNDATIONS OF DATA SCIENCE 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi: Acquisire i fondamenti della scienza dai dati e dell'apprendimento automatico. Rendere gli studenti consapevoli degli strumenti teorici e pratici della scienza dei dati e dell'apprendimento…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi: Acquisire i fondamenti della scienza dai dati e dell'apprendimento automatico. Rendere gli studenti consapevoli degli strumenti teorici e pratici della scienza dei dati e dell'apprendimento automatico, nonché dei loro limiti intrinseci; rendere gli studenti in grado di affrontare problemi reali attraverso gli strumenti più appropriati. Conoscenza e capacità di comprensione: Il corso fornisce le nozioni, tecniche e metodologie di base utilizzate nell'ambito della scienza dei dati e dell'apprendimento automatico. Fornisce inoltre i rudimenti di programmazione necessari ad applicare la teoria a casi reali Capacità di applicare conoscenza e comprensione: Alla fine del corso, gli studenti sapranno affrontare problemi concreti di scienza dei dati, dalla loro formalizzazione sino alla manipolazione dei dati attraverso appropriati strumenti software. Autonomia di giudizio: Gli studenti saranno in grado di scegliere le tecniche da applicare al caso specifico e di valutarne le prestazioni. Abilità comunicative: Gli studenti saranno in grado di rappresentare e comunicare l'informazione estratta dai dati, attraverso l'uso razionale di grafici e indicatori. Capacità di apprendimento: Gli studenti saranno messi in grado di apprendere autonomamente nozioni sia teoriche che pratiche del campo.

Codice insegnamento 1047627

GRAPH THEORY 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Lo studente raggiungerà una piena padronanza dei risultati classici della teoria dei grafi e verrà inoltre a conscenza dei risultati e dei concetti più recenti della ricerca attuale in teroia dei…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Lo studente raggiungerà una piena padronanza dei risultati classici della teoria dei grafi e verrà inoltre a conscenza dei risultati e dei concetti più recenti della ricerca attuale in teroia dei grafi. Obiettivi specifici: Gli argomenti fondamentali che lo studente conoscerà dopo il corso includono: alberi e alberi spanning in grafi; connettività nei grafi; Cicli Hamiltonian e condizioni sufficienti per la loro esistenza. Teorema di Menger e flussi nei grafici. La teoria dei matching nei grafi inclusi i teoremi di Konig, Hall e Tutte. Teoria dei grafi estremi e la teorema di Turan e la teoria di Ramsey. Grafi planari e la colorazione di grafi. Conoscenza e comprensione: Lo studente acquisirà padronanza delle tecniche di base utili per le dimostrazioni matematiche e prenderà familiarità con le tecniche più avanzate. Inoltre potrà comprendere sia i risultati fondamentali della teoria dei grafi che le dimostrazioni degli stessi. Applicazione di conoscenza e comprensione Lo studente prenderà confidenza con il concetto matematico di induzione applicato a diversi contesti e sarà in grado di risolvere in maniera autonoma i problemi di base della teoria dei grafi. Autonomia di giudizio: Lo studente sarà in grado di selezionare in maniera autonoma gli strumenti matematici necessari per la risoluzione di un problema. Potrà inoltre stabilire quali sono gli argomenti di ricerca più significativi nell'ambito della teoria dei grafi. Abilità comunicative: Lo studente acquisirà l'abilità di scrivere in maniera rigorosa le dimostrazioni matematiche della disciplina. Capacità di apprendimento: Al completamento del corso di studi, lo studente sarà in possesso degli strumenti necessari per leggere e comprendere la letteratura scientifica sulla teoria dei grafi e per produrre ricerca originale nel campo.

Codice insegnamento 1047629

HIGH-PERFORMANCE COMPUTING 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali Progettazione e programmazione di sistemi per il calcolo ad alte prestazioni Obiettivi specifici Panoramica dei sistemi HPC Metriche di prestazione Architetture CPU moderne per l’HPC Modello Roofline…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Progettazione e programmazione di sistemi per il calcolo ad alte prestazioni Obiettivi specifici Panoramica dei sistemi HPC Metriche di prestazione Architetture CPU moderne per l’HPC Modello Roofline Processori vettoriali Limiti di prestazione e profilazione Progettazione orientata ai dati Acceleratori hardware HPC su larga scala Ruolo degli interconnect nei sistemi HPC Introduzione alle reti scale-up e scale-out Panoramica delle metriche di prestazione delle reti Reti scale-out: progettazione della topologia per i sistemi HPC Reti scale-out: instradamento adattivo Reti scale-out: controllo della congestione Reti scale-up e scale-out: protocolli di interconnessione ad alte prestazioni RDMA, InfiniBand, Slingshot, RoCE, ecc. Comunicazioni collettive nell’HPC Analisi e ottimizzazione del carico di lavoro Conoscenza e capacità di comprensione Conoscere e capire come progettare e programmare sistemi per il calcolo ad alte prestazioni Capacità di applicare conoscenza e comprensione Dimostrare di saper progettare sistemi HPC Dimostrare di saper scrivere codice ottimizzato per applicazioni HPC Autonomia di giudizio Saper scegliere il miglior approccio, tra i vari studiati, per risolvere un determinato compito Abilità comunicative Essere in grado di valutare e motivare le proprie scelte nella progettazione di un sistema HPC Capacità di apprendimento Capire le differenze e i vantaggi delle varie tecniche di progettazione di sistemi HPC

Programma

Il corso copre i seguenti argomenti:

1. Basi della logica binaria: porte logiche, livelli logici, margini di rumore, porte CMOS, sistemi di numerazione, rappresentazione dell’informazione

2. Progettazione di sistemi combinatori: equazioni booleane, algebra booleana, mappe K, blocchi combinatori, timing

3. Progettazione di sistemi sequenziali: Latch e Flip-Flop, progettazione di logica sincrona, macchine a stati finiti, tempistiche della logica sequenziale.

4. Linguaggi descrittivi hardware (hdl): logica combinatoria, logica sequenziale, macchine a stati finiti, system verilog, VHDL

5.blocchi digitali costitutivi: circuiti aritmetici, blocchi sequenziali, matrici di memoria, matrici logiche.

Modalità d'esame

L'esame prevede uno scritto (con esercizi simili a quelli svolti durante le lezioni) e un orale su tutto il programma svolto. Le prove scritte durano 2 ore e prevedono domande a risposta aperta, ognuna con un suo punteggio in base alla difficoltà della domanda stessa.

Testi di riferimento

Sarah L. Harris, David Money Harris - Digital Design and Computer Architecture, ARM Edition, Morgan Kaufmann (2015)

Reti logiche, Mano M. Morris, Charles R. Kime, Antonio Gentile , Prentice Hall, Pearson.

Codice insegnamento 10620566

HUMAN COMPUTER INTERACTION ON THE WEB 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali Il corso di sistemi informativi analizza differenti tipologie di sistemi informativi e come esse possono contribuire al successo degli obiettivi di un’azienda; permette di comprendere gli approcci e…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali Il corso di sistemi informativi analizza differenti tipologie di sistemi informativi e come esse possono contribuire al successo degli obiettivi di un’azienda; permette di comprendere gli approcci e i modelli da usare per valutare la qualità dei processi, del software e dei servizi ICT; e fornisce le conoscenze di base per pianificare, gestire e controllare i progetti IT.
Obiettivi specifici

  • Conoscenza e comprensione – Modello funzionale e struttura informativa dei processi aziendali – esigenze di integrazione e requisiti di controllo dei dati dei sistemi informatici aziendali – sistemi e tecnologie per sviluppare e mantenere un e-business di successo – principali settori di applicazione dei sistemi di informazione in vari settori di mercato – organizzazione IT e modelli di valutazione della qualità IT – conoscenze di base di contesto, tecniche/metodologie e soft skill per la gestione dei progetti ICT
  • Applicazione di conoscenze e comprensione – Analizzare le diverse tipologie di requisiti in relazione a differenti categorie di utenti (stakeholder) di sistemi informativi – Selezionare l’appropriato modello per valutare la qualità dei processi ICT, del prodotto software e dei servizi ICT – Sviluppare uno studio di fattibilità selezionando l’appropriata architettura applicativa e tecnologica – Preparare, per un semplice progetto ICT, un piano di sviluppo nel rispetto dei vincoli di tempo, costi, qualità e definendo l’appropriata organizzazione – Controllare un progetto ICT in corso, applicando le tecniche di project management – Comprendere a valutare le lezioni apprese nei precedenti progetti
    Capacità critiche e di giudizio: Gli studenti, mediante test e case study, acquisiranno competenze nella comprensione dei tipi di sistemi informativi, nell’uso dei modelli di quality management e nella pianificazione e gestione di un progetto.
    Capacità comunicative: Gli studenti, costituiti in team, saranno coinvolti in attività finalizzate alla realizzazione di un piano di comunicazione di un progetto basato su un case study, che sarà mostrato ai colleghi spiegando le ragioni delle scelte adottate.
    Capacità di apprendimento: La capacità di apprendimento sarà stimolata attraverso la preparazione di uno studio di fattibilità contenente: [a] la definizione dei requisiti del tipo di sistema informativo più adatto; [b] la definizione dei requisiti tecnici e di qualità; [c] la pianificazione di un progetto di implementazione del sistema informativo.

Programma

Questo corso tratta i principi di diverse tecnologie interattive, coinvolgendo la comunicazione sul web. Quindi, dopo un riepilogo degli argomenti di base di HCI, analizzeremo l'interazione in diversi contesti: mobile, indossabile, IoT, chatbots e messaggistica, auto, ecc.

Argomenti di questo corso:

Interfacce e interazione utente Post-WIMP:

  • interfaccia utente indossabile
  • UX per IoT
  • interfacce conversazionali: chatbot, interfaccia utente vocale
  • interazione tangibile
  • UI tattile / tattile
  • UI gestuale e dell'intero corpo
  • realtà virtuale e aumentata, interfaccia utente 3D
  • zoom UI, 10 piedi UI, display bifocali Dispositivi indossabili

Metodologie e strumenti HCI:

  • interazione implicita sensibile al contesto
  • teoria delle attività
  • gamification
  • pensiero progettuale

Casi studio:

  • social computing e progettazione di sistemi socio-tecnici
  • HCI in macchina
  • interazione uomo-robot (HRI)

Assegnazione e discussione di progetti-lavori.

  • .
  • Testi di riferimento: .

Modalità d'esame

L'esame si basa su un test del sistema interattivo e su una discussione con tutti i membri del gruppo. Durante la discussione, ad ogni studente verrà chiesto di illustrare:

-il proprio lavoro all'interno del gruppo,

-la ragione delle scelte progettuali e di sviluppo intraprese dal gruppo,

-i principi e i criteri dell'HCI discussi in classe anche al di fuori del tema del progetto.

I voti dei membri del gruppo non saranno correlati (ciascuno sarà valutato indipendentemente dagli altri studenti all'interno del gruppo) e si baseranno su una valutazione generale del lavoro del progetto e sulla preparazione di ogni studente nella discussione.

Oltre a questo, il voto si baserà sulla valutazione individuale della presentazione in aula (student report) e sulla valutazione delle domande scritte.

Testi di riferimento

  • Alan Dix – Janet Finlay – Gregory Abowd – Russell Beale “HUMAN-COMPUTER

INTERACTION”, 3rd edition http://dl.acm.org/citation.cfm?id=1203012.

  • The Encyclopedia of Human-Computer Interaction, 2nd Ed., https://www.interaction-

design.org/literature/book/the-encyclopedia-of-human-computer-interaction-2nd-ed

  • Interaction Design Foundation website: https://www.interaction-design.org/
  • Usability Body of Knowledge website: https://www.usabilitybok.org/
  • UI Patterns: uipatterns.com
  • Apple Human Interface Guidelines, https://developer.apple.com/library/ios/documentation/

UserExperience/Conceptual/MobileHIG/index.html

  • Introduction – Material Design – Google design guidelines http://www.google.com/design/spec/

material-design/introduction.html

  • further material will be suggested during the course and linked from the course website

Codice insegnamento 1047630

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

Obiettivi specifici Introduzione alle reti wireless di supporto ai sistemi Internet delle cose, analisi delle soluzioni di ricerca relative ad alcune delle sfide per la realizzazione dei sistemi internet delle cose…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi specifici Introduzione alle reti wireless di supporto ai sistemi Internet delle cose, analisi delle soluzioni di ricerca relative ad alcune delle sfide per la realizzazione dei sistemi internet delle cose (abbattimento del consumo energetico, integrazione del mondo IoT e della robotica, comunicazioni autonome, ottimizzazione congiunta dei requisiti applicativi e di comunicazione). Attività di laboratorio.
Struttura sintetica del corso: - Introduzione alle reti radio - Introduzione ai sistemi cellulari e alle reti mobili ad hoc - Protocolli per sensing systems: protocolli di MAC, routing, localizzazione e sincronizzazione - Verso l'Internet delle cose: caratteristiche e problematiche, protocolli standard e tecnologie, sfide ancora aperte - Integrazione di robotica e IoT systems. -Lab di programmazione IoT
Conoscenze e comprensione: Alla fine del corso lo studente saprà leggere e comprendere articoli scientifici, documenti tecnici e standard del settore; avrà compreso i trade-off prestazionali associati a diverse scelte progettuali. Sarà quindi in grado di progettare futuri sistemi wireless e IoT. Avrà fatto prime esperienze pratiche relative alla programmazione e valutazione sperimentale di tali sistemi.
Applicazione di conoscenza e comprensione: Gli studenti saranno in grado di partecipare alla progettazione di futuri sistemi e applicazioni IoT e di sistemi 5G.
Capacità di giudizio: Gli studenti svilupperanno le capacità di analisi necessarie per valutare diverse scelte progettuali alternative selezionando la migliore per ogni specifico scenario applicativo e tipo di tecnologia.
Capacità di comunicazione: Gli studenti impareranno ad analizzare e presentare articoli scientifici, idee di ricerca o soluzioni tecniche di settore, descrivendole in modo sintetico ed accurato, con un linguaggio tecnico adeguato.
Capacità di apprendimento: Gli studenti acquisiranno sia competenze teoriche che pratiche relative alla progettazione dei sistemi wireless e IoT, che li metteranno in grado di proseguire l'approfondimento di questi argomenti.

Codice insegnamento 1047634

LOGICS AND REASONING 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Il corso ha l'obiettivo di introdurre gli studenti ai risultati e ai metodi fondamentali della Logica Matematica con particolare attenzione alla loro applicazione nell'ambito dell'Informatica.…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Il corso ha l'obiettivo di introdurre gli studenti ai risultati e ai metodi fondamentali della Logica Matematica con particolare attenzione alla loro applicazione nell'ambito dell'Informatica. Obiettivi specifici: L'obiettivo del corso è duplice. In primo luogo si intende dotare lo studente di una conoscenza rigorosa e di una capacità di applicare quei risultati e metodi della Logica Matematica che trovano applicazione in numerose aree dell'Informatica. D'altra parte si intende offrire allo studente una strumenti e conoscenze fondamentali per intraprendere un percorso di ricerca in Informatica Teorica. Conoscenze e comprensione: Il corso mira a dotare lo studente di una conoscenza rigorosa degli argomenti del corso attraverso lo studio delle dimostrazioni e la produzione di argomenti rigorosi nello svolgimento degli esercizi. Particolare attenzione è data alla motivazione concettuale, alla dimostrazione rigorosa e alla applicabilità dei risultati trattati nel corso. Applicare conoscenza e comprensione: I metodi della logica matematica hanno un ruolo fondamentale in diverse aree dell'Informatica quali la Teoria della Complessità, la Teoria delle Basi di Dati, l'Intelligenza Artificiale. Si mira a stimolare nello studente la capacità di applicare in vari contesti dell'informatica i metodi e i risultati studiati. Capacità di giudizio: Viene stimolata la partecipazione attiva alle lezioni ed esercitata l'autonomia di giudizio attraverso l'assegnazione di esercizi e problemi. Capacità di comunicazione: Lo studente può scegliere di dare l'esame finale in forma di presentazione seminariale davanti alla classe di un risultato concordato con il docente. Capacità di apprendimento: I metodi di analisi e formalizzazione acquisiti durante il corso trovano applicazione in diverse aree dell'Informatica. L'esercizio di formalizzazione e problem-solving durante il corso rinforza le capacità di apprendimento e acquisizione di nuove competenze.

Programma

Parte 1 (Calcolo proposizionale e Logica del Primo Ordine)

  • Fondamenti: Logica predicativa, strutture e modelli. Teorie. Definibilità, completezza, decidibilità, esempi di teorie complete, eliminazione dei quantificatori, isomorfismo ed equivalenza elementare di strutture.
  • Teoria dei Modelli Finiti: esprimibilità di query in varie logiche. Metodi per dimostrare la non-esprimibilità di query, giochi di Ehrenfeucht-Fraissé, condizioni di back and forth, località di Gaifman, caratterizzazione logica di classi di complessità (Teorema di Fagin su NP).
  • Indecidibilità: indecidibilità della validità (Teoremi di Church e Trakhtenbrot), indecidibilità della verità aritmetica (Teoremi di Gödel), Gerarchia Aritmetica, computazione con oracoli, Teoremi di Post, teoremi con istanze calcolabili senza soluzioni calcolabili (Teoremi di König, Ramsey, Hindman).

Parte 2 (Logica Modale)

  • Concetti di base: Strutture relazionali; Linguaggi modali; Modelli e frame; Frame generali; Relazioni di conseguenza modale; Logiche modali normali
  • Modelli: Risultati di invarianza; Bisimulazione; Modelli finiti; La traduzione standard
  • Frame: Definibilità dei frame; Definibilità dei frame e logica del secondo ordine: Proprietà definibili e indefinibili; Frame finiti; Corrispondenza automatica con la Logica del primo ordine
  • Logica Proposizionale
  • Logica del Primo Ordine
  • Logica Modale
  • Bisimulazione

Modalità d'esame

La prova è composta da un set di "Homework" svolti durante il corso (40%) e da una presentazione di un argomento (60%) sugli stessi temi di quelli presentati al corso.

Testi di riferimento

1. Introduction to Mathematical Logic, Elliot Mendelson (https://www.karlin.mff.cuni.cz/~krajicek/mendelson.pdf)

2. A concise introduction to Mathematical Logic, W. Rautenberg (Springer 2006)

3. Elements of Finite Model Theory, L. Libkin (https://homepages.inf.ed.ac.uk/libkin/fmt/fmt.pdf)

4. Modal Logic, P. Blackburn, M. de Rijke, Y. Venema (Cambridge University Press)

5. Reasoning about Knowledge, R. Fagin, J. Halpern, Y. Moses, M. Vardi (MIT Press)

Codice insegnamento 10620665

METHODS IN COMPUTER SCIENCE EDUCATION 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali: Conoscere ed applicare le più recenti metodologie di insegnamento dell'Informatica nella scuola superiore. Il corso svilupperà una serie di use-cases relativi alle tecniche di insegnamento…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali: Conoscere ed applicare le più recenti metodologie di insegnamento dell'Informatica nella scuola superiore. Il corso svilupperà una serie di use-cases relativi alle tecniche di insegnamento dell'Informatica a scuola. Obiettivi specifici: • Progettazione e sviluppo di metodologie di insegnamento dell'informatica: illustrazione dei principi e dei metodi per la costruzione di attività e più in generale di un curriculum di informatica coerente con gli obiettivi fissati dalle indicazioni nazionali per i licei e dalle linee guida per gli istituti tecnici e professionali. • Metodologie e tecnologie didattiche per lo studio del rapporto dell'informatica con la società attuale, e in particolare degli aspetti etici legati, per esempio, al trattamento dei dati personali, all'automazione di decisioni e raccomandazioni, alla ridefinizione del concetto di copyright. • Esplicitazione del parallelismo fra metodologie informatiche e metodologie didattiche: tecniche di problem solving costruttivo; approccio epistemologico ai problemi; metodi cooperativi di sviluppo delle soluzioni. Conoscenze e comprensione: Principi e metodi di costruzione di attività didattiche di C.S. nella scuola superiore. Aspetti etici dell'uso dei dati e dei contenuti personali. Applicare conoscenza e comprensione: Agli studenti verrà richiesto di scegliere e sviluppare alcuni moduli didattici per la scuola superiore. Capacità di giudizio: Lo studente sarà autonomo nello scegliere i moduli da sviluppare e nella loro fase di progetto e realizzazione. Capacità di comunicazione: Gli studenti dovranno dimostrare di saper produrre moduli didattici di qualità, con una forte capacità di interessare e comunicare con precisione gli argomenti chiave della lezione da sviluppare. Capacità di apprendimento: La metodologia di progetto dei moduli didattici vista nel corso sarà facilmente applicabile ad altri tipi di corsi.

Programma

Analisi critica delle principali metodologie per l'insegnamento sviluppate nella ricerca in didattica dell'informatica, anche in riferimento allo specifico ruolo dell'insegnante, ai nodi concettuali, epistemologici, linguistici e didattici dell'insegnamento e apprendimento dell'informatica, ponendo in particolare l'accento sulla distinzione fra l'informatica come disciplina scientifica da una parte e le applicazioni dell'informatica dall'altra.

Progettazione e sviluppo di metodologie di insegnamento dell'informatica: illustrazione dei principi e dei metodi per la costruzione di attività e più in generale di un curriculum di informatica coerente con gli obiettivi fissati dalle indicazioni nazionali per i licei e dalle linee guida per gli istituti tecnici e professionali.

Esplicitazione del parallelismo fra metodologie informatiche e metodologie didattiche: tecniche di problem solving costruttivo; approccio epistemologico ai problemi; metodi cooperativi di sviluppo delle soluzioni.

Metodologie e tecnologie didattiche per lo studio del rapporto dell'informatica con la società attuale, e in particolare degli aspetti etici legati, per esempio, al trattamento dei dati personali, all'automazione di decisioni e raccomandazioni, alla ridefinizione del concetto di copyright.

Analisi dei principali sistemi di apprendimento della programmazione.

Costruzione di unità didattiche interdisciplinari.

  • Computational Thinking
  • Visual Learning management systems
  • Computational Thinking Curricula
  • Text-based Learning management systems
  • Flowchart-based Learning management systems
  • Logic-based systems
  • Data-flow systems
  • Arduino systems

Modalità d'esame

Realizzazione di 3 unità didattiche interdisciplinari.

Testi di riferimento

Il corso analizzerà le principale iniziative dedicate all'apprendimento dell'Informatica in campo nazionale ed internazionale.

Codice insegnamento 10620666

MODELS OF COMPUTATION 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi L'insegnamento è indirizzato all'acquisizione delle conoscenze matematiche relative ad aspetti fondamentali dei linguaggi di programmazione funzionale e imperativa con particolare attenzione ai…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi L'insegnamento è indirizzato all'acquisizione delle conoscenze matematiche relative ad aspetti fondamentali dei linguaggi di programmazione funzionale e imperativa con particolare attenzione ai meccanismi di esecuzione dei programmi.
Conoscenza e capacità di comprensione Alla fine del corso lo studente avrà piena comprensione degli strumenti matematici proposti.
Capacità di applicare conoscenza e comprensione: Lo studente sarà in grado di approfondire lo studio consultando autonomamente manuali o pubblicazioni scientifiche.
Autonomia di giudizio Le conoscenze acquisite permetteranno allo studente di individuare e confrontare in altri ambiti gli argomenti proposti nell'uso di linguaggi di programmazione, in particolare nell'ambito lavorativo.
Abilità comunicative Lo studente viene stimolato ad esporre e comunicare le proprie esperienze ai suoi colleghi.
Capacità di apprendimento Il corso tratta aspetti fondamentali della programmazione, assicurando allo studente la possibilità di individuarli autonomamente nell'uso di ogni particolare linguaggio.

Programma

Introduzione al lambda-calcolo, sintassi e semantica operazionale. [10 ore]

Teorema di Church-Rosser. [10 ore]

Tesi di Church. [10 ore]

Strutture dati e loro rappresentazione nel lambda-calcolo. [10 ore]

Sistemi di tipi, normalizzazione forte e debole. [10 ore]

Teorema di Böhm. [10 ore]

  • Concetti generali: Insiemi, relazioni, funzioni, numerabilità, induzione, logica proposizionale e predicativa (20 ore)
  • Testi di riferimento: Bagni, Gorla, Labella, Introduzione alla Logica ed al Linguaggio Matematico, McGraw-Hill
  • Approfondimenti, teoremi e proprietà delle strutture consdiderate (15 ore)
  • Esercitazioni (25 ore)

Modalità d'esame

La prova di esame sarà scritta (fondamentale per la valutazione finale) con domande a risposta chiusa o aperta.

Si può prevedere (a richiesta dello studente) una prova orale di discussione della prova scritta.

Si prevede una prova intermedia.

Testi di riferimento

Note distribuite dal docente

Nessuna

Codice insegnamento 1047638

MULTIMODAL INTERACTION 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Il corso, denominato Multimodal Interaction with Artificial Intelligence e indicato di seguito, per semplicità, come Multimodal Interaction, ha l’obiettivo di fornire agli studenti una preparazione…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi Il corso, denominato Multimodal Interaction with Artificial Intelligence e indicato di seguito, per semplicità, come Multimodal Interaction, ha l’obiettivo di fornire agli studenti una preparazione avanzata sulla progettazione, lo sviluppo e la valutazione di sistemi multimodali intelligenti e di sistemi unimodali avanzati basati su tecniche moderne di Intelligenza Artificiale. Il corso affronta l’interazione multimodale come area interdisciplinare nella quale convergono Computer Vision, Human-Computer Interaction, Machine Learning, Deep Learning, analisi dei segnali e sistemi intelligenti. Vengono studiate sia le singole modalità di interazione e percezione, sia la loro integrazione in architetture multimodali complesse. In particolare, il corso considera modalità visive, vocali, gestuali, posturali, acustiche, fisiologiche, EEG, Wi-Fi e altri segnali utili alla comprensione dell’uomo, dell’ambiente e del contesto operativo. Partendo dall’analisi delle singole modalità, il corso introduce i principi e le tecniche per la progettazione di sistemi multimodali, con particolare attenzione alla rappresentazione dell’informazione, all’estrazione di caratteristiche, alla modellazione tramite algoritmi di apprendimento automatico, alla fusione multimodale e alla fissione dell’informazione su più canali. Allo stesso tempo, il corso considera anche scenari unimodali avanzati, nei quali una singola modalità sensoriale, ad esempio immagini o video, può essere elaborata in modo sofisticato per estrarre molteplici livelli informativi, quali aspetto, movimento, postura, azione, traiettoria, contesto e relazioni spaziali. L’obiettivo è rendere lo studente capace di comprendere sia come modalità diverse possano cooperare per costruire sistemi più robusti, adattivi e intelligenti, sia come una singola modalità possa essere sfruttata in profondità attraverso tecniche avanzate di Intelligenza Artificiale.
Il corso adotta una duplice prospettiva. La prima riguarda i sistemi avanzati di interazione uomo-macchina, nei quali una o più modalità vengono utilizzate per riconoscere, interpretare e gestire input umani multimodali, rendendo l’interazione con macchine, ambienti digitali, robot e sistemi autonomi più naturale, efficace e personalizzata. La seconda riguarda l’impiego dell’Intelligenza Artificiale multimodale e unimodale avanzata in scenari applicativi complessi, quali robotica, sicurezza, sorveglianza, monitoraggio indoor e outdoor, ambient intelligence, sistemi autonomi, prevenzione di eventi critici, analisi del comportamento umano e supporto decisionale in contesti reali. Particolare attenzione viene dedicata anche ad applicazioni emergenti quali il riconoscimento di stati cognitivi ed emotivi, l’analisi della personalità, la biometria fisiologica e comportamentale, l’identificazione e autenticazione dell’identità, il riconoscimento di comportamenti anomali o ingannevoli, il monitoraggio delle persone, la sicurezza fisica e ambientale, la protezione di infrastrutture e scenari avanzati legati alla prevenzione del rischio e alla sicurezza. In tale prospettiva, il corso mira a formare studenti capaci non solo di utilizzare tecniche esistenti, ma anche di progettare soluzioni originali, critiche e scientificamente fondate per sistemi intelligenti multimodali e unimodali avanzati.
Conoscenza e capacità di comprensione Al termine del corso, lo studente avrà acquisito conoscenze relative ai fondamenti teorici della comunicazione e dell’interazione attraverso diversi canali sensoriali, cognitivi e comportamentali. Comprenderà le caratteristiche principali delle diverse modalità di input e output nei sistemi uomo-macchina, incluse modalità visive, vocali, gestuali, posturali, acustiche, fisiologiche, EEG, Wi-Fi e biometriche. Lo studente comprenderà inoltre i principi fondamentali per la progettazione di un sistema multimodale, con riferimento alla rappresentazione dei dati, all’estrazione di feature, alla modellazione mediante tecniche di Machine Learning e Deep Learning, alla cooperazione tra canali informativi, alla fusione multimodale e alla generazione di risposte o comportamenti coerenti attraverso più modalità di output. Acquisirà inoltre conoscenze relative all’analisi unimodale avanzata, con particolare riferimento alla capacità di estrarre da una singola sorgente informativa molteplici descrittori utili alla comprensione dell’uomo, dell’ambiente e del contesto. Saranno inoltre acquisite conoscenze sui principali ambiti applicativi dell’interazione multimodale basata su Intelligenza Artificiale, tra cui interfacce uomo-macchina naturali, sistemi robotici e autonomi, sistemi di monitoraggio intelligente, biometria, sicurezza, sorveglianza, analisi del comportamento umano, riconoscimento di stati cognitivi ed emotivi e interpretazione del contesto in ambienti reali.
Capacità di applicare conoscenza e comprensione Lo studente sarà in grado di applicare le conoscenze acquisite alla progettazione e allo sviluppo di sistemi multimodali intelligenti o unimodali avanzati. In particolare, sarà in grado di selezionare le modalità più adeguate rispetto a uno specifico scenario applicativo, progettare pipeline di acquisizione e analisi dei dati, implementare strategie di fusione e fissione dell’informazione e valutare le prestazioni del sistema rispetto agli obiettivi prefissati. Lo studente sarà inoltre in grado di utilizzare tecniche di Intelligenza Artificiale per analizzare input multimodali provenienti dall’uomo, dall’ambiente o da sistemi sensoriali eterogenei, nonché per valorizzare in modo avanzato singole modalità informative, ad esempio immagini, video o segnali specifici, con applicazioni in ambiti quali interazione uomo-macchina, biometria, robotica, sicurezza, monitoraggio, riconoscimento del comportamento e sistemi autonomi. Una parte rilevante dell’esame consiste nella progettazione e nello sviluppo di un sistema multimodale o unimodale avanzato, nel quale lo studente dovrà applicare in modo concreto le nozioni presentate durante il corso. Tale attività permetterà di verificare la capacità di tradurre concetti teorici in soluzioni operative, con attenzione sia agli aspetti algoritmici sia agli aspetti progettuali, sperimentali e applicativi.
Autonomia di giudizio Lo studente svilupperà la capacità di valutare criticamente le prestazioni, la robustezza, i limiti, l’affidabilità e l’adeguatezza di un sistema multimodale o unimodale avanzato rispetto allo scenario applicativo considerato. Sarà in grado di analizzare le scelte progettuali relative alle diverse modalità utilizzate, alla loro integrazione, alla qualità dei dati, alle metriche di valutazione e alla sostenibilità complessiva della soluzione proposta. Il corso mira inoltre a sviluppare la capacità di condurre una ricerca bibliografica autonoma, finalizzata a comprendere lo stato dell’arte, valutare il livello di innovazione di un sistema multimodale o unimodale specifico e individuare possibili miglioramenti rispetto a metodi, architetture o applicazioni già esistenti. Particolare attenzione sarà dedicata anche alla valutazione critica di sistemi intelligenti in contesti sensibili, quali biometria, sicurezza, monitoraggio delle persone, riconoscimento di stati interni o comportamenti anomali, nei quali robustezza, interpretabilità, accuratezza, privacy, affidabilità e corretto uso delle tecnologie assumono un ruolo centrale.
Abilità comunicative Lo studente sarà in grado di comunicare in modo chiaro, rigoroso e tecnicamente appropriato i requisiti, le scelte progettuali, le modalità operative e le misure di performance di un sistema multimodale o unimodale avanzato. Dovrà inoltre essere capace di descrivere il ruolo delle diverse modalità utilizzate, motivare le strategie di integrazione adottate o, nel caso di sistemi unimodali, spiegare come una singola sorgente informativa venga elaborata per estrarre livelli informativi complessi e rilevanti rispetto allo scenario applicativo. Tali abilità verranno verificate in sede d’esame attraverso la presentazione e discussione del progetto sviluppato, con particolare attenzione alla capacità dello studente di illustrare il sistema realizzato, giustificare le scelte metodologiche, confrontare il lavoro svolto con lo stato dell’arte e discutere in modo critico limiti, risultati e possibili sviluppi futuri. Lo studente dovrà inoltre dimostrare la capacità di comunicare efficacemente il valore di un sistema intelligente sia dal punto di vista tecnico-scientifico sia dal punto di vista applicativo, evidenziando il contributo delle diverse modalità, o della singola modalità analizzata in modo avanzato, e la rilevanza della soluzione proposta in scenari reali.
Capacità di apprendimento Lo studente acquisirà la capacità di approfondire autonomamente argomenti, tecniche e metodi relativi all’interazione multimodale, all’analisi unimodale avanzata e ai sistemi intelligenti basati su Intelligenza Artificiale. Sarà in grado di aggiornarsi rispetto all’evoluzione dello stato dell’arte, comprendere approcci avanzati e applicarli a nuovi scenari di ricerca o sviluppo. Il corso intende fornire non solo competenze specifiche sulle tecniche presentate durante le lezioni, ma anche una base metodologica per affrontare in autonomia problemi complessi nell’ambito dell’interazione uomo-macchina, dell’analisi multimodale, dell’analisi unimodale avanzata, della percezione artificiale, della biometria, della sicurezza, della robotica e dei sistemi intelligenti per ambienti reali. Al termine del percorso, lo studente sarà quindi in grado di proseguire autonomamente lo studio di tecniche avanzate, integrare nuove modalità sensoriali, analizzare in profondità singole modalità informative, esaminare criticamente la letteratura scientifica recente e sviluppare soluzioni innovative in contesti applicativi e di ricerca.

Codice insegnamento 1047639

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

NATURAL LANGUAGE PROCESSING ITALIANO Obiettivi formativi I fondamenti dell'elaborazione del linguaggio naturale. L'elaborazione del linguaggio naturale al livello di: morfologia, parte del discorso, sintassi,…

Scheda dell'insegnamento

Obiettivi formativi

NATURAL LANGUAGE PROCESSING
ITALIANO
Obiettivi formativi
I fondamenti dell'elaborazione del linguaggio naturale.
L'elaborazione del linguaggio naturale al livello di: morfologia, parte del discorso, sintassi, semantica, pragmatica. Traduzione automatica.
Conoscenza e capacità di comprensione Conoscenza e comprensione delle tecniche algoritmiche e di apprendimento automatico per l'elaborazione del linguaggio naturale. Capacità di applicare conoscenza e comprensione Essere in grado di applicare le tecniche di elaborazione del linguaggio naturale mediante un homework o un progetto. Autonomia di giudizio Capacità di comprendere e identificare soluzioni efficaci ai problemi dell'elaborazione del linguaggio naturale. Abilità comunicative Capacità di illustrare il progetto sviluppato. Capacità di apprendimento Capacità di apprendere e applicare nuove tecniche di elaborazione del linguaggio naturale sia basate su quelle illustrate nel corso sia basate su approcci innovativi.

Programma

Si veda: https://github.com/iacopomasi/NLP

  • Introduzione al Natural Language Processing
  • Modelli N-gram; smoothing; interpolation; backoff
  • Assegnazione part-of-speech (incluso POS tagging multilingue)
  • Analisi sintattica: tecniche statistiche e neurali
  • Semantica computazionale e semantica lessicale
  • Lessici computazionali: WordNet
  • Reti semantiche multilingue: BabelNet
  • Word Sense Disambiguation; Entity Linking
  • Multilinguismo nel Natural Language Processing
  • Reti neurali, incorporamenti di parole e sensi e deep learning
  • Etichettatura dei ruoli semantici neurali e analisi semantica
  • Traduzione automatica statistica
  • Generazione del linguaggio naturale e Question Answering
  • Modelli di linguaggio neurale (Transformers, BERT, XLM-RoBERTa, GPT)
  • Traduzione automatica neurale
  • Applicazioni avanzate di NLP multimodale
  • NLP fundamentals and downstream tasks - Part I [30 hours]
  • Testi di riferimento: Jurafsky and Martin. Speech and Language Processing, Prentice Hall, third edition
  • Deep Learning for NLP [25 hours]
  • Testi di riferimento: Jurafsky and Martin. Speech and Language Processing, Prentice Hall, third edition
  • Coding Sessions for Deep Learning for NLP [5 hours]
  • Testi di riferimento: Jurafsky and Martin. Speech and Language Processing, Prentice Hall, third edition

Modalità d'esame

L'esame comprende una parte scritta che testa la parte di teoria e una parte pratica in cui è necessario implementare e analizzare un sistema di NLP di base/avanzato. Essa può essere svolta con homework durante il corso o con un progetto finale.

Testi di riferimento

  • Jurafsky and Martin. Speech and Language Processing, Prentice Hall, third edition, in preparation.
  • Jacob Eisenstein. Introduction to Natural Language Processing, MIT Press, 2019.
  • Yoav Goldberg. Neural Network Methods for Natural Language Processing, Morgan & Claypool, 2017.
  • https://d2l.ai/

Codice insegnamento 1038141

NETWORK ALGORITHMS 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi: Acquisire conoscenze relativamente al progetto di algoritmi complessi per risolvere problemi su grafi che modellano problemi inerenti le reti (cablate, senza fili e di sensori). Conoscenza e capacità…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi: Acquisire conoscenze relativamente al progetto di algoritmi complessi per risolvere problemi su grafi che modellano problemi inerenti le reti (cablate, senza fili e di sensori).
Conoscenza e capacità di comprensione: Al termine del corso le studentesse e gli studenti conosceranno le metodologie di base per l'analisi di problemi relativi alle reti e l’identificazione dei problemi su grafi che più si avvicinino; conosceranno inoltre gli algoritmi risolutivi di alcuni dei principali problemi su grafi e saranno in grado di proporre soluzioni originali per nuovi problemi.
Conoscenza e capacità di comprensione applicate: Al termine del corso, le studentesse e gli studenti avranno acquisito familiarità con l’analisi delle problematiche legate alle reti. Saranno in grado di riconoscere quale sia il problema su grafi che più si avvicina e di progettare nuove strutture dati e i relativi algoritmi, rielaborando quelli esistenti, per risolvere il problema di partenza.
Autonomia di giudizio: Studiando in profondità i problemi trattati e gli algoritmi per risolverli, le studentesse e gli studenti avranno le basi per analizzare la qualità di un algoritmo per le reti, sia dal punto di vista dell'effettiva risoluzione del problema che da quello dell'efficienza computazionale con la quale il problema viene risolto.
Capacità comunicative: Grazie alla tesina spiegata a tutti i colleghi, ed alla modalità di esame, le studentesse e gli studenti acquisiranno la capacità di esporre in modo chiaro ed organizzato le proprie conoscenze, capacità che verrà verificata durante la prova orale.
Capacità di apprendere: Le conoscenze acquisite ed il metodo di studio critico acquisito permetteranno alle studentesse e agli studenti, una volta concluso il ciclo di studi, di affrontare problemi reali in modo critico ed efficace e di progettare soluzioni efficienti.
Dettagli aggiornati sull'insegnamento si possono trovare qui: https://twiki.di.uniroma1.it/twiki/view/Algoreti/WebHome1011

Programma

0. Introduzione al corso

1. reti cablate

1.1. Il problema dell'instradamento ovvero il problema della ricerca del cammino più corto di costo minimo (pesi pari al costo o alla probabilità di guasto della connessione)

1.2. Il problema del layout di topologie di interconnessione ovvero il problema del disegno ortogonale su griglia

1.3. Il problema di infettare (e difendere) una rete con un worm ovvero il problema della minima copertura di vertici

1.4. Il problema di minimizzare un circuito booleano ovvero il problema della minima copertura di insiemi

2. reti wireless ad hoc/wireless ad hoc networks

2.1. Il problema dell'assegnazione di frequenze ovvero un problema di colorazione di grafi

2.2. Il problema del broadcast con minimo dispendio di energia ovvero il problema del minimo albero ricoprente

2.3. Il problema del data mule ovvero il problema del commesso viaggiatore

2.4. Il Data Collection in reti di sensori ovvero il problema dell'insieme dominante connesso

3. reti di sensori mobili

3.1. Il problema del dispiegamento centralizzato di sensori mobili ovvero il problema dell'accoppiamento perfetto di costo minimo su grafo bipartito

3.2. Il problema del dispiegamento distribuito di sensori mobili ovvero il problema del diagramma di Voronoi

3.3. Monitorare tramite UAVs ovvero TSP multiplo con vincoli

  • Introduzone del corso [2 ore]
  • Testi di riferimento: v. pagina del corso
  • Reti cablate [16 ore]
  • Testi di riferimento: v. pagina del corso
  • Reti senza fili [16 ore]
  • Testi di riferimento: v. pagina del corso
  • Reti di sensori mobili [16 ore]
  • Testi di riferimento: v. pagina del corso
  • Tesine degli studenti [10 ore].
  • Testi di riferimento: v. pagina del corso

Modalità d'esame

Per le studentesse e gli studenti che seguono le lezioni, l'esame è composto da due parti orali, entrambe obbligatorie.

Una prima prova di esame consiste in una breve lezione (circa mezz'ora), tenuta dalla studentessa o dallo studente, su un argomento assegnato dalla docente (tesina). Questo esonera la studentessa o lo studente da tutto il capitolo del programma relativo all'argomento della lezione svolta.

L'obiettivo di questa prima parte di esame è di consentire alle studentesse ed agli studenti di confrontarsi con un testo scientifico, di imparare a comprenderlo, a riassumerlo ed a spiegarlo ad altri.

Una seconda prova consiste nell'esame orale su tutti gli altri capitoli.

L'obiettivo di questa seconda prova è quello di consentire alle studentesse ed agli studenti di acquisire un quadro unitario ed organico dell'argomento, di essere in grado di fare collegamenti e di relazionare in modo chiaro su un argomento noto.

Le studentesse e gli studenti possono dividere quest'ultima in due parti e decidere liberamente quanti capitoli portare durante la prima parte, che potrà essere sostenuta approssimativamente a metà novembre (durante la settimana di interruzione della didattica se questa è prevista).

Si sottolinea che, per come sono organizzati gli argomenti, questo esame è sconsigliato alle studentesse e agli studenti che, per qualsiasi ragione, non seguano le lezioni. Tuttavia, le studentesse e gli studenti che comunque vogliano sostenerlo dovranno affrontare un unico orale su tutti gli argomenti del programma.

Le studentesse e gli studenti in mobilità internazionale svolgeranno l'esame con le stesse modalità.

Per superare l'esame occorre conseguire un voto non inferiore a 18/30. La studentessa o lo studente deve dimostrare di aver acquisito una conoscenza sufficiente degli argomenti di tutte le parti del programma. Per conseguire un punteggio pari a 30/30 e lode, la studentessa o lo studente deve invece dimostrare di aver acquisito una conoscenza eccellente di tutti gli argomenti trattati durante il corso ed essere in grado di raccordarli in modo logico e coerente.

Testi di riferimento

Gli argomenti del corso riguardano per lo più la ricerca recente, per cui non c'è un libro di testo, quanto invece un numero di articoli che possono essere scaricati dalla pagina del corso.

Per ulteriori dettagli, si veda qui: https://twiki.di.uniroma1.it/twiki/view/Algoreti/ProgrammaDelCorso

Codice insegnamento 1047640

PRACTICAL NETWORK DEFENSE 2° anno · 2° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi Il corso "Practical Network Defense" si propone di fornire agli studenti le competenze teoriche e, soprattutto, pratiche necessarie per progettare, implementare e monitorare strategie di difesa…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi
Il corso "Practical Network Defense" si propone di fornire agli studenti le competenze teoriche e, soprattutto, pratiche necessarie per progettare, implementare e monitorare strategie di difesa efficaci all'interno di infrastrutture di rete moderne. Attraverso un approccio fortemente orientato al laboratorio in ambiente cloud, gli studenti apprenderanno come analizzare le vulnerabilità di una rete, mitigare la superficie d'attacco e reagire tempestivamente alle minacce simulando scenari reali di attacco e difesa.
Conoscenza e capacità di comprensione
Al termine del corso lo studente avrà acquisito conoscenze relative a:
I principi fondamentali della sicurezza delle reti, con particolare focus sul paradigma della difesa in profondità (Defense in Depth) e sulla minimizzazione della superficie di attacco. Il funzionamento, l'architettura e la configurazione di strumenti di sicurezza perimetrale e interna, quali Firewall, VPN, IDS/IPS, Proxy e Zone Demilitarizzate (DMZ). Le metodologie di monitoraggio e analisi del traffico di rete tramite lo studio dei log e la cattura dei pacchetti. I concetti di inganno informatico (cyber deception) attraverso l'uso di Honeypot e Honeynet. Le principali tecniche di attacco alla rete (es. session hijacking, man-in-the-middle) utilizzate per testare la robustezza delle difese. Il ruolo delle policy di sicurezza nella governance e nella conformità dei servizi di rete.
Capacità di applicare conoscenza e comprensione
Al termine del corso lo studente sarà in grado di:
Configurare e distribuire appliance di sicurezza (Firewall, IDS/IPS, Proxy) all'interno di un'infrastruttura virtuale in cloud. Applicare tecniche di hardening delle reti e di controllo degli accessi per limitare il flusso dei pacchetti secondo regole granulari. Isolare i componenti critici della rete progettando una DMZ e segmentando il traffico in modo sicuro. Utilizzare strumenti di analisi e monitoraggio per rilevare anomalie, analizzare i pacchetti di rete e interpretare i log di sistema. Implementare e monitorare Honeypot/Honeynet in ambienti isolati per analizzare il comportamento degli attaccanti. Condurre test di sicurezza controllati (simulando attacchi come MitM o hijacking) per verificare l'efficacia delle contromisure applicate. Tradurre i requisiti di alto livello in policy di sicurezza di rete applicabili e misurabili.
Autonomia di giudizio
Al termine del corso lo studente sarà in grado di:
Valutare criticamente il livello di sicurezza di un'infrastruttura di rete esistente, identificando i vettori di attacco e i punti di debolezza. Scegliere le contromisure e gli strumenti di difesa più idonei in base al bilanciamento tra costi, complessità, prestazioni e livello di rischio. Analizzare il traffico e i log di rete per distinguere in autonomia tra attività legittime, falsi positivi e tentativi di intrusione. Formulare giudizi autonomi sull'efficacia delle policy di sicurezza adottate all'interno di un'organizzazione.
Abilità comunicative
Al termine del corso lo studente sarà in grado di:
Redigere relazioni tecniche e documentazione di progetto che descrivano chiaramente l'architettura di difesa implementata e le configurazioni adottate nel laboratorio cloud. Comunicare efficacemente (sia a un pubblico di specialisti che a figure non tecniche/manageriali) le vulnerabilità riscontrate in una rete e le relative strategie di mitigazione. Esporre in modo chiaro le motivazioni alla base della scelta di una specifica policy o contromisura di sicurezza.
Capacità di apprendimento
Al termine del corso lo studente avrà sviluppato:
La capacità di aggiornarsi autonomamente sulle nuove minacce informatiche, sulle vulnerabilità emergenti (Zero-Day) e sulle evoluzioni degli strumenti di network defense. L'attitudine a muoversi in autonomia all'interno di ambienti cloud e di virtualizzazione per testare e implementare nuove soluzioni di sicurezza. La capacità di apprendere a usare nuovi software di monitoraggio, di simulazione di attacco o di cifratura a partire dalla documentazione tecnica ufficiale.

Programma

●Network hardening: questo argomento copre i modi per aiutare la rete a difendersi da accessi non autorizzati.

●Difesa in profondità: questo argomento introduce l'idea che le difese devono essere stratificate.

●Implementazione di IDS/IPS: Questo argomento tratta dei servizi di rilevamento delle intrusioni e di prevenzione delle intrusioni. Questi servizi controllano il traffico di rete.

●Firewall e reti private virtuali (VPN): questo argomento tratta l'installazione e l'uso dei firewall e delle reti private virtuali.

●Honeypots e honeynets: Questo argomento introduce l'idea di fornire reti e dispositivi intenzionalmente vulnerabili in reti isolate in modo che possano essere osservati e analizzati mentre vengono attaccati.

●Monitoraggio della rete: questo argomento copre gli strumenti e le tecniche per monitorare i dispositivi di rete e i loro log.

●Analisi del traffico di rete: questo argomento riguarda gli strumenti e le tecniche per catturare e analizzare i pacchetti che attraversano la rete.

●Minimizzazione dell'esposizione (superficie d'attacco e vettori): Questo argomento copre gli strumenti e le tecniche per trovare e mitigare le vulnerabilità attraverso l'osservazione dei potenziali punti deboli.

●Controllo dell'accesso alla rete (interno ed esterno): questo argomento riguarda gli strumenti e le tecniche per limitare il flusso dei pacchetti in base a regole basate sul contenuto dei pacchetti.

●Reti perimetrali (conosciute anche come zone demilitarizzate o DMZ) / Server proxy: questo argomento copre gli strumenti e le tecniche per implementare la difesa in profondità utilizzando reti isolate e server speciali.

●Sviluppo e applicazione delle policy: questo argomento riguarda la creazione di politiche che forniscono indicazioni e requisiti per i servizi forniti dalla rete insieme alle misure da utilizzare per assicurarsi che le politiche siano seguite.

●Attacchi alla rete (ad esempio, dirottamento di sessioni, man-in-the-middle): questo argomento copre gli strumenti e le tecniche utilizzate per testare la rete tentando effettivamente di sfruttare le sue vulnerabilità.

Modalità d'esame

Per valutare adeguatamente il raggiungimento degli obiettivi di apprendimento, gli studenti saranno valutati tenendo conto di:

1. quattro compiti obbligatori, per valutare la loro capacità di applicare la conoscenza e la comprensione acquisite e per valutare le loro capacità critiche e di giudizio;

2. un esame scritto, per valutare la loro capacità di apprendimento e le loro capacità di comunicazione.

I quattro compiti obbligatori sono previsti per la 3°, 5°, 8° e 10° settimana del corso.

L'esame scritto è della durata di due ore ed è articolato in due parti:

  • 10 domande a risposta aperta
  • 20 domande a risposta multipla.

Il punteggio totale è di 100 punti: 60 punti per la parte a domande aperte e 40 punti per quella a risposta multipla.

Le domande a risposta aperta vengono valutate da 0 a 6 punti, in base alla loro correttezza, completezza e precisione.

Le domande a risposta multipla vengono valutate da 0 a 2 punti e prevedono 4 possibili risposte, di cui una o più possono essere corrette.

Per superare l'esame occorre ottenere un punteggio non inferiore a 40. Il punteggio ottenuto viene rapportato sulla scala in trentesimi.

Lo studente deve dimostrare di aver acquisito una conoscenza sufficiente di tutti gli argomenti del corso.

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.

Il voto dell'esame scritto può essere incrementato (fino a +3 punti) dalla qualità delle quattro relazioni relative ai quattro compiti obbligatori.

Testi di riferimento

● Introduction to Computer Networks and Cybersecurity, Chwan-Hwa (John) Wu, J. David Irwin, 1ed. CRC Press

● Network Security Essentials: Applications and Standards, William Stallings. 6th edition. Pearson ed.

● Practice of Network Security Monitoring, Richard Bejtlich. NoStarch press.

● Network Security Fundamentals, 1st Edition. Cole et al. Wiley Pathways.

● Introduction to Network Security: Theory and Practice, Jie Wang, Zachary A. Kissel. 2nd Edition. Wiley.

● The Network Security Test Lab: A Step-by-Step Guide. Michael Gregg. Wiley.

Codice insegnamento 10589555

QUANTUM COMPUTING 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi formativi: L'obiettivo generale del corso è fornire agli studenti i concetti fondamentali dell'informatica quantistica, che consentiranno loro di proseguire gli studi o di trovare lavoro nel settore…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi formativi:
L'obiettivo generale del corso è fornire agli studenti i concetti fondamentali dell'informatica quantistica, che consentiranno loro di proseguire gli studi o di trovare lavoro nel settore dell'informatica quantistica. Il corso ha quattro obiettivi specifici:
introdurre i fondamenti matematici dell'informatica quantistica necessari per comprendere le caratteristiche controintuitive degli algoritmi quantistici;
presentare le nozioni fondamentali dell'informatica quantistica;
introdurre diversi algoritmi quantistici non banali e protocolli di comunicazione quantistica e analizzarne il comportamento;
mostrare come semplici algoritmi e protocolli quantistici possono essere implementati ed eseguiti su un simulatore o su un computer quantistico.
Conoscenza e capacità di comprensione:
Al termine del corso, gli studenti dovrebbero essere a conoscenza e comprendere appieno le principali differenze tra computer classici e quantistici, i formalismi dei circuiti quantistici e dei bra-ket, e i principali algoritmi quantistici (di Grover, di Shor, HHL, ecc.) e protocolli (ad esempio, BB84 e teletrasporto). Inoltre, gli studenti dovrebbero essere a conoscenza delle diverse tecnologie per l'implementazione di hardware quantistico.
Capacità di applicare conoscenza e comprensione:
Gli studenti saranno in grado di utilizzare le nozioni teoriche presentate in classe per sviluppare e/o implementare soluzioni quantistiche a problemi. Le esercitazioni pratiche al computer offriranno agli studenti un'esperienza pratica con circuiti quantistici eseguiti su simulatori o computer quantistici, a supporto dei concetti teorici esposti a lezione. Inoltre, gli studenti potranno approfondire i propri studi in autonomia consultando altro materiale sull'argomento, inclusa la letteratura scientifica.
Autonomia di giudizio:
Gli studenti affineranno queste competenze attraverso la risoluzione di esercizi in autonomia a casa. Le conoscenze e le competenze acquisite consentiranno agli studenti di selezionare o adattare criticamente gli approcci quantistici esistenti per risolvere il problema in questione, o di sviluppare nuove tecniche quantistiche, se necessario. Gli studenti saranno in grado di valutare l'efficienza e identificare pro e contro delle loro soluzioni quantistiche.
Abilità comunicative:
Gli studenti saranno stimolati a collaborare con i loro compagni attraverso lo sviluppo, la documentazione e la risoluzione di compiti ed esercizi a casa.
Capacità di apprendimento:
Il corso fornirà agli studenti le competenze tecniche necessarie per studiare a livello di dottorato (PhD) sia argomenti rilevanti in campi affini, quali la comunicazione quantistica e la simulazione quantistica, sia aspetti specifici dell'informatica quantistica.

Programma

  • Stato del campo dell'informatica quantistica
  • Ripasso di algebra lineare complessa
  • Operatori lineari sugli spazi di Hilbert
  • Qubit e misurazioni
  • Operazioni unitarie a singolo qubit (NOT, Hadamard, matrici di Pauli)
  • Registri quantistici (prodotti tensoriali)
  • Stati entangled e il paradosso EPR
  • Operazioni multi-qubit (CNOT, Toffoli)
  • Prodotto tensoriale di operazioni unitarie
  • L'equazione di Schrödinger e le regole della meccanica quantistica
  • Teorema di non-clonazione e protocollo di teletrasporto
  • Algoritmi di Deutsch-Jozsa e Grover
  • Stima della fase quantistica e algoritmo di Shor
  • Algoritmo quantistico per sistemi lineari
  • Crittografia post-quantistica
  • I protocolli di scambio di chiavi quantistiche BB84 ed E91
  • Disuguaglianze di Bell e non-località quantistica
  • Fondamenti della teoria dell'informazione quantistica (matrici di densità, superoperatori)
  • Il limite di Holevo
  • Approssimazione di porte unitarie a singolo qubit
  • Approssimazione delle porte unitarie generali (teorema di Solovay-Kitaev)
  • Linguaggi di programmazione quantistica (Silq)
  • Introduzione al corso e ripasso di algebra lineare (settimana 1)
  • I qubits e teorema di non-clonazione; teletrasporto quantistico (settimana 2, 3).
  • Fondamenti matematici per il calcolo quantistico; algoritmo di Deutsch-Jozsa (settimana 4).
  • L'algoritmo di Grover (settimana 5).
  • L'algoritmo di Shor (settimana 6).
  • Crittografia quantistica e diseguaglianze di Bell (settimana 7).
  • Correzione degli errori quantistici; implementazione di circuiti quantistici (settimana 8).
  • Sistemi quantistici probabilistici; operatori di densità (settimana 9).
  • L'algoritmo HHL; algoritmi quantistici variazionali (settimana 10, 11).
  • Linguaggi di programmazione quantistici (settimana 12).

Modalità d'esame

Esame scritto con esercizi e domande di teoria, senza supporti didattici.

Testi di riferimento

Libro di testo consigliato: Quantum Computation and Quantum Information . MA Nielsen, IL Chuang. Cambridge University Press, 2010.

  • Quantum Computing for Everyone. C. Bernhardt. MIT Press, 2020.
  • Classical and Quantum Computation (Graduate Studies in Mathematics). A. Yu. Kitaev, A.H. Shen, M.N. Vyalyi. AMS, 2002.
  • Lectures on Quantum Theory: Mathematical and Structural Foundations. C.J. Isham. Imperial College Press, 1995.
  • Quantum Computing for Computer Scientists. N.S. Yanofsky, M.A. Mannucci. Cambridge University Press, 2008.
  • Mathematical Foundations of Quantum Mechanics (New Edition). J. von Neumann. Princeton University Press, 2018.

Codice insegnamento 10620565

SECURITY IN SOFTWARE APPLICATIONS 2° anno · 1° semestre · 6 CFU · INFO-01/A · 0 file

Obiettivi generali I fondamenti della sicurezza nei programmi software. Obiettivi specifici Metodologie e strumenti per trovare e rimuovere le vulnerabilità più comuni del software e per sviluppare software senza falle…

Scheda dell'insegnamento

Obiettivi formativi

Obiettivi generali
I fondamenti della sicurezza nei programmi software.
Obiettivi specifici
Metodologie e strumenti per trovare e rimuovere le vulnerabilità più comuni del software e per sviluppare software senza falle di sicurezza.
Conoscenza e comprensione
Conoscenza e capacità di comprensione delle tecniche più efficaci per la rimozione delle vulnerabilità dal codice e per sviluppare software che soddisfi specifiche politiche di sicurezza.
Capacità di applicare conoscenza e comprensione
Essere in grado di applicare e trasferire la propria conoscenza delle metodologie alla scelta delle tecniche e degli strumenti appropriati per risolvere problemi di sicurezza del software.
Autonomia di giudizio
Capacità di interpretazione autonoma per proporre soluzioni appropriate a problemi di sicurezza software, congruenti con le tecnologie disponibili.
Abilità comunicative
Capacità di presentare e argomentare le proprie scelte in merito alle metodologie e agli strumenti utilizzati per le soluzioni proposte, sia con colleghi sia con utenti.
Capacità di apprendimento
Capacità di apprendere e approfondire nuove tecniche nell’ambito della sicurezza informatica del software, sia per gli aspetti metodologici sia per quelli tecnologici.

Programma

Descrizione del Corso

Il corso presenta aspetti metodologici e pratici della sicurezza software, partendo da alcune delle vulnerabilità più note. Gli argomenti trattati includono attacchi ai cifrari comuni, come la crittoanalisi e i side channel, e attacchi software, tra cui varie forme di buffer e heap overflow, problemi causati dalla formattazione dell'input, conseguenze delle race conditions, generazione di numeri casuali e code injection. L'accento è posto sulle metodologie e i tool usati per identificare ed eliminare tali vulnerabilità.

Vengono presentate tecniche per dimostrare l'assenza di vulnerabilità e discussi approcci per evitare l'introduzione di vulnerabilità nei prodotti software (ad esempio, l'uso dei tipi nei linguaggi per garantire memory safety, type-safety, information flow security e strumenti crittografici). Sono inoltre trattate nozioni di base su Proof-Carrying Code (PCC) e sull'offuscamento del codice/crittografico. Gli studenti vengono esposti a metodologie per progettare software integrando l'analisi e la gestione del rischio nel software development lifecycle.

Migliorare il Codice Esistente

  • Vulnerabilità note: Buffer overflow, SQL/code injection, TOCTOU
  • Analisi statica e dinamica del codice e tools
  • Common Vulnerability Scoring System (CVSS)

Valutare la Sicurezza

  • Principi
  • Testing

Sviluppare Software Sicuro

  • Sviluppo di codice sicuro / defensive coding
  • Sicurezza in Java

Approcci Attuali

  • Language-based security
  • Information Flow Control
  • Proof-Carrying Code
  • Code Obfuscation

Introduzione alle Primitivi Crittografiche

  • Cifrari comuni
  • Crittografia a chiave pubblica
  • Buffer Overflow
  • Format Strings
  • Input Validation
  • Code Injection
  • Design Principles
  • Secure Software Design and Development
  • Language-Based Security
  • Information Flow
  • Program Verification and Testing
  • Obfuscation

Modalità d'esame

Uno o più progetti individuali

  • Analisi statica di frammenti di codice
  • Assertion-based code analysis
  • Testing o Evaluation di applicationo

I progetti sono obbligatori per poter superare l'esame.

  • Esame scritto sugli argomenti del corso.

Testi di riferimento

R. Anderson, Security Engineering: a guide to building dependable distributed systems, 2nd ed., John Wiley and Sons 2008

J.Viega, G.McGraw, Building Secure Software, Addison- Wesley 2002

G.McGraw, Software Security: Building Security in, Addison- Wesley 2006

G.Hoglung, G.McGraw, Exploiting Software: how to break code, Addison-Wesley 2004

G.McGraw, E.Felten, Securing Java, John Wiley and Sons 1999,

D.A.Wheeler, Secure Programming for Linux and Unix HOWTO

J. Katz, Y. Lindell, Introduction to Modern Cryptography (Chapman & Hall/CRC Cryptography and Network Security Series)

Codice insegnamento 1047642

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.