Uni-Logo
Algorithms and Complexity
 


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.

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:

Literature