PhD Courses

I organize PhD-level reading courses in algorithms and data structures for large-scale data, with an emphasis on bioinformatics and sequence analysis. Each course is worth 7.5 ECTS and runs at 25% pace with weekly meetings, where participants take turns giving lecture-style presentations of the reading material. If you are interested in participating in a future course, feel free to get in touch.

Algorithmic Engineering

PhD reading course7.5 ECTS25% paceVT 2026 (Spring 2026)

The Random Access Machine (RAM) model assumes every memory access takes O(1) time, which breaks down once data sets exceed main memory and data transfer to and from slower storage dominates the runtime. This course studies classical algorithmic problems through the External Memory (EM) model, where efficiency is measured in I/O operations rather than CPU steps, and covers algorithm engineering techniques that bridge the gap between asymptotic theory and real-world performance on large-scale data. Topics include random sampling, list ranking, sorting atomic items and strings, set intersection, hashing (universal, perfect, cuckoo, MPHFs, Bloom filters), string search by prefix and substring (tries, suffix arrays and trees), integer and statistical coding, dictionary-based compression, block sorting (Burrows-Wheeler), and compressed representations of binary arrays, trees and graphs.

Literature: Ferragina, P. (2023). Pearls of Algorithm Engineering, Cambridge University Press; and Vitter, J.S. (2001). "External Memory Algorithms and Data Structures: Dealing with Massive Data", ACM Computing Surveys 33(2):209–271.

Genome-Scale Algorithm Design

PhD reading course7.5 ECTS25% paceHT 2026 – VT 2027

Combinatorial algorithms and discrete data structures are put to the test by genomic data, which routinely reaches gigabytes to terabytes in scale. This reading course covers advanced algorithms and data structures that form the foundation of modern bioinformatics: suffix trees and wavelet trees, succinct and compressed data structures, and graph-based approaches to sequence alignment, genome assembly, and pangenomics. We study both the theoretical guarantees behind these algorithms and the engineering techniques needed to make them work on real-world genomic data, connecting core ideas in string matching, graph algorithms, and space-efficient data structures to high-throughput sequencing problems such as read alignment, variant calling, and genome assembly.

Literature: Mäkinen V, Belazzougui D, Cunial F, Tomescu AI. Genome-Scale Algorithm Design: Bioinformatics in the Era of High-Throughput Sequencing, 2nd ed. Cambridge University Press, 2023.