Algorithm Theory
Graduate Course - Winter Term 2022/23
Fabian Kuhn
Course Description
The design and analysis of algorithms is fundamental to computer science. In this course, we will study efficient algorithms for a variety of basic problems and, more generally, investigate advanced design and analysis techniques. Central topics are algorithms and data structures that go beyond what has been considered in the undergraduate course Algorithms and Datastructures. Basic algorithms and data structures knowledge, comparable to what is done in Algorithms and Datastructures is therefore assumed. The topics of the course include (but are not limited to):
- Divide and conquer: geometrical divide and conquer, fast fourier transformation
- Randomization: median, randomized quicksort, probabilistic primality testing
- Amortized analysis: Fibonacci heaps, union-find data structures
- Greedy algorithms: minimum spanning trees, scheduling, matroids
- Dynamic programming: matrix chain product problem, edit distance, longest common subsequence problem
- Graph algorithms: network flows, combinatorial optimization problems on graphs
Exam Information
- Review: 04.10.23, 3:00 pm in room 00-015, building 106.
- Repeat-Exam: 18.08.2023, 2pm, Building 101 Room 00-026.
- Review: 09.05.22, 4:00 pm in room 00-007, building 106.
- Date and time. 22.03.2023, 9:00 - 11:00 am (2 hours). Please arrive by 8:45 am.
- Mode. The exam will be written.
- Location. Building 101 Room 00-026 & HS 00-036. Enter only after the student ID has been checked at the entrance.
- Allowed material. 6 A4 pages (corresponds to 3 double-sided A4 sheets) of handwritten notes.
- Preparation. Old exams are available further below. We may also offer an exam Q&A session to discuss previous exam tasks. We will update you on this soon. On Zulip you can make suggestions which exam tasks we should cover.
Schedule
Lectures: Tuesdays, 16:15 - 18:00, 101-00-026
Besides the lecture on Tuesday, we provide the lecture recordings from winter term 2021/2022.
Important note:
The recordings can only be accessed from within the university network. This can be done by establishing a VPN tunnel to the university network.
Exercise Tutorials: Thursdays, 14:15 - 16:00, 101-00-026
Exercises: There will be an exercise sheet every week which you should work on at home. We accept and also recommend to submit the exercise sheets in groups of at most four people. The exercises will be published every Tuesday. They are due one week later (on Wednesday 11:59 pm).
Forum
Instant Messenger: 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. Please consider the section below on technical information.
Exercises
Format: All submissions must be in, or converted to pdf format and be written in English. We strongly recommend to prepare your solutions with Latex for best readability (being able to work with latex is a good skill to have anyway). Solutions prepared with Word or similar text editors are ok. Scans or photos of handwritten solutions in pdf format are ok as well, but must be well readable!
Submission Guidelines: The exercises will be conducted online with the course management system Daphne. The solution of each exercise must be uploaded to your SVN repository each one in a separate folder named exercise-XY, where XY is the exercise number (with a leading 0 if that number is smaller than 10). More on the submission via SVN in the technical information section.
Team Submission: Teams will be allowed. We recommend to build teams of three members. Teams may consist of at most four members. In case you submit your solution as part of a team, each team member must still submit a copy of the solution pdf to their respective SVN-repository (c.f. technical information). The members of the teams must be clearly marked on the top of the solution pdf.
Exercise sheet | Assigned | Due | Solution | |
Exercise 01 (O-Notation, Divide & Conquer) | 18.10. | 26.10. | Solution 01 | |
Exercise 02 (FFT) | 26.10. | 09.11. | Solution 02 | |
Exercise 03 (Greedy Algorithms) | 09.11. | 16.11. | Solution 03 | |
Exercise 04 (Dynamic Programming) | 16.11. | 23.11. | Solution 04 | |
Exercise 05 (Amortized Analysis, Union Find) | 15.11. | 23.11. | Solution 05 | |
Exercise 06 (Fibonacci Heaps) | 30.11. | 07.12. | ||
Exercise 07 (Maximum Flow) | 07.12. | 14.12. | Solution 07 | |
Exercise 08 (Maximum Flow 2) | 14.12. | 21.12. | Solution 08 | |
Exercise 09 (updated) (Matchings and Flows) | 21.12. | 11.01. | Solution 09 | |
Exercise 10 (Matching and Randomization) | 10.01. | 18.01. | Solution 10 | |
Exercise 11 (Randomization II) | 18.01. | 25.01. | Solution 11 | |
Exercise 12 (RandomizationIII) | 25.01. | 01.02. | Solution 12 | |
Exercise 13 (Approximation Algorithms) | 01.02. | 08.02. | Solution 13 (updated) | |
Exercise 14 (Online Algorithms) | 08.02. | 15.02. | Solution 14 |
Technical Information
Zulip: The Zulip data is available here.
Important note:
This website can only be accessed from within the university network. This can be done by establishing a VPN tunnel to the university network.
An introduction to Zulip is given here: Getting Started (in particular, note that Zulip supports Latex)
Daphne: The exercises are submitted via Daphne. Please use this link to register for the Algorithm Theory course with your rz-account. On Daphne, an overview of the points you achieved so far is given. Exercises are also published there.
Subversion (SVN): After registration, a SVN repository will be created for you with an URL of the following form:
https://daphne.informatik.uni-freiburg.de/ws2122/AlgoTheo/svn/your-rz-account-name
You should do a "checkout" of your SVN-repository (using the URL described above) to get a local copy on your pc. With the command "update" you synchronize your local copy with the current version on the server. Through the command "commit" you upload your local files to your repository on the server. A more detailed overview can be found here. There are different subversion clients you can use. For Windows Tortoise-SVN is recommended.
Note that every solution of an exercise sheet must be uploaded ("committet") to a separate folder named exercise-XY, where XY is the exercise number (with a leading 0 if smaller than 10). This folder will be automatically locked (that is, no commits are possible anymore) after the submission deadline on the following Tuesday at 4 pm sharp!
Past Exams
- Algorithm Theory Exam Fall 2022
- Algorithm Theory Exam Spring 2022
- Algorithm Theory Exam Fall 2021
- Algorithm Theory Exam Spring 2021
- Algorithm Theory Exam Fall 2020
- Algorithm Theory Exam Spring 2020
- Algorithm Theory Exam Fall 2019
- Algorithm Theory Exam Spring 2019
- Algorithm Theory Exam Fall 2018
- Algorithm Theory Exam Spring 2018
- Algorithm Theory Exam Spring 2017
- Algorithm Theory Exam Fall 2016
- Algorithm Theory Exam Spring 2016
- Algorithm Theory Exam Fall 2015
- Algorithm Theory Exam Spring 2015
- Algorithm Theory Exam Fall 2014
- Algorithm Theory Exam Spring 2014
- Algorithm Theory Exam Fall 2013
- Algorithm Theory Exam Spring 2013
Literature
- Jon Kleinberg and Éva Tardos: Algorithm Design, Addison Wesley
- Thomas H. Cormen, Charles E. Leiserson, Robert L. Rivest, and Cliford Stein: Introduction to Algorithms, MIT Press
- Thomas Ottmann and Peter Widmayer: Algorithmen und Datenstrukturen, Spektrum Akademischer Verlag