Piano degli studi a partire dal 2014/15
Per conseguire la laurea lo studente deve acquisire 120 Crediti Formativi Universitari (CFU). Il CFU equivale a 25 ore di studio ed è la misura del volume di lavoro di apprendimento, compreso lo studio individuale, richiesto ad uno studente per l'acquisizione di conoscenze ed abilità nelle attività formative previste dagli ordinamenti didattici dei corsi di studio.
1 anno
- Modelli di Calcolo (9 CFU)
Vengono introdotti i principi della semantica operazionale, della semantica denotazionale e delle tecniche per metterle in relazione per un linguaggio imperativo e per un linguaggio funzionale di ordine superiore. Viene anche presentata la semantica operazionale e osservazionale di due calcoli per la descrizione di processi (CCS e pi-calcolo). Infine si esaminano i modelli operazionali con probabilità discrete e li si presentano dal punto di vista degli automi probabilistici.
Syllabus
Semantica operazionale e denotazionale di un semplice linguaggio imperativo (IMP)
Introduzione e sistemi di prova con regole di inferenza
Sintassi e semantica operazionale di IMP
Tecniche di prova per induzione.
Ordinamenti parziali completi
Teorema del minimo punto fisso
Segnature e algebre dei termini
Semantica denotazionale di IMP
Equivalenza tra semantica operazionale e denotazionale di IMP
Semantica operazionale e denotazionale di un linguaggio funzionale higher order (HOL)
Sintassi e semantica operazionale lazy di HOL
Domini e costruzioni di domini
Semantica denotazionale lazy di HOL
Relazione tra semantica operazionale e denotazionale di HOL
Sistemi di transizione e calcoli di processo per sistemi comunicanti mobili e probabilistici
Sintassi e semantica operazionale di un calcolo di processi (CCS)
Semantica osservazionale del CCS
Logica di Hennessy-Milner
Sintassi e semantica di un calcolo per processi mobili (pi-calculus)
Modelli operazionali con probabilità discrete, processi di Markov
Automi probabilistici (PA)
Simulazione e bisimulazione di PA
Modalità di verifica: prova scritta e orale con voto in trentesimi - Metodi numerici e ottimizzazione (12 CFU)
Il corso si propone di presentare alcune delle principali metodologie e tecniche relative alla soluzione di problemi numerici. Tali metodologie richiedono l'utilizzo, spesso in combinazione tra loro, di tecniche dell'analisi numerica e di algoritmi di ottimizzazione. Verranno illustrati alcuni dei principali casi in cui i metodi di ottimizzazione trovano applicazione nella risoluzione di problemi di analisi numerica e, viceversa, le tecniche di analisi numerica risultano fondamentali per la soluzione di problemi di ottimizzazione. Le metodologie introdotte saranno illustrate mediante l'applicazione ad alcuni specifici problemi selezionati, ad esempio, nei seguenti ambiti: regressione e stima di parametri in statistica, approssimazione e data fitting, machine learning, data mining, ricostruzioni di immagini e segnali, equilibri economici e problemi finanziari.
Syllabus
Richiami di algebra lineare e calcolo differenziale
Ottimizzazione non vincolata e sistemi di equazioni
Metodi diretti ed iterativi per sistemi lineari
Metodi iterativi per sistemi non lineari
Metodi per l'ottimizzazione non vincolata
Problema dei minimi quadrati
Metodi iterativi per il calcolo di autovalori
Ottimizzazione vincolata e sistemi di equazioni
Algoritmi per l'ottimizzazione vincolata
Applicazioni: regressione, stima di parametri, approssimazione e data fitting
Applicazioni: machine learning, data mining, ricostruzioni di immagini e segnali
Applicazioni: equilibri economici e problemi finanziari
Strumenti software per problemi numerici
Modalità di verifica: Prova scritta e orale - Basi di dati II (9 CFU)
Gli obiettivi del corso sono:
Fornire informazioni sulle tecniche per la realizzazione di sistemi per basi di dati, per permettere un uso più consapevole di tali strumenti, per fornire gli strumenti di base per l’amministrazione di sistemi per la gestione di basi di dati, e per fornire conoscenze relative ad algoritmi, strutture dati, ed alla costruzione di sistemi complessi
Fornire informazioni relative a modelli avanzati per la gestione di dati semistrutturati e di conoscenza in uso nel semantic web
Syllabus
Architettura dei DBMS (sistemi per la gestione di basi di dati)
Il gestore della memoria permanente e il gestore del buffer
Il gestore delle strutture di memorizzazione
Il gestore dei metodi di accesso
Il gestore del catalogo e il gestore delle autorizzazioni.
Il gestore delle interrogazioni: ottimizzazione ed esecuzione.
Gestione delle transazioni e della concorrenza.
Progettazione fisica e messa a punto di basi di dati
Introduzione a XML e alla interrogazione di database semistrutturati.
Ontologie formali e elementi di description logic
Introduzione ai linguaggi formali per il web semantico: Resource Description Framework (RDF), Web Ontology Language (OWL)
Modalità di verifica: Prova scritta e orale - Principi dei linguaggi di Programmazione (9 CFU)
Il corso si propone l'obiettivo di presentare i prinicipi e le tecniche per la realizzazione di linguaggi di programmazione. Il corso consiste di due moduli.
Il primo modulo si propone di Introdurre la teoria, i principi e le tecniche per la generazione di efficienti strumenti che mappano programmi in codici eseguibili sulle machine correnti. limitandoci agli aspetti di più diffusa applicazione e fornendo puntatori ad approfondimenti.
Il secondo modulo ha l'obiettivo stendere ed approfondire la conoscenza dei diversi paradigmi linguistici. Mostrare alcuni esempi di tecniche basate sulla semantica utilizzabili nella implementazione di linguaggi.
Modalità di verifica: Scritto e orale con voto in trentesimi - Programmazione Avanzata (9 CFU)
Gli obiettivi del corso sono:
di fornire agli studenti una conoscenza approfondita di come come concetti e metafore ad alto livello dei linguaggi di programmazione si traducono in sistemi eseguibili e quali siano i loro costi e limiti
di familiarizzare gli studenti con i moderni principi, tecniche e migliori pratiche per la costruzione di software sofisticato
di introdurre tecniche di programmazione a livelli di astrazione più elevata, in particolare generative programming, component programming e web computing
di presentare frameworks allo stato dell’arte che incorporano queste tecniche.
Il corso in particolare si focalizza su questioni di qualità relative al progetto dettagliato ed alla codifica, quali l’affidabilità, le prestazioni, l’adattabilità e l’integrabilità in sistemi più ampi.
Syllabus
Pragmatica dei Linguaggi di Programmazione
Supporto Run Time e Ambienti di Esecuzione
Programmazione Generica
Librerie di Classi e Framework
Programmazione Generativa
Interoperabilità tra Linguaggi
Programmazione Basata su Componenti
Web Services
Web e Application Frameworks
Linguaggi di Scripting
Modalità di verifica: Progetto e prova orale con voto in trentesimi - Algoritmica II (9 CFU)
In questo corso studieremo, progetteremo e analizzeremo soluzioni algoritmiche e strutture dati avanzate per la risoluzione efficiente di problemi combinatori che coinvolgono vari tipi di dato— quali interi, stringhe, punti (geometrici), alberi, grafi. Questo corso costituisce un naturale approfondimento e ampliamento delle conoscenze di base apprese nel percorso della laurea triennale. Il suo syllabus è organizzato per ambiti applicativi, al fine di contestualizzare le tecniche studiate nella realizzazione di software efficiente per essi, e così da consentire adattamenti e specializzazioni di anno in anno che si renderanno necessari e/o opportuni.
Data Storage
Data compression e data synchronization
Data Streaming
Bloom Filter: standard, spectral, compressed, con applicazioni
Count Min Sketch, con applicazioni
Memorie Gerarchiche
Permuting e Sorting, limiti inferiori
Multi-way mergesort su 1 disco, disk striping, e sorting multi-disco
String B-tree
BioInformatica
Suffix Array: definizione, ricerca e costruzione
Suffix Tree: definizione, ricerca, e costruzione da LCP e SA
Lowest Common Ancestor
Pattern matching: KMP, Aho-Corasick, Agrep
Motori di Ricerca
Hashing: universale, cuckoo, perfect, minimal ordered perfect
Codifiche di interi a lunghezza variabile
Liste invertite: memorizzazione e query
Reti
Distributed set operations e hash table
Skip graphs: P2P routing via skip lists
Caching: competitive analysis e on-line algorithms
GIS e DataBase
Closest Pair, Interval tree, Range tree, Priority search tree, K-d tree
Algoritmi di approssimazione, e strutture dati avanzate
Soluzioni approssimate a problemi NPC
Strutture dati randomizzate e auto-aggiustanti
Modalità di verifica: Prova scritta e orale con voto in trentesimi
2 anno
- Sistemi distribuiti: paradigmi e modelli (9 CFU)
Il corso tratta dei paradigmi e dei modelli di programmazione utilizzati per sistemi distribuiti e paralleli sia a livello delle applicazioni che degli strumenti di supporto. Partendo da modelli di programmazione strutturata (algorithmical skeleton, parallel design pattern) o basati sul concetto di componente o di servizio, verranno presi in considerazione sia i problemi relativi agli aspetti funzionali (potere espressivo, modularità, riuso) che quelli relativi agli aspetti non funzionali (performance, fault tolerance, adattività). Nell’ultima parte del corso si presenteranno i protocolli e le problematiche relative alle reti wireless e multimedia nonché alle architetture peer2peer, e si vedranno le implicazioni derivanti dal loro uso per la realizzazione di applicazioni parallele e distribuite.
Syllabus
Paradigmi per la programmazione parallela e distribuita
Programmazione strutturata
Componenti
Workflow
Modelli implementativi
Posix-TCP/IP-SSH/SCP
RPC/RMI
Distributed Virtual Shared Memory
Distributed Virtual File Systems
Sistemi “Middleware” (Globus, gLite, ...)
Architetture per sistemi distribuit
Reti wireless
Reti per multimedia
Architetture Peer-to-peer
Modalità di verifica: Prova scritta e orale - Prova Finale (24 CFU)
Modalità di verifica: Discussione di un elaborato scritto (tesi) con contenuti di originalità preparata dallo studente. La tesi deve essere relativa ad un argomento o progetto a carattere innovativo, svolta in autonomia dallo studente. La tesi dovrà documentare i risultati innovativi ottenuti nonché i collegamenti del lavoro svolto con lo stato delle conoscenze nel settore della scienza e delle tecnologie informatiche. - Gruppo Insegnamenti complementari (18 CFU a scelta)
- Fondamenti di Grafica 3D (6 CFU)
Il corso presenta un'introduzione alle principali tematiche della Grafica Tridimensionale focalizzando sugli aspetti teorici e pratici della modellazione e del rendering. Una parte significativa del corso ha carattere progettuale e prevede la partecipazione attiva degli studenti allo sviluppo collaborativo con Open GL, la piattaforma maggiormate usata in questo contesto.
Argomenti trattati nel corso:
Modeling: Strutture dati per la gestione di mesh simpliciali
Modeling: Strutture dati per l'indexing spaziale efficiente
Rendering: La pipeline di rendering, implementazioni HW.
Rendering: Algoritmi avanzati per il rendering, Global illumination e Local Shading;
Rendering: High Quality Interactive Rendering (Shading Languages)
Modalità di verifica: progetto e orale. - Analisi dei rischi informatici (6 CFU)
Il corso introduce i principali concetti e gli strumenti metodologi per analizzare un sistema informatico dal punto di vista della sicurezza e per aumentare il livello di sicurezza offerto dal sistema stesso. Il corso adotta un approccio sistemico alla sicurezza vista come una proprietà del sistema informatico complessivo a partire dal livello del sistema operativo.
Syllabus
Concetti di Base
Attributi di sicurezza e relazione con altri attributi di un sistema
Confidenzialità
Integrità
Disponibilità
Vulnerabilità
Minaccia
Attacco
Attacchi elementari
Attacchi complessi
Contromisura
Rischio
Analisi delle Vulnerabilità
Criteri di Progetto e Vulnerabilita
Vulnerabilità e Tipi di dato
Strumenti automatici per l'individuazione delle vulnerabilità
Analisi delle Contromisure
Contromisure a livello hardware/firmware
Contromisure a livello di nucleo del sistema operativo
Contromisure a livello delle applicazioni
Contromisure a livello di rete
Strumenti per la rilevazione delle intrusioni
Firewall
Intrusion Detection System
Network Intrusion Detection System
Politica di Sicurezza
Modalità di verifica: Prova scritta, progetto e orale. - Laboratorio di Matematica Computazionale (6 CFU)
Il corso propone la descrizione, l’implementazione e la sperimentazione di tecniche numeriche nel contesto di applicazioni specifiche.
Syllabus
Introduzione ad ambienti di calcolo scientifico (Matlab, Scilab, Octave)
Implementazione di semplici applicazioni numeriche: interpolazione spline, interpolazione di Hermite, quadratura adattiva, curve di Bezier
Decomposizione ai valori singolari: applicazioni alla compressione di immagini e al clustering di dati.
Catene di Markov e matrici non-negative: applicazioni a problemi di web-ranking
FFT: applicazione al calcolo con polinomi, all’elaborazione di immagini e di segnali acustici.
Altre trasformate discrete e loro applicazioni
Struttura del corso
Modalità di verifica: Prova scritta, progetto e orale. Voto in tentesimi - Algoritmi paralleli e distribuiti (6 CFU)
Scopo del corso: introdurre le tecniche algoritmiche nell'ambito dei modelli computazionali paralleli e distribuiti
Modalità di verifica: Prova scritta, progetto e orale. - Tecniche di analisi statica di sistemi (6 CFU)
Il corso si propone l'obiettivo di mostrare come le applicazione di tecniche di analisi statica possa contribuire a migliorare le caratteristiche di qualita' dei sistemi software. L'obiettivo e' quello di fornire gli elementi fondamentali necessari per comprendere le potenzialità e i limiti delle varie tecniche. Verranno esaminate diverse tecniche statiche per valutare la qualita' del software in termini di sicurezza, uso delle risorse, affidabilita' e performace. Verranno inoltre presentati strumenti per l'analisi statica di sistemi. Durante la fase di sperimentazione si approfondiranno anche gli aspetti metodologici legati all'uso effettivo di tecniche di analisis statica.
Modalità di verifica: Prova scritta e orale - Data Mining: fondamenti (6 CFU)
I formidabili progressi della potenza di calcolo, della capacità di acquisizione e memorizzazione dei dati e di connettività hanno creato quantità di dati senza precedenti. Il data mining, ovvero la scienza dell’estrazione di conoscenza da tali masse di dati, si è quindi affermato come ramo interdisciplinare dell’informatica.
Le tecniche di data mining sono state applicate a molti problemi in ambito industriale, scientifico e sociale, e si ritiene che avranno un impatto sempre più profondo sulla società. L’obiettivo del corso è quello di fornire un’introduzione ai concetti di base del data mining e del processo di estrazione della conoscenza, con approfondimenti sui modelli analitici e gli algoritmi più diffusi;
Concetti di base del data mining e del processo di estrazione della conoscenza
Preprocessing ed analisi esplorativa dei dati
Pattern frequenti e regole associative
Classificazione: alberi di decisione e metodi Bayesiani
Clustering: metodi basati su partizione, gerarchici, basati su densità
Esperimenti analitici con strumenti di data mining
Modalità di verifica: Prova scritta, progetto e orale. - Semantica e teoria dei tipi (6 CFU)
Verranno presentate alcune proprieta' fondamentali dei modelli di calcolo, come la semantica operazionale ed astratta, la struttura dei tipi, l'ordine superiore, la concorrenza, l'interazione. Verranno utilizzate la semantica algebrica e la teoria elementare dei tipi, ma non vi sono prerequisiti eccetto una conoscenza elementare dell'algebra e della logica.
Il lambda calcolo con tipi semplici
L'isomorfismo di Curry-Howard
Il PCF e il suo modello cpo, con applicazione ai linguaggi di programmazione funzionali
Elementi di tipi ricorsivi e polimorfi, con applicazione ai linguaggi di programmazione orientati agli oggetti
Le categorie come algebre parziali
Categorie monoidali, cartesiane e cartesiane chiuse (CCC)
Le CCC come modelli del lambda calcolo con tipi semplici
Specifiche algebriche, categorie di modelli e aggiunzioni
Le reti di Petri e i loro modelli monoidali (strettamente) simmetrici
I sistemi di riscrittura etichettati (LTS) come coalgebre
I sistemi LTS composizionali come bialgebre
Il Calculus for Communicating Processes (CCS) e il Pi-calcolo di Milner e i loro modelli bialgebrici
Modalità di verifica: Prova scritta e orae - Algoritmi per la bioinformatica (6 CFU)
L'obiettivo del corso è di fornire allo studente una panoramica di algoritmi concepiti per l'analisi di sequenze genomiche. Verra' prestata attenzione sia agli aspetti teorici e combinatori che a quelli pratici posti dai vari problemi quali il sequenziamento di interi genomi, l'allineamento di sequenze, la ricerca di pattern ripetuti e di lunghe ripetizioni approssimate, il calcolo di distange genomiche, e altri problemi biologicamente rilevanti per lo studio di sequenze molecolari.
Modalità di verifica: Prova scritta e orale con voto in trentesimi - Sistemi Peer to Peer (6 CFU)
Il corso si propone di presentare i prinicipi e le tecniche per la realizzazione di linguaggi di
Programmazione. Vengono introdotti teoria, principi e tecniche per la generazione di efficienti strumenti che mappano programmi in codici eseguibili.
Vengono quindi analizzati alcuni paradigmi linguistici, mostrando esempi di tecniche basate sulla semantica utilizzabili nella implementazione di linguaggi.
Modalità di verifica: Scritto e orale - Elaborazione del Linguaggio Naturale (6 CFU)
Comprensione del settore del trattamento del linguaggio, delle principali tecniche, algoritmi e architetture usate nelle sue applicazioni.
Capacità di progettare, implementare e valutare sistemi di trattamento del linguaggio.
Contenuti:
Modellazione statistica del linguaggio naturale.
Tecniche di apprendimento statistico. Analisi lessicale.
Analisi grammaticale. Analisi semantica.
Corpora annotati e metodologie di valutazione.
Metodi statistici di traduzione automatica.
Modalità di verifica: Prova scritta e orale. - Reti mobili: reti ad hoc e di sensori (6 CFU)
Il corso ha l'obiettivo di fornire agli studenti conoscenze relative alle reti mobili ad hoc e alle reti di sensori, illustrando le architetture principali, i problemi ad esse relativi, e le principali soluzioni.
Il corso introduce le problematiche principali relative agli strati di accesso al mezzo, di rete, di trasporto e di applicazione, dando particolare rilievo ai problemi del routing, della gestione dell’energia, del controllo della topologia, e della gestione dei dati. Riguardo alle reti di sensori vengono inoltre introdotte alcune applicazioni specifiche, quali la localizzazione e il tracciamento e viene presentato il problema dell’integrazione delle reti di sensori in sistemi “context aware” o in altre reti.
Infine il corso presenta alcuni standard quali 802.11X, 802.15.x, Bluetooth e Zigbee e alcuni esempi di piattaforme commerciali per reti di sensori.
.
Modalità di verifica: Prova scritta e orale. Voto in trentesimi - Tecniche di progettazione: Design patterns (6 CFU)
I design patterns definiscono una tecnica di progettazione che vede il riuso di schemi consolidati e verificati. Il corso presenta i fondamentali principi di progettazione OO e affronta la presentazione in dettaglio dei Design Patterns à la GoF (composite, strategy, decorator, abstract factory, command, etc. ) illustrandone motivazioni, struttura, aspetti di implementazione.
Modalità di verifica: Prova scritta, progetto e orale. - Information Retrieval (6 CFU)
Studio, progetto e analisi di sistemi software efficienti ed efficaci per l’Information Retrieval nell’ambito di collezioni di documenti testuali (non strutturati), DB-centric (strutturati) o semi-strutturati (p.e. HTML, XML). Questo studio si concentrerà in particolare sui motori di ricerca per il Web, descrivendo in dettaglio tutti i loro componenti software principali e analizzando le prestazioni e i limiti computazionali delle soluzioni algoritmiche correntemente adottate per ciascuno di essi. Si introdurranno inoltre i fondamenti pratici e teorici per l’organizzazione e l’analisi dei sistemi di IR. Infine si analizzeranno alcune tecniche algoritmiche frequentemente utilizzate per la realizzazione di IR-tool che operano su grandi quantità di dati.
Syllabus
Motori di Ricerca
Crawling, Text analysis, Indexing, Ranking
Memorizzazione pagine Web e grafo dei collegamenti
Visualizzazione dei risultati
Altri tipi di dato: XML, DB testuali
Data processing for IR tools
Data streaming, sketching, compression
Data clustering (cenni)
Modalità di verifica: Prova scritta, progetto e orale - Metodi per la verifica del software (6 CFU)
Obiettivi
Il corso si propone di introdurre e sperimentare la tecnica di verifica di correttezza di sistemi (software e hardware) chiamata Model Checking. Si svilupperanno i prerequisiti necessari e si approfondira' lo studio e l'utilizzo di metodi algoritmici (efficienti) per la verifica basati sul Model Checking. L'utilizzo di tecniche di Model Checking permette di verificare effettivamente la correttezza di classi significative di programmi superando i limiti delle soluzioni tradizionali basate su testing e simulazione.
Syllabus
Logica temporale.
Automi e parole infinite.
Algoritmi di verifica: le tecniche di base (linear time-branching time)
L'esplosione del numero degli stati: l Model Checking simbolico e la tecnica dell'astrazione
Strumenti e pacchetti.
Casi di studio
Modalità di verifica: Prova scritta e orale - Elaborazione di Segnali e Immagini (6 CFU)
L’obiettivo del corso è fornire allo studente la conoscenza dei metodi fondamentali di analisi di segnali, sia nel dominio del tempo sia in quello delle frequenze, e di elaborazione di immagini. Al termine del corso dovrà saper applicare concretamente i metodi appresi in diversi contesti e per diversi scopi. Per quanto riguarda i segnali unidimensionali, il corso è incentrato sulla Trasformata Discreta di Fourier. Per quanto riguarda le immagini, oltre alla Trasformata di Fourier bidimensionale, sono descritti metodi morfologici e metodi per la segmentazione.
Sillabus
Classificazione dei segnali. Segnali continui e discreti. Definizione di potenza e energia.
Convoluzione e correlazione di segnali continui e discreti. Applicazione di maschere a segnali discreti bidimensionali.
Trasformata Serie di Fourier e Trasformata Continua di Fourier per segnali continui.
Trasformata Discreta di Fourier e Trasformata Continua di Fourier per segnali discreti.
Teoremi di Parseval e di Wiener.
Teorema di Shannon ed errore di aliasing.
Sistemi lineari continui e discreti. Risposta all’impulso e risposta in frequenza.
Metodi morfologici per l’elaborazione di immagini.
Metodi per la segmentazione di immagini.
Modalità di verifica: Prova scritta e orale - Basi di dati di supporto alle decisioni (6 CFU)
Ogni organizzazione utilizza i dati storici accumulati con il sistema informatico operazionale per produrre informazioni sintetiche adatte a facilitare i processi decisionali e renderli più veloci ed obiettivi. Il corso presenta i principali approcci al problema e le caratteristiche degli strumenti matematici e informatici utilizzati. Il corso presenta l’approccio che prevede l'utilizzo di particolari basi di dati, dette Data Warehouse, a partire dalle quali si procede con opportune interrogazioni per produrre interattivamente dati di sintesi. Si presentano anche i nuovi requisiti che questi problemi pongono alla tecnologia dei sistemi per basi di dati per rendere possibili analisi interattive rapide di grandi quantità di dati.
- Sistemi informativi e informatici nelle organizzazioni.
- I sistemi informatici direzionali basati su data warehouse.
- Modelli dei dati per data warehouse e metodi di analisi multidimensionale.
- Progettazione concettuale e logica di data warehouse.
- Algoritmi per la scelta delle viste da materializzare.
- La tecnologia dei sistemi per data warehouse: tipi di indici, ottimizzazione delle interrogazioni, progettazione fisica, riscrittura delle interrogazioni per l'uso di viste materializzate.
- Studio di casi.
Modalità di verifica: Prova scritta e orale - Apprendimento automatico: fondamenti (6 CFU)
Obiettivi
Gli obiettivi del corso sono di introdurre i principi e l'analisi critica dei principali paradigmi per l'apprendimento da insiemi di dati e sue applicazioni.
I concetti sono introdotti progressivamente dagli approcci più semplici fino ai modelli allo stato dell'arte nell'ambito dell’inquadramento concettuale generale e moderno del machine learning. Il corso si focalizza in particolare sull'analisi critica delle caratteristiche per la realizzazione e l'uso appropriato di algoritmi di apprendimento di funzioni da esempi e per la modellazione e valutazione sperimentale.
Syllabus
- Introduzione: Compiti computazionali nell'apprendimento predittivo e concetto di generalizzazione.
- Modelli e concetti di base: struttura dello spazio delle ipotesi, spazi discreti e continui, modelli lineari, nearest neighbor, modelli proposizionali, bias induttivo.
- Modelli Neurali: Perceptron e proprietà computazionali. Introduzione alle Reti Neurali multistrato feedforward: architetture e algoritmi di apprendimento.
- Modelli basati su regole.
- Principi dell'apprendimento ed aspetti pratici generali:
Validazione, Analisi Bias-Variance. Elementi di Statistical Learning Theory, VC-dimension. Comitati di modelli.
- Support Vector Machines: caso lineare, margine, caso non-lineare, modelli a Kernel.
- Modelli Bayesiani e Grafici.
- Unsupervised learning.
- Introduzione alle Applicazioni e modelli avanzati.
Modalità di verifica: Written + oral examination - Servizi software (6 CFU)
• Obiettivi formativi: L’obiettivo del corso è introdurre gli aspetti principali della progettazione, analisi e realizzazione di servizi software.
Syllabus
• Standard di base dei servizi Web
• Progettazione, analisi e realizzazione di servizi software
o Individuazione, composizione e adattamento di servizi esistenti
o Utilizzo di linguaggi workflow per la definizione di processi aziendali (“business processes”)
o Analisi di processi aziendali
• Descrizioni estese di servizi
o Informazioni sulla qualità dei servizi
o Informazioni sul comportamento dei servizi
• Introduzione ai servizi cloud
Modalità di verifica: progetto e orale.
- Fondamenti di Grafica 3D (6 CFU)
- Gruppo Insegnamenti a libera scelta dello studente (12 CFU a scelta)
- Visual Analytics (6 CFU)
La disponibilità di grandi risorse di dati offre nuove opportunità per la comprensione di modelli e comportamenti della società moderna. L'informazione proveniente da queste sorgenti necessita di metodi di visualizzazione efficaci per estrarre senso dai dati e facilitare l'interpretazione di fenomeni molto complessi.
Lo scopo del corso è quello di presentare metodi di base e tecniche di visualizzazione per la presentazione efficace di informazione preveniente da diverse sorgenti: dati strutturati (relazionali, gerarchie, alberi), dati relazionali (social network), dati temporali, dati spaziali e dati spazio-temporali. Attraverso lo studio di metodi e strumenti esistenti, verranno presentati alcuni scenari di analitica visuale.
Syllabus
-Metafore di visualizzazione di informazione
* Gerarchica e strutturale
* Relazionale
* Temporale
* Spaziale
* Spazio temporale
* Informazione non strutturata (testo)
- Metodi e strumenti
* Panoramica sugli ambienti e le librerie di visualizzazione esistenti
- Processi di Visual Analytics
* Definizione di un processo di knowledge discovery
* Ambienti integrati per la Visual Analytics
* Analisi visuale esplorativa di dati e modelli
* Esempi e casi di studio
Modalità di verifica: Prova scritta e orale con voto in trentesimi - Laboratory on algorithms for Big Data (6 CFU)
Il corso consiste di una prima parte di lezioni su principi e tecniche algoritmiche avanzate legate alla memorizzazione, analisi, accesso e ricerca di big data (3 CFU), e di una seconda parte laboratoriale (3 CFU) durante la quale gli studenti sfrutteranno le conoscenze acquisite per la realizzazione di un progetto. Gli studenti potranno scegliere tra un insieme di progetti che offriranno spunti algoritmici interessanti per applicare le tecniche/metodologie studiate nel corso. Tali progetti saranno concordati con aziende del settore IT di livello (inter-)nazionale che contribuiranno anche ad identificare/costruire dataset reali su cui testare i progetti svolti.
L’obiettivo del corso è quello di permettere agli studenti di
- confrontarsi con problemi algoritmici difficili e di interesse pratico che coinvolgono big data;
- misurare direttamente l’impatto di soluzioni algoritmiche efficienti, rispetto a soluzioni baseline, nella progettazione di software che gestiscono big data;
- realizzare software che utilizzino librerie algoritmiche sofisticate;
- entrare in contatto con alcune aziende per eventuali periodi di internship, borse di approfondimento, o tesi di laurea magistrale.
Syllabus
- Strutture dati compresse: interi, testi, alberi
- Strutture dati randomizzate: hashing e sketching
- Grafi: memorizzazione compresa, visite e analisi
- Strutture dati geometriche elementari (opzionale)
Modalità di verifica: Progetto e prova orale con voto in trentesimi - Big Data Analytics (6 CFU)
Nella società digitale in cui viviamo oggi, ogni attività umana è mediata da tecnologie dell'informazione . Pertanto, ogni attività lascia tracce digitali che possono essere memorizzate in qualche base di dati. Record di chiamate telefoniche , record di transazioni commerciali, log di ricerche sul web, traiettorie dei movimenti, testi di post nei social media e tweets ... Ogni minuto , una valanga di "big data" è prodotta dagli esseri umani, in modo consapevole o meno, i quali rappresentano un nuovo e accurato "proxy" digitale della nostra società.
I Big Data forniscono un "microscopio sociale" senza precedenti, una nuova opportunità per comprendere la complessità della nostra società , e un cambiamento di paradigma per le scienze sociali .
Questo corso è un'introduzione al campo emergente del Big Data Analytics e del Social Mining, finalizzato ad acquisire e analizzare Big Data provenienti da più fonti allo scopo di scoprire gli schemi e i modelli di comportamento umano che spiegano i fenomeni sociali . Il focus è su ciò che si può imparare dai big data in diversi ambiti: mobilità e trasporti, pianificazione urbana, demografia, economia, relazioni sociali, opinioni e di sentimenti, ecc; e sui metodi di analitica e di mining che possono essere utilizzati. Viene fornita anche un'introduzione a metodi di analisi scalabili utilizzando il paradigma di "map-reduce".
1 . Sorgenti di Big Data.
- Open Data (linked), dati relativi all'attività sul Web , social networks, social media, dati che derivano da telefoni cellulari, dati GPS di navigazione, dati sulle transazioni commerciali , dati inerenti al turismo, Crowdsourcing / crowdsensing.
2 . Analisi di Big Data e metodi Social Mining: pre-processing dei dati , analisi esplorativa dei dati , analisi di correlazione, feature selection, arricchimento semantico, scoperta di pattern, classificazione e predizione , clustering e segmentazione per:
- scoperta di profili sociali individuali
- analisi di comportamenti collettivi
- scoperta di contenuto emotivo in testi e sentiment analysis
3 . Domini dell'analisi dei Big Data
- Mobilità e trasporti
- Previsione di indicatori socio-economici del progresso, della felicità, ecc
- Twitterology e previsione di umore sociale e tendenze
- Turismo
4 . Problemi etici legati all'analisi dei Big Data
- Privacy e protezione dei dati personali
- Tutela della privacy durante le analisi di Big Data
- La responsabilità sociale degli scienziati
5 . Analisi dei dati scalabili
- Paradigmi di database NO- SQL
- Processi di analisi dei dati con il paradigma "map -reduce"
Modalità di verifica: Prova scritta e orale con voto in trentesimi - Robotica (6 CFU)
Insegnare i fondamenti della robotica, come dominio applicativo per l'Informatica, i sistemi intelligenti, l’apprendimento automatico
Fornire agli studenti gli strumenti di base per integrare e programmare un sistema robotico, con particolare riferimento alla realizzazione di schemi di percezione-azione e controllo del comportamento
Costruire negli studenti la capacità di lavoro sperimentale, attraverso l’analisi di casi di studio e attività di laboratorio
Syllabus
Meccanica e cinematica dei robot
Sensori per la robotica (sensori di posizione, di prossimità, di forza)
Controllo di robot
Architetture per il controllo del comportamento nei robot
Navigazione robotica
Percezione tattile nell’Uomo e nei robot
Visione nell’Uomo e nei robot
Sistema vestibolare nell’Uomo e nei robot
Analisi di casi di studio di sistemi robotici
Progetto in laboratorio
Modalità di verifica: Progetto e orale. - Fondamenti di Grafica 3D (6 CFU)
Il corso presenta un'introduzione alle principali tematiche della Grafica Tridimensionale focalizzando sugli aspetti teorici e pratici della modellazione e del rendering. Una parte significativa del corso ha carattere progettuale e prevede la partecipazione attiva degli studenti allo sviluppo collaborativo con Open GL, la piattaforma maggiormate usata in questo contesto.
Argomenti trattati nel corso:
Modeling: Strutture dati per la gestione di mesh simpliciali
Modeling: Strutture dati per l'indexing spaziale efficiente
Rendering: La pipeline di rendering, implementazioni HW.
Rendering: Algoritmi avanzati per il rendering, Global illumination e Local Shading;
Rendering: High Quality Interactive Rendering (Shading Languages)
Modalità di verifica: progetto e orale. - Apprendimento Automatico: Reti Neurali e Metodi Avanzati (6 CFU)
Obiettivi
L’obiettivo del corso è di fornire le metodologie per specializzarsi nel campo della costruzione di nuovi modelli di apprendimento automatico, comprendenti reti neurali allo stato dell’arte, nell’ambito del trattamento di domini complessi e dati non-vettoriali. Il paradigma delle reti neurali dinamiche costituisce la base per l’introduzione di metodi per il trattamento adattivo di sequenze e strutture a dimensione variabile. Una particolare enfasi è data all'analisi critica della sinergia tra lo sviluppo di modelli avanzati e il modellamento di applicazioni interdisciplinari innovative per domini complessi nelle Scienze Naturali, e all’introduzione di temi di ricerca.
Syllabus
- Reti Neurali, aspetti avanzati:
Collocazione storica, Regolarizzazione e controllo della complessità,
Approcci costruttivi, Modelli di neurocomputing per apprendimento non-supervisionato.
- Modelli per domini strutturati:
- Domini strutturati e compiti di apprendimento per sequenze, serie temporali e grafi.
- Reti neurali dinamiche ricorrenti: architetture, algoritmi di apprendimento, proprietà.
- Approcci generativi: Hidden Markov Models.
- Modelli ricorsivi supervised e unsupervised.
- Approcci basati su Kernel per dati complessi (non-vettoriali).
- Approcci emergenti per domini strutturati e apprendimento relazionale.
- Applicazioni per le scienze applicate e interdisciplinari: casi di studio in Bioinformatics e Cheminformatics.
- Metodologie emergenti ed indirizzi di ricerca nell’apprendimento automatico.
Modalità di verifica: Prova scritta e orale - Analisi dei rischi informatici (6 CFU)
Il corso introduce i principali concetti e gli strumenti metodologi per analizzare un sistema informatico dal punto di vista della sicurezza e per aumentare il livello di sicurezza offerto dal sistema stesso. Il corso adotta un approccio sistemico alla sicurezza vista come una proprietà del sistema informatico complessivo a partire dal livello del sistema operativo.
Syllabus
Concetti di Base
Attributi di sicurezza e relazione con altri attributi di un sistema
Confidenzialità
Integrità
Disponibilità
Vulnerabilità
Minaccia
Attacco
Attacchi elementari
Attacchi complessi
Contromisura
Rischio
Analisi delle Vulnerabilità
Criteri di Progetto e Vulnerabilita
Vulnerabilità e Tipi di dato
Strumenti automatici per l'individuazione delle vulnerabilità
Analisi delle Contromisure
Contromisure a livello hardware/firmware
Contromisure a livello di nucleo del sistema operativo
Contromisure a livello delle applicazioni
Contromisure a livello di rete
Strumenti per la rilevazione delle intrusioni
Firewall
Intrusion Detection System
Network Intrusion Detection System
Politica di Sicurezza
Modalità di verifica: Prova scritta, progetto e orale. - Laboratorio di Matematica Computazionale (6 CFU)
Il corso propone la descrizione, l’implementazione e la sperimentazione di tecniche numeriche nel contesto di applicazioni specifiche.
Syllabus
Introduzione ad ambienti di calcolo scientifico (Matlab, Scilab, Octave)
Implementazione di semplici applicazioni numeriche: interpolazione spline, interpolazione di Hermite, quadratura adattiva, curve di Bezier
Decomposizione ai valori singolari: applicazioni alla compressione di immagini e al clustering di dati.
Catene di Markov e matrici non-negative: applicazioni a problemi di web-ranking
FFT: applicazione al calcolo con polinomi, all’elaborazione di immagini e di segnali acustici.
Altre trasformate discrete e loro applicazioni
Struttura del corso
Modalità di verifica: Prova scritta, progetto e orale. Voto in tentesimi - Algoritmi paralleli e distribuiti (6 CFU)
Scopo del corso: introdurre le tecniche algoritmiche nell'ambito dei modelli computazionali paralleli e distribuiti
Modalità di verifica: Prova scritta, progetto e orale. - Tecniche di analisi statica di sistemi (6 CFU)
Il corso si propone l'obiettivo di mostrare come le applicazione di tecniche di analisi statica possa contribuire a migliorare le caratteristiche di qualita' dei sistemi software. L'obiettivo e' quello di fornire gli elementi fondamentali necessari per comprendere le potenzialità e i limiti delle varie tecniche. Verranno esaminate diverse tecniche statiche per valutare la qualita' del software in termini di sicurezza, uso delle risorse, affidabilita' e performace. Verranno inoltre presentati strumenti per l'analisi statica di sistemi. Durante la fase di sperimentazione si approfondiranno anche gli aspetti metodologici legati all'uso effettivo di tecniche di analisis statica.
Modalità di verifica: Prova scritta e orale - Laboratorio di progettazione di software distribuito (6 CFU)
Il corso affronta il problema dello sviluppo di sistemi software distribuiti rispondenti ai requisiti e consegnati nel rispetto di tempi e costi prestabiliti. Il processo di sviluppo presentato e seguito nel corso di laboratorio prevede attività tecniche (analisi di dominio, specifica dei requisiti, progettazione in UML, realizzazione in Java o in un altro linguaggio di programmazione orientato agli oggetti, documentazione) e gestionali (incontri con il committente, verifiche ispettive, collaudo).
Syllabus
1. Analisi del dominio
2. Specifica dei requisiti
3. Progettazione in UML mediante un ambiente integrato di progettazione
4. Codifica in Java (o in un altro linguaggio di programmazione orientato agli oggetti) mediante un ambiente integrato di sviluppo
5. Verifica e validazione
Modalità di verifica: L'esame consiste in un colloquio individuale con discussione di un progetto realizzato durante il corso. - Data Mining: fondamenti (6 CFU)
I formidabili progressi della potenza di calcolo, della capacità di acquisizione e memorizzazione dei dati e di connettività hanno creato quantità di dati senza precedenti. Il data mining, ovvero la scienza dell’estrazione di conoscenza da tali masse di dati, si è quindi affermato come ramo interdisciplinare dell’informatica.
Le tecniche di data mining sono state applicate a molti problemi in ambito industriale, scientifico e sociale, e si ritiene che avranno un impatto sempre più profondo sulla società. L’obiettivo del corso è quello di fornire un’introduzione ai concetti di base del data mining e del processo di estrazione della conoscenza, con approfondimenti sui modelli analitici e gli algoritmi più diffusi;
Concetti di base del data mining e del processo di estrazione della conoscenza
Preprocessing ed analisi esplorativa dei dati
Pattern frequenti e regole associative
Classificazione: alberi di decisione e metodi Bayesiani
Clustering: metodi basati su partizione, gerarchici, basati su densità
Esperimenti analitici con strumenti di data mining
Modalità di verifica: Prova scritta, progetto e orale. - Ambienti Virtuali (6 CFU)
Fornire una panoramica sulle tecnologie e gli strumenti necessari per la realizzazione di sistemi completi di Realtà Virtuale.
ll corso è organizzato in tre parti
Il modulo relativo alla Percezione illustra le modalità, proprie dell'uomo, di sperimentare la realtà circostante in modo da individuarne gli aspetti che possono essere simulati e identificare le tecnologie utili alla loro replicazione
Il modulo relativo a Modellazione e Rendering descrive le principali tecniche usate per la modellazione dell'ambiente virtuale e per l'implementazione dei moduli che costituiscono un sistema di Realtà Virtuale, illustrando in particolare i sottosistemi relativi al canale visivo, acustico e aptico.
Il modulo relativo ad Interazione e Applicazioni illustra tecnologie e metafore usate per l'interazione fra utente e ambiente virtuale e descrive alcune applicazioni di realtà virtuale, con particolari approfondimenti dedicati alla Realtà Aumentata e al web.
Sono previste anche esercitazioni finalizzate alla realizzazione di una semplice applicazione di VR interattiva.
Modalità di verifica: Prova scritta, progetto e orale - Semantica e teoria dei tipi (6 CFU)
Verranno presentate alcune proprieta' fondamentali dei modelli di calcolo, come la semantica operazionale ed astratta, la struttura dei tipi, l'ordine superiore, la concorrenza, l'interazione. Verranno utilizzate la semantica algebrica e la teoria elementare dei tipi, ma non vi sono prerequisiti eccetto una conoscenza elementare dell'algebra e della logica.
Il lambda calcolo con tipi semplici
L'isomorfismo di Curry-Howard
Il PCF e il suo modello cpo, con applicazione ai linguaggi di programmazione funzionali
Elementi di tipi ricorsivi e polimorfi, con applicazione ai linguaggi di programmazione orientati agli oggetti
Le categorie come algebre parziali
Categorie monoidali, cartesiane e cartesiane chiuse (CCC)
Le CCC come modelli del lambda calcolo con tipi semplici
Specifiche algebriche, categorie di modelli e aggiunzioni
Le reti di Petri e i loro modelli monoidali (strettamente) simmetrici
I sistemi di riscrittura etichettati (LTS) come coalgebre
I sistemi LTS composizionali come bialgebre
Il Calculus for Communicating Processes (CCS) e il Pi-calcolo di Milner e i loro modelli bialgebrici
Modalità di verifica: Prova scritta e orae - Algoritmi per la bioinformatica (6 CFU)
L'obiettivo del corso è di fornire allo studente una panoramica di algoritmi concepiti per l'analisi di sequenze genomiche. Verra' prestata attenzione sia agli aspetti teorici e combinatori che a quelli pratici posti dai vari problemi quali il sequenziamento di interi genomi, l'allineamento di sequenze, la ricerca di pattern ripetuti e di lunghe ripetizioni approssimate, il calcolo di distange genomiche, e altri problemi biologicamente rilevanti per lo studio di sequenze molecolari.
Modalità di verifica: Prova scritta e orale con voto in trentesimi - Tecniche e strumenti per l'analisi di sistemi biologici (6 CFU)
Il corso si concentrerà sulle metodologie per lo studio dei comportamenti dei sistemi biologici, esaminando linguaggi per la specifica delle proprietà di interesse e tecniche per assicurarne la validità nei sistemi descritti
Contenuti:
Simulazione. Algoritmo di Gillespie.
Logiche temporali.
Model checking. BDD. Probabilistic model checking.
Interpretazione astratta. Framework di Cousot.
Interpretazione astratta probabilistica. Strumenti di analisi
Modalità di verifica: Prova scritta, progetto e orale - Laboratorio di Business Intelligence (6 CFU)
Il corso presenta tecnologie e sistemi per l’accesso ai dati, per la costruzione ed analisi di datawarehouse, per la reportistica e per l’estrazione di conoscenza da basi di dati. L’accento è sull’uso di strumenti e sull’analisi di problemi applicativi utilizzando esempi e casi studio significativi. Lo studente acquisirà conoscenze e capacità sulle principali tecnologie di Business Intelligence, con particolare riferimento ai prodotti software esistenti ed alla loro applicabilità al supporto delle decisioni. Lo studente saprà essere indipendente nella valutazione delle metodologie, delle tecnologie e degli strumenti maggiormente adeguati alle caratteristiche e alle necessità del problema di analisi. Il modulo si prospetta anche come preparatorio allo svolgimento di tesi di laurea con obiettivi di natura analitica.
Modalità di verifica: Progetto e orale - Sistemi Peer to Peer (6 CFU)
Il corso si propone di presentare i prinicipi e le tecniche per la realizzazione di linguaggi di
Programmazione. Vengono introdotti teoria, principi e tecniche per la generazione di efficienti strumenti che mappano programmi in codici eseguibili.
Vengono quindi analizzati alcuni paradigmi linguistici, mostrando esempi di tecniche basate sulla semantica utilizzabili nella implementazione di linguaggi.
Modalità di verifica: Scritto e orale - Elaborazione del Linguaggio Naturale (6 CFU)
Comprensione del settore del trattamento del linguaggio, delle principali tecniche, algoritmi e architetture usate nelle sue applicazioni.
Capacità di progettare, implementare e valutare sistemi di trattamento del linguaggio.
Contenuti:
Modellazione statistica del linguaggio naturale.
Tecniche di apprendimento statistico. Analisi lessicale.
Analisi grammaticale. Analisi semantica.
Corpora annotati e metodologie di valutazione.
Metodi statistici di traduzione automatica.
Modalità di verifica: Prova scritta e orale. - Reti mobili: reti ad hoc e di sensori (6 CFU)
Il corso ha l'obiettivo di fornire agli studenti conoscenze relative alle reti mobili ad hoc e alle reti di sensori, illustrando le architetture principali, i problemi ad esse relativi, e le principali soluzioni.
Il corso introduce le problematiche principali relative agli strati di accesso al mezzo, di rete, di trasporto e di applicazione, dando particolare rilievo ai problemi del routing, della gestione dell’energia, del controllo della topologia, e della gestione dei dati. Riguardo alle reti di sensori vengono inoltre introdotte alcune applicazioni specifiche, quali la localizzazione e il tracciamento e viene presentato il problema dell’integrazione delle reti di sensori in sistemi “context aware” o in altre reti.
Infine il corso presenta alcuni standard quali 802.11X, 802.15.x, Bluetooth e Zigbee e alcuni esempi di piattaforme commerciali per reti di sensori.
.
Modalità di verifica: Prova scritta e orale. Voto in trentesimi - Tecniche di progettazione: Design patterns (6 CFU)
I design patterns definiscono una tecnica di progettazione che vede il riuso di schemi consolidati e verificati. Il corso presenta i fondamentali principi di progettazione OO e affronta la presentazione in dettaglio dei Design Patterns à la GoF (composite, strategy, decorator, abstract factory, command, etc. ) illustrandone motivazioni, struttura, aspetti di implementazione.
Modalità di verifica: Prova scritta, progetto e orale. - Strumenti di programmazione per sistemi paralleli e distribuiti (6 CFU)
Il corso tratta della progettazione,valutazione e utilizzo di strumenti e ambienti di programmazione per applicazioni di sistemi paralleli e distribuiti. I paradigmi di programmazione, e relativi modelli di costo, riguardano le computazioni ad alte prestazioni di tipo stream- e data-parallel, distributed shared memory, programmazione adattiva e context-aware, programmazione ad eventi ad alte prestazioni, programmazione real-time, programmazione di politiche di tolleranza ai guasti, ed altri. Vengono definiti gli strumenti, statici e dinamici, per questi paradigmi e ne vengono valutate le prestazioni mediante studi di casi in attività sperimentale e di laboratorio.
Syllabus
1. Modelli di programmazione stream-parallel e data-parallel
2. Distributed shared memory
3. Programmazione adattiva e context-aware
4. Programmazione ad eventi ad alte prestazioni
5. Programmazione real-time
6. Programmazione di politiche di tolleranza ai guasti,
7. Ambienti e strumenti di sviluppo
8. Supporti a tempo di esecuzione
9. Studi di casi
Modalità di verifica: Prova scritta e orale - Esame a libera scelta dello studente (12 CFU)
Esame a libera scelta da sottoporre all'approvazione del Consiglio di Corso di Studio.
Modalità di verifica: Esame scritto e/o orale - Information Retrieval (6 CFU)
Studio, progetto e analisi di sistemi software efficienti ed efficaci per l’Information Retrieval nell’ambito di collezioni di documenti testuali (non strutturati), DB-centric (strutturati) o semi-strutturati (p.e. HTML, XML). Questo studio si concentrerà in particolare sui motori di ricerca per il Web, descrivendo in dettaglio tutti i loro componenti software principali e analizzando le prestazioni e i limiti computazionali delle soluzioni algoritmiche correntemente adottate per ciascuno di essi. Si introdurranno inoltre i fondamenti pratici e teorici per l’organizzazione e l’analisi dei sistemi di IR. Infine si analizzeranno alcune tecniche algoritmiche frequentemente utilizzate per la realizzazione di IR-tool che operano su grandi quantità di dati.
Syllabus
Motori di Ricerca
Crawling, Text analysis, Indexing, Ranking
Memorizzazione pagine Web e grafo dei collegamenti
Visualizzazione dei risultati
Altri tipi di dato: XML, DB testuali
Data processing for IR tools
Data streaming, sketching, compression
Data clustering (cenni)
Modalità di verifica: Prova scritta, progetto e orale - Metodi formali per la sicurezza (6 CFU)
Obiettivo: introduzione ad alcune nozioni e problemi relativi alla sicurezza delle applicazioni di rete e presentazione di alcuni formalismi e tecniche per affrontarli.
Introduzione alla sicurezza
Modelli per la sicurezza
Protocolli crittografici:
-descrizione formale
- proprietà di sicurezza
- tecniche di analisi statiche e dinamiche
Language-based security:
- problemi e proprietà
- formalismi, metodi e tecniche
- history-based security
- sicurezza dei servizi web e della loro orchestrazione
Modalità di verifica: Prova scritta e orale - Metodi per la verifica del software (6 CFU)
Obiettivi
Il corso si propone di introdurre e sperimentare la tecnica di verifica di correttezza di sistemi (software e hardware) chiamata Model Checking. Si svilupperanno i prerequisiti necessari e si approfondira' lo studio e l'utilizzo di metodi algoritmici (efficienti) per la verifica basati sul Model Checking. L'utilizzo di tecniche di Model Checking permette di verificare effettivamente la correttezza di classi significative di programmi superando i limiti delle soluzioni tradizionali basate su testing e simulazione.
Syllabus
Logica temporale.
Automi e parole infinite.
Algoritmi di verifica: le tecniche di base (linear time-branching time)
L'esplosione del numero degli stati: l Model Checking simbolico e la tecnica dell'astrazione
Strumenti e pacchetti.
Casi di studio
Modalità di verifica: Prova scritta e orale - Elaborazione di Segnali e Immagini (6 CFU)
L’obiettivo del corso è fornire allo studente la conoscenza dei metodi fondamentali di analisi di segnali, sia nel dominio del tempo sia in quello delle frequenze, e di elaborazione di immagini. Al termine del corso dovrà saper applicare concretamente i metodi appresi in diversi contesti e per diversi scopi. Per quanto riguarda i segnali unidimensionali, il corso è incentrato sulla Trasformata Discreta di Fourier. Per quanto riguarda le immagini, oltre alla Trasformata di Fourier bidimensionale, sono descritti metodi morfologici e metodi per la segmentazione.
Sillabus
Classificazione dei segnali. Segnali continui e discreti. Definizione di potenza e energia.
Convoluzione e correlazione di segnali continui e discreti. Applicazione di maschere a segnali discreti bidimensionali.
Trasformata Serie di Fourier e Trasformata Continua di Fourier per segnali continui.
Trasformata Discreta di Fourier e Trasformata Continua di Fourier per segnali discreti.
Teoremi di Parseval e di Wiener.
Teorema di Shannon ed errore di aliasing.
Sistemi lineari continui e discreti. Risposta all’impulso e risposta in frequenza.
Metodi morfologici per l’elaborazione di immagini.
Metodi per la segmentazione di immagini.
Modalità di verifica: Prova scritta e orale - Metodi per la specifica e verifica di processi di business (6 CFU)
Il corso si pone l'obiettivo di illustrare i concetti principali e le
problematiche inerenti la gestione di processi, intesi come flussi di
lavoro (workflow) costruiti componendo certe attivita' atomiche, e di
fornire una panoramica dei linguaggi, dei modelli concettuali e degli
strumenti automatici basati su essi, che possono essere usati per
affrontare le problematiche in maniera adeguata.
Per realizzare tale obiettivo, il corso si propone di conciliare le
tecniche di astrazione, con l'approccio strutturato e modulare e coi
modelli operazionali propri della ricerca scientifica in ambito
informatico, mostrando l'influenza esercitata dalle proprieta' di
interesse ai fini della analisi e della verifica automatica sulla
scelta dei linguaggi e modelli usati per la specifica e la
progettazione di processi.
Il percorso di apprendimento portera' gli studenti ad acquisire
dimestichezza con i termini tecnici dell'area, con i diversi modelli
per strutturare e comporre i processi in modo rigoroso, con le
proprieta' logiche che questi modelli possono essere richiesti
soddisfare e con le tecniche di analisi e verifica dei
processi. Inoltre potranno sperimentare i concetti visti con strumenti
automatici per progettare e analizzare processi.
Modalità di verifica: Progetto e prova orale - Data Mining: aspetti avanzati e casi di studio (6 CFU)
I formidabili progressi della potenza di calcolo, della capacità di acquisizione e memorizzazione dei dati e di connettività hanno creato quantità di dati senza precedenti. Il data mining, ovvero la scienza dell’estrazione di conoscenza da tali masse di dati, si è quindi affermato come ramo interdisciplinare dell’informatica.
Le tecniche di data mining sono state applicate a molti problemi in ambito industriale, scientifico e sociale, e si ritiene che avranno un impatto sempre più profondo sulla società. L’obiettivo del corso è quello di fornire:
- una rassegna delle tecniche avanzate per il mining delle nuove forme di dati;
- una rassegna delle principali aree applicative e di casi di studio paradigmatici
Mining di serie temporali e dati spazio-temporali
Mining di dati sequenziali, mining di grandi grafi e reti
Tecniche avanzate di associazione, correlazione and pattern frequenti
Tecniche avanzate di classificazione, clustering e outlier detection
Analitica visuale
Linguaggi, standard e architetture dei sistemi di data mining
Impatto sociale del data mining
Data mining e protezione della privacy
Applicazioni:
Grande distribuzione, Marketing, CRM
Industria delle telecomunicazioni,
Analisi finanziaria, analisi di rischio
Rilevamento di frodi
Pubblica amministrazione e sanità
Mobilità e trasporti
Modalità di verifica: Prova scritta, progetto e orale - Progettazione di interfacce e valutazione dell’usabilità (6 CFU)
Lo scopo del corso è di apprendere i concetti di base ed i metodi principali per progettare e valutare interfacce utenti, più in generale, applicazioni interattive, caratterizzate da usabilità ed accessibilità. Verranno considerati anche vari strumenti automatici in grado di supportare i metodi considerati. Alla fine del corso lo studente dovrebbe essere in grado di progettare e valutare autonomamente sistemi interattivi caratterizzati da buona usabilità.
Contenuti
Nella prima parte del corso si inizierà con esempi di interfacce difficili da usare, per introdurre i concetti e gli aspetti che si devono tenere presenti quando si progettano interfacce utenti. Poi, si passerà a vedere come usare questi concetti in concreto nella progettazione ed implementazione dei dialoghi e delle presentazioni forniti da applicazioni interattive, con esempi ed esercizi. Si fornirà particolare attenzione alla progettazione di ipermedia adattabili ed adattivi, siti web, interfacce per dispositivi mobili e telefoni cellulari. La seconda parte del corso verrà dedicata a come valutare l’usabilità di applicazioni interattive considerando vari metodi, da quelli basati su ispezione dell’interfaccia seguendo criteri predefiniti a quelli che si basano su informazioni empiriche, includendo tecniche remote, dove utenti e valutatori lavorano in siti e/o tempi differenti. Si finirà il corso considerando ambienti di interazione innovativi rispetto agli ambienti comuni basati su sistemi desktop.
Modalità di verifica: Progetto e orale - Basi di dati di supporto alle decisioni (6 CFU)
Ogni organizzazione utilizza i dati storici accumulati con il sistema informatico operazionale per produrre informazioni sintetiche adatte a facilitare i processi decisionali e renderli più veloci ed obiettivi. Il corso presenta i principali approcci al problema e le caratteristiche degli strumenti matematici e informatici utilizzati. Il corso presenta l’approccio che prevede l'utilizzo di particolari basi di dati, dette Data Warehouse, a partire dalle quali si procede con opportune interrogazioni per produrre interattivamente dati di sintesi. Si presentano anche i nuovi requisiti che questi problemi pongono alla tecnologia dei sistemi per basi di dati per rendere possibili analisi interattive rapide di grandi quantità di dati.
- Sistemi informativi e informatici nelle organizzazioni.
- I sistemi informatici direzionali basati su data warehouse.
- Modelli dei dati per data warehouse e metodi di analisi multidimensionale.
- Progettazione concettuale e logica di data warehouse.
- Algoritmi per la scelta delle viste da materializzare.
- La tecnologia dei sistemi per data warehouse: tipi di indici, ottimizzazione delle interrogazioni, progettazione fisica, riscrittura delle interrogazioni per l'uso di viste materializzate.
- Studio di casi.
Modalità di verifica: Prova scritta e orale - Apprendimento automatico: fondamenti (6 CFU)
Obiettivi
Gli obiettivi del corso sono di introdurre i principi e l'analisi critica dei principali paradigmi per l'apprendimento da insiemi di dati e sue applicazioni.
I concetti sono introdotti progressivamente dagli approcci più semplici fino ai modelli allo stato dell'arte nell'ambito dell’inquadramento concettuale generale e moderno del machine learning. Il corso si focalizza in particolare sull'analisi critica delle caratteristiche per la realizzazione e l'uso appropriato di algoritmi di apprendimento di funzioni da esempi e per la modellazione e valutazione sperimentale.
Syllabus
- Introduzione: Compiti computazionali nell'apprendimento predittivo e concetto di generalizzazione.
- Modelli e concetti di base: struttura dello spazio delle ipotesi, spazi discreti e continui, modelli lineari, nearest neighbor, modelli proposizionali, bias induttivo.
- Modelli Neurali: Perceptron e proprietà computazionali. Introduzione alle Reti Neurali multistrato feedforward: architetture e algoritmi di apprendimento.
- Modelli basati su regole.
- Principi dell'apprendimento ed aspetti pratici generali:
Validazione, Analisi Bias-Variance. Elementi di Statistical Learning Theory, VC-dimension. Comitati di modelli.
- Support Vector Machines: caso lineare, margine, caso non-lineare, modelli a Kernel.
- Modelli Bayesiani e Grafici.
- Unsupervised learning.
- Introduzione alle Applicazioni e modelli avanzati.
Modalità di verifica: Written + oral examination - Piattaforme abilitanti distribuite (6 CFU)
Il corso approfondisce e sviluppa, rispetto ai corsi fondamentali, lo studio delle problematiche legate alle piattaforme abilitanti distribuite, quali Grid e Cloud. Ciò avviene anche attraverso l'esame delle soluzioni allo stato dell'arte, l'analisi nel dettaglio della loro tecnologia e l'utilizzo pratico di alcune piattaforme abilitanti distribuite di ultima generazione. Syllabus Introduzione al middleware distribuito Approfondimento dei concetti e tecniche di grid computing Componenti e soluzioni per il grid computing Virtualizzazione delle risorse Tecnologie di virtualizzazione Approfondimento dei concetti e tecniche di cloud computing Esempi pratici di cloud computing Strumenti di sviluppo applicazioni per grid e cloud Struttura del corso 9 CFU distribuiti in due moduli.
Modalità di verifica: L'esame consiste in una prova orale sulle tematiche del corso, con discussione di un progetto realizzato dallo studente. - Servizi software (6 CFU)
• Obiettivi formativi: L’obiettivo del corso è introdurre gli aspetti principali della progettazione, analisi e realizzazione di servizi software.
Syllabus
• Standard di base dei servizi Web
• Progettazione, analisi e realizzazione di servizi software
o Individuazione, composizione e adattamento di servizi esistenti
o Utilizzo di linguaggi workflow per la definizione di processi aziendali (“business processes”)
o Analisi di processi aziendali
• Descrizioni estese di servizi
o Informazioni sulla qualità dei servizi
o Informazioni sul comportamento dei servizi
• Introduzione ai servizi cloud
Modalità di verifica: progetto e orale.
- Visual Analytics (6 CFU)