ADVANCED COMPUTER SCIENCE - MOD. 1

Anno accademico
2024/2025 Programmi anni precedenti
Titolo corso in inglese
ADVANCED COMPUTER SCIENCE - MOD. 1
Codice insegnamento
CM0604 (AF:509706 AR:286757)
Modalità
In presenza
Crediti formativi universitari
6 su 12 di ADVANCED COMPUTER SCIENCE
Livello laurea
Laurea magistrale (DM270)
Settore scientifico disciplinare
ING-INF/05
Periodo
II Semestre
Anno corso
1
Sede
VENEZIA
Spazio Moodle
Link allo spazio del corso
L'obiettivo dell'insegnamento è di dare allo studente le conoscenze necessarie per la progettazione e lo sviluppo di algoritmi di analisi di grandi volumi di dati in ambienti altamente paralleli (multi-core) e distribuiti (cluster). Alcuni casi di studio verranno scelti tra temi quali data mining, web search, e social network analysis.
Il corso illustra le tecniche impiegate per risolvere problemi di analisi su grandi volumi di dati con algoritmi paralleli.
Gli studenti acquisiscono conoscenze sulle architetture di calcolo parallelo, sui paradigmi e sugli ambienti di programmazione parallela, e sulla progettazione di algoritmi per dataset massivi.

Gli studenti raggiungeranno i seguenti risultati di apprendimento:

i) Conoscenza e comprensione: comprensione dei concetti base del multi-threading e del calcolo distribuito; comprensione dei costi di un programma di analisi di dataset massivi parallelo e non (cache, memory) e loro modellazione; comprensione dei pattern di progettazione di algoritmi per dataset massivi.

ii) Capacità di applicare conoscenza e comprensione: capacità di progettare e sviluppare algoritmi per dataset massivi; capacità di stimare e misurare la performance di un algoritmo parallelo; capacità di sviluppare algoritmi per dataset massivi tramite l'uso dei pattern di programmazione parallela.

iii) Capacità di giudizio: capacità di analizzare e confrontare differenti metodi o algoritmi e di scegliere la più appropriata ad un dato problema sulla base di un modello di costo

iv) Abilità comunicative: saper esporre in maniera chiara e corretta i risultati sperimentali di una analisi comparativa tra differenti soluzioni e algoritmi.

v) Capacità di apprendimento: saper utilizzare in autonomia nuove tecniche e strumenti.
Lo studente deve possedere una buona conoscenza di architettura degli elaboratori, algoritmi, programmazione C/C++/Python, sistemi operativi. Un breve tutorial C++ per ha già conoscenze di Python è disponibile alla pagina https://runestone.academy/ns/books/published/cpp4python/index.html .
- Cache-Aware and cache-oblivious Algorithms
- Thread Parallelism
- Large-scale parallelism
- Recommender systems
- Learning to Rank
- Link Analysis
- Advertising on the Web
Note del docente.

Jure Leskovec, Anand Rajaraman, Jeffrey David Ullman. Mining of Massive Datasets 3rd Edition. Cambridge University Press 2020.
La verifica dell'apprendimento avviene tramite una prova scritta e la discussione orale di tre assignments laboratoriali.

La prova scritta consiste in domande di carattere teorico e brevi esercizi di carattere pratico. La prova scritta valuta il raggiungimento dei risultati di apprendimento i) ii) e iii).

Ciascun assignments richiede di sviluppare un algoritmo per uno specifico problema di analysis di dataset massivi. Lo studente deve scegliere e motivare la soluzione secondo lui più opportuna e consegnare un report che verrà discusso con il docente.
Gli assignments valutano il raggiungimento dei risultati di apprendimento iii) iv) e v).

La gradazione del voto è data da 70% prova scritta e 30% assignments.
Lezioni teoriche e casi di studio.
Inglese
scritto e orale
Programma definitivo.
Data ultima modifica programma: 21/02/2024