- Modelli e Computazione
- Introduzione
Syllabus del corso
Obiettivi
Il corso ha come obiettivo l'acquisizione di capacità di analisi e di sintesi in riferimento ai modelli e metodi computazionali utilizzati dall'informatica. In particolare lo studente dovrà acquisire capacità di formalizzare e modellare problemi utilizzando anche approcci teorici moderni sviluppati per poter trattare problematiche computazionali nel mondo web e di gestione di grandi molidi dati e nell'ambito della analisi e verifica di sistemi software. Il corso si compone di due moduli, il primo denominato Modelli della concorrenza fornisce gli strumenti teorici per comprendere e manipolare concetti di base dell'informatica relativi al comportamento e descrizione di processi, quali ad esempio la concorrenza. Il secondo modulo, denominato Teoria della Computazione ha come obiettivo l'acquisizione di strumentalità di base dell'informatica volte alla comprensione della complessità computazionale dei problemi, alla loro classificazione e alle metodologie algoritmiche per la loro soluzione. Inoltre, si intendono fornire capacità in merito alla soluzione di problematiche teoriche poste dalle nuove tecnologie (web, flusso di dati, reti complesse, etc.) mediante strutture dati recentemente proposte.
Contenuti sintetici
Teoria della Computazione Nozioni di base di teoria della computazione (decidibilità, intrattabilità, riduzioni). Classificazione dei problemi in funzione della complessità computazionale. Complessità di approssimazione e parametrica. Approcci moderni per la gestione, indicizzazione, compressione di dati massivi sia con strutture dati che con tecniche algoritmiche innovative. Strutture dati succinte (FM-index), indicizzazione e ricerca per i big-data con tecniche di hashing probabilistico, algoritmi di compressione dati. Applicazioni ed esemplificazioni all'analisi di dati del web. Modelli formali per la specifica e la verifica di correttezza. Modelli della concorrenza: modelli interattivi e reattivi, calcoli di processi e reti di Petri. Sintassi e semantica a interleaving (sistemi di transizioni) e a ordini parziali (reti di Petri), semantica osservazionale e bisimulazione. La specifica di proprietà e la loro verifica (logiche modali e temporali, algoritmi di verifica).
Programma esteso
Programma esteso
1 Nozioni di base di teoria della computazione (decidibilità, intrattabilità, riduzioni). Classificazione dei problemi in funzione della complessità computazionale. Complessità di approssimazione.
2 Approcci moderni per la gestione, indicizzazione, compressione di grandi mole di dati, sia con strutture dati che con tecniche algoritmiche avanzate.
3 Strutture dati di indicizzazione (es. FM-index, bloom filters, hashing), pattern matching, paradigma shift-And, compressione dati LZ, strutture dati succinte.
4 Applicazioni ed esemplificazioni all'analisi di big-data.
5 Modelli formali per la specifica e la verifica di correttezza. La semantica assiomatica dei programmi sequenziali
6 Modelli della concorrenza: modelli di sistemi reattivi, calcoli di processi e reti di Petri.
7 Sintassi e semantica a interleaving (sistemi di transizioni) e a ordini parziali (reti di Petri), semantica osservazionale e bisimulazione
8 La specifica di proprietà e la loro verifica (logiche modali e temporali, algoritmi di verifica).
Prerequisiti
nessuno
Modalità didattica
lezioni frontali ed esercitazioni- Il corso è in lingua italiana
Materiale didattico
Dispense e articoli pubblicati sul sito dell'insegnamento. Testi di consultazione indicati sul sito dell'insegnamento.
Periodo di erogazione dell'insegnamento
primo semestre
Modalità di verifica del profitto e valutazione
L'esame è integrato. Vengono erogate due prove scritte, una per la parte di Teoria e una per la parte di Modelli. Le prove scritte consistono nello svolgimento di esercizi relativi all'acquisizione di competenze specifiche nelle tematiche principali del programma del corso. Le prove orali invece comprendono una discussione della parte scritta e domande sui contenuti dell'insegnamento (si vedano i dettagli nei syllabi dei due moduli).
Il voto finale è la media dei voti parziali ottenuti sulle singole due parti.
Orario di ricevimento
su appuntamento o come orario da ricevimento indicato su sito web
Aims
Concurrent models Formal Models for correctness specification and verification. Interactive and reactive models, process calculi, Petri nets. Syntax and semantics of interleaving (transition systems) and of partial orders (petri nets), observational semantics and bisimulation. Specifying and verifying properties (modal and temporal logics, verification algorithms). Theory of Computation Basic notions of theory of computation (decidability, intractability, Classification of problems with respect their computational complexity. Approximation complexity. Modern approaches to indexing, compression of large data sets by using novel data structures and algorithmic techniques. Indexed data structures (ex. Suffix-tree, trie, hashing), pattern matching
Contents
The main objective of the course is the acquisition of skills related to the analysis and development of computational models and methods in computer science. The student should gain the ability of formalizing and modelling problems using theoretical models and modern computational approaches to solve problems arising from the WEB and the analysis and verification of software systems. The course consists of two sessions, the first one devoted to Concurrent models deals with the theoretical tools used to face basic concepts in computer science concerning the behaviour and description of processes, such as concurrency. The second session introduces to the Theory of Computation and deals with the acquisition of basic theoretical tools that allow to understand the computational complexity of problems, how they are classified according to their complexity and then how they can be solved by algorithmic methodologies.
Various notes. Suggested book: L. Aceto, A. Ingolfsdottir, K.G. Larsen, J. Srba,Reactive Systems, modelling, Specification and verification, Cambridge Univ. Press, 2007.
Detailed program
1 Basic notions of theory of computation (decidability, intractability, reductions). Classification of problems with respect their computational complexity. Approximation complexity.
2 Modern approaches to indexing, compression of massive data sets by using novel data structures and algorithmic techniques.
3 Indexed data structures (ex bloom filters, hashing), pattern matching, the paradigm shift-and, data compression, succinct data structures.
4 "Applications to the analysis of massive data.
5 Formal Models for correctness specification and verification, assiomatic semantics
6 Concurrent models: models of reactive systems, process calculi, Petri nets
7 Syntax and semantics of interleaving (transition systems) and of partial orders (Petri nets), observational semantics and bisimulation.
8 Specifying and verifying properties (modal and temporal logics, verification algorithms).
Prerequisites
none
Teaching form
lectures and practice exercises- the course is in Italian
Textbook and teaching resource
Notes and papers available on the course site. Reference texts suggested on the course site.
Semester
first semester
Assessment method
Oral and written exams. The written exam consists of two assignments one for each module of the course, Theory and Models. Each assignment consists of a list of exercises whose solution requires the acquisition of skills related to the main topics of the course syllabus. The oral exam consists in a discussion of the written assignments with the main aim (see the details of the two modules).
The final grade is the average of the two grades obtained for each single module.
Office hours
by appointment or as indicated by the web-site