Implementation of Algorithms and Data Structures (NTIN106)
Winter semester 2026/27
Overview
In this course we discuss how to implement advanced algorithms and data structures without tedious debugging. We practically use these methods on four algorithms or data structures.
The course will be taught in English or Czech depending on students’ preferences.
Schedule
| Day | Time | Room |
|---|---|---|
| Wednesday | 17:20 | S11 |
Conditions to pass the course
Students are expected to write tests for three small assignments and then implement one advanced algorithm and one data structure.
Example topics:
- Consistency of an AVL tree
- Correctness of a solution for the shortest path problem
- Feasibility of a solution for a routing problem
- Red-black trees
- Goldberg’s algorithm for the network flow problem
Advanced students can also try to implement the Blossom algorithm for the maximal matching problem in general graphs.
All students are asked to:
- enroll into my group in ReCodEx for homework submissions, and
- create a private fork of the git repository and give me (login
finkj1am) access (role reporter).
Seminars
Literature
- M. Mareš, T. Valla. Průvodce labyrintem algoritmů. CZ.NIC, 2017.
- W. J. Cook, W. H. Cunningham, W. R. Pulleyblank, A. Schrijver. Combinatorial Optimization. John Wiley & Sons, 1997.
- T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. Introduction to Algorithms. MIT Press, 2001 — chapter on network flows.
- R. Sedgewick. Left-leaning Red-Black Trees. doi:10.1.1.139.282
- P. Ammann, J. Offutt. Introduction to Software Testing. Cambridge University Press, 2016.
Prerequisites
Advanced students of this course may benefit from attending it together with Data Structures I, which recommends this course to students who spend a lot of time debugging their programs.