Algorithm Engineering and Data Structures
Description
The design and analysis of advanced algorithms and data structures will involve basic data types (such as integers, strings, trees, and graphs) and several models of computation - such as RAM, 2-level memory, cache-oblivious, streaming - in order to take into account the architectural features and the memory hierarchy of modern PCs and the availability of Big Data upon which those algorithms could work on. Engineering considerations spurring from the implementation of the proposed algorithms and from experiments published in the literature will be also discussed.
Topics:
- Sorting and Permuting atomic items in a disk-based setting: Multi-way mergesort, multi-way quicksort
- Sorting strings: Multi-key quicksort, LSD-radix sort, MSD-radix sort
- Randomised sampling in a streaming scenario
- Hashing: universal, perfect, minimal ordered and perfect, Bloom filters
- Randomized data structures: Treaps and skip lists
- String data structures: Tries, Ternary search trees, Patricia Tries, Suffix arrays and suffix trees
- Prefix- and substring-based searches over textual collections
- Data compression: Integer codes, Elias-Fano coding, Canonical Huffman coding, Arithmetic coding, Lempel-Ziv parsing (gzip), Burrows-Wheeler Transform (bzip)
Finalité
The goal of the course is to teach students how to design and analyze advanced algorithms and data structures for the efficient solution of combinatorial problems involving high volumes of basic data types, such as integers, strings, trees, and graphs.
Description des modalités d'évaluation
Written exam
Public
Basic algorithms and data structures, Programming, Basic algebra and probability.
- Nombre d’ECTS
- 6
- Modalité(s) d'évaluation
- Examen final
- Date de début de validité
- Date de fin de validité
- Déployabilité
- Offre non déployable dans le réseau