Algorithms and Datastructures - Conditional Course
Winter Term 2026/27
Fabian Kuhn
Course Description
This course revolves around the design and analysis of algorithms. We will discuss the concepts and principles behind some of the most commonly used basic algorithms and data structures. Topics include:
- Sorting and searching
- Asymptotic analysis and O-notation
- Hashing and search trees
- Queues and priority queues
- Graph algorithms, including breadth-first and depth-first search, spanning trees, and shortest paths
- Dynamic programming and string algorithms
Teaching Staff
Teaching assistant: Gustav Schmid. Questions about the course can be discussed in the Zulip forum linked below.
Schedule
There will be prerecorded online lectures combined with a weekly interactive exercise session on Wednesdays, 12:00–14:00, in room 101-00-017/19. The introductory session takes place on 21 October 2026. Please watch Sorting I before the session on 28 October 2026.
There are no sessions during the university Christmas break, 24 December 2026–6 January 2027; sessions resume on 13 January 2027.
Course Material
The Slides and Recordings page for Winter Term 2026/27 lists the recordings to watch before each exercise session.
Forum: Zulip
We offer a Zulip forum for students to discuss the course material with one another and ask questions. Most course communication will take place there, so we recommend checking the forum regularly.
You must be connected to the university network (for example, via eduroam) or use the university VPN to access the Zulip invitation link.
Exercises
There will be theoretical and programming exercises covering the algorithms and methods discussed in the lectures. Working on the exercises and using the feedback from the exercise sessions is an important part of preparing for the exam.
All 13 exercise sheets below are available in English. The deadlines are listed in the table below. Each ZIP contains the exercise PDF and any starter files needed for that sheet. Download all 13 exercise sheets in one PDF.
| Sheet | Topic | Due (12:00) | Exercise and starter files | Solution |
|---|---|---|---|---|
| 01 | Sorting and introductory tasks | 28.10.2026 | PDF · ZIP | To be announced |
| 02 | Running times and O-notation | 04.11.2026 | PDF · ZIP | To be announced |
| 03 | Bucket Sort and Radix Sort | 11.11.2026 | PDF · ZIP | To be announced |
| 04 | Partitioning, square roots, exponentiation | 18.11.2026 | PDF · ZIP | To be announced |
| 05 | Hashing | 25.11.2026 | PDF · ZIP | To be announced |
| 06 | Binary search trees | 02.12.2026 | PDF · ZIP | To be announced |
| 07 | AVL trees | 09.12.2026 | PDF · ZIP | To be announced |
| 08 | DFS and BFS | 16.12.2026 | PDF · ZIP | To be announced |
| 09 | Topological sorting and spanning trees | 23.12.2026 | PDF · ZIP | To be announced |
| 10 | Shortest paths | 13.01.2027 | PDF · ZIP | To be announced |
| 11 | Dynamic programming | 20.01.2027 | PDF · ZIP | To be announced |
| 12 | String matching | 27.01.2027 | PDF · ZIP | To be announced |
| 13 | Review and bonus exercises | 03.02.2027 | PDF · ZIP | To be announced |
Sample solutions will be added here during the semester.
Submission of Exercises
Handing in exercise solutions is voluntary, but we recommend doing so to receive feedback. The deadlines are Wednesdays at 12:00, as listed above. Send your solutions as file attachments in Zulip chat to your teaching assistant, Gustav Schmid.
Programming exercises should be solved in Python and submitted as
.py files. Solutions to theoretical exercises can be
prepared in LaTeX, Markdown with LaTeX equations, or as clearly
readable scans of handwritten work.
Exam
The exam will test the ability to design algorithms for new problems and give mathematical arguments showing that they are correct and efficient. Participating in the lectures and working on the exercises will help develop these skills.
The exam date, time, room, format, duration, and permitted material will be announced during the semester.
Past Exams
The following exams from previous offerings are available for practice. Some older papers have been translated; please let us know if a question is unclear or contains an error.
- Exam August 2026 · With sample solutions (PDF)
- Exam Spring 2026
- Exam Fall 2025
- Exam Spring 2025 (with solutions)
- Exam Fall 2024
- Exam Fall 2022
- Exam Spring 2022
- Exam Fall 2020
- Exam Spring 2020
Background
Students should have some experience programming in Python and some knowledge of mathematical proofs. The following resources from previous offerings may help with these prerequisites:
- Video introduction to mathematical proofs
- Oxford Introduction to University Mathematics Course
- University of Helsinki Introduction to Programming Course (2025)
Literature
- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein: Introduction to Algorithms, 3rd edition, MIT Press, 2009.
- Kurt Mehlhorn and Peter Sanders: Algorithms and Data Structures, Springer, 2008, available online.
- Lectures on MIT OpenCourseWare: Introduction to Algorithms 2005 and Introduction to Algorithms 2011.
