ADVANCED COMPUTER SCIENCE - MOD. 2
- Anno accademico
- 2022/2023 Programmi anni precedenti
- Titolo corso in inglese
- ADVANCED COMPUTER SCIENCE - MOD. 2
- Codice insegnamento
- CM0604 (AF:384908 AR:214338)
- Lingua di insegnamento
- Inglese
- 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
Inquadramento dell'insegnamento nel percorso del corso di studio
Risultati di apprendimento attesi
1. Conoscenza e comprensione:
Al termine del corso lo studente conoscerà le principali tecniche di sketching, streaming e strutture dati compresse.
2. Capacità di applicare conoscenza e comprensione:
Al termine del corso lo studente sarà in grado di applicare le tecniche algoritmiche apprese (sketching, streaming, strutture compresse) per risolvere problemi tipici di analisi e manipolazione di dati massivi.
3. Capacità di giudizio:
Al termine del corso lo studente sarà in grado di utilizzare le conoscenze acquisite per:
- Identificare l'algoritmo e la struttura dati più adatta a risolvere una determinata problematica nell'ambito dei massive data.
- Analizzare in modo rigoroso le performance di algoritmi randomizzati (runtime, approssimazione, probabilità di successo).
- Leggere e comprendere in modo indipendente articoli di ricerca nel settore.
- Implementare algoritmi esistenti e progettarne di nuovi.
Prerequisiti
- Algoritmi e strutture dati (complessità asintotica, strutture dati di base)
- Matematica discreta (aritmetica modulare)
Contenuti
- Teoria delle probabilità (Valore atteso, varianza, variabili casuali, disuguaglianze di Markov, Chebyshev, Chernoff)
- Hashing (universal, tabelle hash)
Parte II: Sketching
- Shingling
- Rabin hashing (identità)
- MinHash (distanza di Jaccard), permutazioni Min-wise
- SimHash (distanza Coseno)
- sketching per distanze di Hamming / Euclidea
- Locality-sensitive hashing (LSH), nearest neighbor search, altre applicazioni
- Bloom filters, Count-min sketch
Parte III: algoritmi su streams
- Il modello stream
- Pattern matching (Algoritmi di Karp-Rabin e Porat-Porat)
- Algoritmo di Morris (conteggio con piccoli registri)
- Algoritmo idealizzato di Flajolet-Martin
- Algoritmo Bottom-k
- La famiglia di algoritmi LogLog
- lower bounds
- Stima di momenti (AMS, tug-of-war, heavy hitters)
- Algoritmo di Datar-Gionis-Indyk-Motwani algorithm (conteggio di eventi in una finestra)
Parte IV: Strutture dati compresse
- Entropia, compressione dati
- bitvector
- wavelet trees
- Suffix array compresso
- FM-index
- Compressione di dati strutturati (grafi)
Testi di riferimento
- Dispense del docente: https://arxiv.org/abs/2301.00754
- Chakrabarti, Amit, 2020. Data stream algorithms - lecture notes: https://www.cs.dartmouth.edu/~ac/Teach/data-streams-lecnotes.pdf
- Navarro, Gonzalo, 2016. Compact data structures: a practical approach. Cambridge University Press.
- slides del docente e articoli originali di ricerca