- Teacher: MARTELLI CRISTINA
- Teacher: BOREALE MICHELE
La
prima parte introdurrà i principali metodi per definire la semantica
denotazionale e operazionale di linguaggi sequenziali, la seconda
introdurrà alcuni formalismi per specificare, progettare e implementare
sistemi concorrenti e distribuiti, e per analizzare e verificare loro
proprietà.
Programma - Richiami di programmazione
sequenziale e concorrente, di matematica discreta e di tecniche di
prova. Automi a stati finiti e sistemi di transizione etichettati.
Semantica operazionale e denotazionale dei linguaggi di programmazione.
Algebre e calcoli di processo e loro modelli come sistemi di
transizione. Equivalenze comportamentali come strumenti di astrazione e
minimizzazione di sistemi e come base per prove di correttezza. Logiche
modali e logiche temporali, e tecniche di verifica di proprietà dei
sistemi basate sul model checking.
Obiettivi Formativi -
Lo studente imparerà a comprendere la semantica dei linguaggi di
programmazione e a progettare e realizzare semplici sistemi concorrenti.
Lo studente acquisirà le competenze necessarie a utilizzare metodi
formali per la validazione di sistemi informatici, possibilmente anche
attraverso strumenti software di supporto, ed acquisirà le basi per
l'ulteriore studio e la ricerca su teoria dei sistemi distribuiti, dei
sistemi real-time e dei sistemi fault-tolerant.
- Teacher: PUGLIESE ROSARIO
- Teacher: BONDAVALLI ANDREA
- Teacher: CECCARELLI ANDREA
- Teacher: LOLLINI PAOLO
Contenuto del corso
Obbiettivi Formativi
L'obiettivo del corso è quello di fornire allo studente le basi per lo sviluppo di algoritmi per architetture di calcolo emergenti per l'analisi di grandi volumi di dati (Web, social networks, ...).
Competenze acquisite: Processori multi-core, processori GPU, architetture distribuite, hadoop Mapreduce.
Capacità acquisite (al termine del corso): Al termine del corso lo studente sarà in possesso delle tecniche di progettazione ed analisi di algoritmi paralleli e distribuiti per l'analisi di grandi volumi di dati.
Programma del corso
- Teacher: LUCCHESE CLAUDIO
- Teacher: LORETI MICHELE
Obiettivi formativi
- Il corso intende fornire agli studenti una descrizione completa delle
principali tecniche utilizzate nella progettazione e nell'analisi degli
algoritmi e delle strutture dati. Il corso si focalizza soprattutto
sull'analisi del caso medio, sebbene le tecniche matematiche illustrate
siano le stesse utilizzate anche nell'analisi del caso peggiore, ed è
integrato con la presentazione di un sistema di manipolazione simbolica
che viene utilizzato come strumento per l'approfondimento e la verifica
degli argomenti trattati.
Programma - Algoritmi
greedy. Programmazione dinamica. Divide et impera. Algoritmi su grafi. Algoritmi probabilistici. Analisi degli
algoritmi e complessità computazionale. Numeri speciali. Relazioni di
ricorrenza. Funzioni generatrici. L'inversione di Lagrange. Il metodo
simbolico. Espressioni regolari e grammatiche context-free: la
metodologia di Chomsky-Schutzenberger. Simulazione di algoritmi e
strutture dati e relativi test statistici.
- Teacher: MERLINI DONATELLA
- Teacher: VERRI MARIA CECILIA
Il corso intende far riflettere sulle problematiche che si presentano nella costruzione e nell'uso di interfacce e vuol fornire gli strumenti per una loro valutazione. In particolare, vuole presentare agli studenti informatici, gli aspetti di progettazione e uso di interfacce legati ad altre discipline (dalla psicologia cognitiva, all'ergonomia, alla sociologia, alla linguistica) in modo tale che siano consapevoli e sensibili alle richieste che possono venire da altre figure professionali e siano in grado di comprenderle. Inoltre intende presentare le problematiche legate all'accessibilità degli strumenti informatici da parte di soggetti con disabilità fisiche e/o tecnologiche.
- Teacher: VERRI MARIA CECILIA