Algorithms and Datastructures - Conditional Course
Winter Term 2025/26
Fabian Kuhn
Course Description
This lecture revolves around the design and analysis of algorithms. We will discuss the concepts and principles of a selection of the very basic but most commonly used algorithms and datastructures. Topics will include for example: Sorting, searching, hashing, search-trees, (priority-)queues and graphalgorithms (like shortest paths, spanning trees, breadth-first- and depth-first-searches).
Schedule
There will be a pre-recorded online lecture combined with an interactive exercise lesson. The interactive session takes places on Wednesdays 12:15 - 14:00 in room 106-04-007.
The recorded lectures and corresponding slides are available on a separate page. Slides & Recordings
Forum: Zulip
We will offer an instant messaging platform (Zulip) for all students to discuss all topics related to this lecture, where you are free to discuss among yourself or pose questions to us.
Most of the communication will happen over Zulip so it is highly recommended you sign up for Zulip and regularly check for updates. The Zulip channel for this course is called AD_conditional_WT25. If you are uncertain about anything feel free to just send a message to OÄŸuz Kuyucu, the TA for the course.
You must be either inside the eduroam network or be connected to the university network via a VPN to access the Link!
If there is trouble with signing up for Zulip, or anything that cannot be handled over Zulip, please contact the TA OÄŸuz Kuyucu, or alternatively the course supervisor Gustav Schmid
Exercises
There will be theoretical and programming exercises, designed to teach you the algorithms and methods discussed in the lecture. Actively participating in the exercises and working through the provided feedback is really the only way to prepare for the exam!
| Topic | Due (12 pm) | Exercise | Solution | |
| Introduction | 22.10. | exercise-00, | solution 00 | |
| Sorting | 29.10. | exercise-01, QuickSort.py | solution 01, QuickSort.py | |
| O-Notation | 05.11. | exercise02 | solution 02 | |
| Sorting 2 | 12.11. | exercise-03 BucketSort RadixSort Queue ListElement | solution03 BucketSort RadixSort | |
| Hashing 1 | 19.11. | exercise-04 | solution 04 | |
| Hashfunctions, Universal-Hashing | 26.11. | exercise-05 | solution 05 | |
| Search Trees | 03.12. | exercise-06 | solution 06 | |
| Red-Black Trees | 10.12. | exercise-07 | solution 07 | |
| DFS/BFS | 17.12 | exercise-08 | solution 08 | |
| Spanning Trees | 07.01 | exercise-09 TSP.py, AdjacencyMatrix.py, cities.txt | ||
| Shortest Paths | 14.01 | exercise-10 | ||
| Dynnamic programming | 21.01 | exercise-11 | ||
| Strings | 28.01 | exercise-12, StringMatching.py, input.txt, | ||
| Bonussheet | 04.02 | exercise-13, Heap.py | ||
Submission of Exercises
Handing in exercises is voluntary, but we highly recommend doing it. If you want feedback to your solutions, you must submit them by wednesday, 12 pm.
The submission is simply via Zulip: Send all relevant files as a private Message to the tutor: OÄŸuz Kuyucu
Programming exercises should be solved using Python and handed in as .py files.
Solutions to theoretical exercises can be written in Latex (preferred), Word (or similar text programs) or handwritten scans which must be well readable!
Exam
In the exam we expect students to go beyond the algorithms that they have seen in the lecture. Instead we will ask students to come up with algorithms for new problems and have the students give mathematical arguments why their algorithm is both correct and efficient. The only real way to learn this skill is to participate in the lectures and do the exercises.
We will update exact information about the exam here in this website once we know it. We will have a written exam!
- Type of exam: Written Exam
- Date: TBD
- Time and Room: TBD
- Duration: 120 Minutes
- Allowed Material: The exam will be written on paper and so you will need a non erasable pen. Additionally we allow 6 A4-pages of hand written notes. (either 3 sheets of A4 paper with text on both sides, or 6 sheets of A4 paper with text only on a single side). We do not allow any form of electronic devices (so no calculator).
The above info is subject to change, so please check back here a few weeks before the actual exam.
Past Exams
Here is a collection of past exams (or the start of it until i get around to doing more). Some of these were automatically translated with some amount of proofreading, so if there are any errors, or sentences that don't make sense, please notify us so we can update them.
exam_spring_2025.pdf (with solutions)
Background
To follow this course students need some experience programming with python, as well as some knowledge about mathematical proofs. The following resources might be helpful if you feel like you do not satisfy these prerequisites.- Video introduction to mathematical proofs.
- The Oxford Introduction to University Mathematics Course has some great Lecture Notes (a bit further down the page)
- University of Helsinki's Introduction to Programming Course
Literature
- Introduction to Algorithms (3rd edition); T. Cormen, C. Leiserson, R. Rivest, C. Stein; MIT Press, 2009
- Algorithms and Data Structures; K. Mehlhorn und P. Sanders; Springer, 2008, available online
- Lectures on MIT Courseware:
Introduction to Algorithms 2005 und Introduction to Algorithms 2011
