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.

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