Algorithm Engineering and Data Structures
Professors
Prerequisites:
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.
Pedagogical objectives:
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.
Evaluation modalities:
Written exam
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)
Paolo Ferragina, Pearls of Algorithm Engineering, Cambridge University Press, 2023. https://www.cambridge.org/core/books/pearls-of-algorithm-engineering/95061352D7263CCCBD4F243018236EB2
Devices:
- Laboratory-Based Course Structure
- Open-Source Software Requirements