Algoritmi per Big Data

Il materiale didattico del corso è disponibile alla pagina:

https://uniroma3.gitlab.io/compunet/gd/abd

Per svolgere l'esame e ricevere comunicazioni dai docenti è necessario iscriversi alla pagina Moodle del corso:

https://ingegneria.el.uniroma3.it/course/view.php?id=1374

Obiettivi:

Questo corso ha l’obiettivo di fornire agli studenti strumenti metodologici nati nell’ambito della ricerca sugli algoritmi per Big Data. I contributi del corso sono tutti pensati per scalare in ambiente distribuito e/o per utilizzare una memoria (Volume) limitata. L’aspetto di efficienza (Velocity) è pervasivo in tutto il corso.  Una parte sarà dedicata all’integrità dei dati (Veracity). Il corso può essere seguito senza seguire il corso Big Data e viceversa. Inoltre, visto che tra i due corsi non ci sono sovrapposizioni, è assolutamente possibile seguirli entrambi.

Programma (provvisorio):

  • Elaborazione dei dati in modalità streaming: approximate counting, sampling e reservoir sampling, bloom filters, frequent itemsets, number of distinct elements

  • Multidimensional queries: parallelizzazione, spatial/non-spatial partitioning, orthogonal range searching/counting, closest pair, kD-trees, range trees, layered trees, fractional cascading.

  • Community detection in grafi sociali: componenti (bi)connesse, maximal clique, k-cores, k-plexes; algoritmi per il loro calcolo in ambiente distribuito.

  • DB-Trees: efficient aggregate range queries on any DBMS

  • Scalability and Big Data: P2P systems, Distributed Hash Tables and Chord, chord-like design in NoSQL DBMSes. 
    Big data integrity: threat model for the cloud, non-scalability of traditional authenticated data structures, scaling with a  pipelining approach. Blockchain and Big Data: the scalability trilemma.