Registration for this course is open until Monday, 04.05.2026 23:59.

News

Currently, no news are available

Algorithms and Data Structures

The course will cover some basic and advanced data structures & algorithms along with their performance analysis. Examples of data structures are cuckoo hashing, splay trees, randomized search trees, and union-find structures. In terms of problem domains, we will cover polynomials, graphs, strings, and geometry. Furthermore, we will discuss algorithm analysis techniques such as amortization and randomization, and general algorithm design principles.

Time & Date & Format

Lectures:

  • Mondays:   E2.5 Math lecture hall 1                 from 16:00 -- 18:00 (c.t.)
  • Thursdays: E2.2 Günther-Hotz lecture hall     from 16:00 -- 18:00 (c.t.)

Tutorials:

  • Online Wednesday: See                                      from 14:00 -- 16:00 (c.t.)
  • Offline Wednesday: E1.4 MPI-Inf Room 024   from 16:00 -- 18:00 (c.t.)
  • Offline Fridays:         E1.3 Room SR016             from 10:00 -- 12:00 (c.t.)
  • Offline Fridays:         E1.3 Room SR016             from 14:00 -- 16:00 (c.t.)

Prerequisites

The course requires basic knowledge in algorithms and data structures as covered, for example, by the introductory course "Introduction to Algorithms and Data Structures". In particular, you should be familiar with correctness proofs of algorithms. Specific concepts that you should have basic familiarity with and should be able to apply include:

  • pseudocode notation
  • O-notation, running time analysis
  • binary search
  • basic sorting algorithms (e.g., mergesort)
  • arrays, linked lists
  • stacks, queues
  • heaps/priority queues
  • binary search trees, balanced binary search trees (e.g., AVL trees)
  • definition of a graph
  • graph traversal (e.g., depth-first search/breadth-first search)

 

Registration

For participation in this course, you must also register on this website, and this must happen by Monday, May 4th.

Assignment Sheets

We will distribute an assignment sheet each Monday. Each assignment consists of graded exercises and ungraded exercises.

The graded exercises are further divided into solo exercises and group exercises. Please complete the solo exercises independently, without help from others. You are allowed to solve the group exercises in groups of up to three students. However, make sure that each member of your group understands the solution to each exercise. Turning in copied solutions is to nobody's gain. After all, in the end, to pass the course, you will need to write an exam without your friends or tools from the internet helping you.

Your solutions are to be uploaded as a PDF to this course website. The submission deadline is Monday before the lecture. Each person has to upload one file for their solo exercise solutions, and each group has to upload a separate file for their group exercise solutions (please upload for the group submission even if your group only has a single member, i.e., you are doing the group exercises on your own). Do not upload any solution for the ungraded exercises. Instead, you should ask about them during the tutorial session.

For submission, you can produce a PDF by writing in LaTeX, writing in a common word processor like Word, or by taking a scan or a photo of your handwritten solution (if you take a photo, take special care that the PDF is readable).

The solutions to these exercises are presented in the tutorial. To be more specific, we will discuss the solution to the ungraded exercises before the submission deadline and the solution to the graded exercises after the submission deadline.

To be admitted to the (re)-exam, you need at least 50% of the total number of graded points (excluding bonus points).

AI and LLM policy

(Borrowed from https://cms.sic.saarland/ti2526/)

First of all, we need to differentiate between

  1. Using ChatGPT to study and understand the concepts and
  2. Using ChatGPT to solve the exercises given to you
Example for case 1:
"Explain to me the difference between a DFS and an BFS intuitively. Add some examples."
Example for case 2:
"Solve the following exercise: [...]"

Case 1 is obviously allowed and does not require any special indication. It is a perfectly valid way to learn, not much different from doing regular research on the internet. Therefore, in what follows, we will mainly concern ourselves with case 2.

Case 2 means that you have used an external source for (a part of) a solution. You should clearly indicate what source you used for what part of the solution on the same submission (same PDF file) as the task.

If you do not state your source, it will count as plagiarism.

If you state your source, it will not be plagiarism. We will grade the solution, but upon the first (no matter how small) mistake, we will stop the grading and award that particular exercise 0 points. We will also not put in extra effort to give detailed feedback (why would we be giving feedback to ChatGPT?)

Note that while we were mostly mentioning ChatGPT, the same holds for other external sources as well.

In addition:

  • Copying any part of a solution of another group always counts as plagiarism.
  • Copying any part of a solution for solo exercises always counts as plagiarism.

Exams and Grades

Your final grade will be determined solely by your performance on the final exam or the repeat exam. The better grade of both exams determines your final grade. The dates will be as follows:

Endterm: Thursday, July 23rd 2026,  14:00 -- 17:00 

Re-Exam: Thursday, September 24th 2026,  14:00 -- 17:00

 

List of Topics

Note that this list is preliminary and may change. Also, additional references may be added shortly before or after the lecture.

Date Topic References
09.04 Graphs I: Intro, BFS, DFS, Dijkstra, Bellman–Ford  
13.04 Graphs II: Max-flow  
16.04 Graphs III: Bipartite maximum matching  
20.04 Approx. Algorithms I: Vertex cover, scheduling, k-center clustering, TSP  
23.04 Approx. Algorithms II: MAX-3SAT, Max-Cut  
27.04 Random I: Hashing, fingerprinting (mod random prime)  
30.04 Random II: Basic sampling, randomized algorithms, Chernoff bounds  
04.05 Random III: Global min-cut (Karger, Karger–Stein)  
07.05 Data Structures I: Tree-based, segment trees, rank-select  
11.05 Data Structures II:  Amortization (resizable arrays, double-ended queues)  
18.05 Random IV: Universal and perfect hashing (static, expected linear construction)  
21.05 Random V: Partitioned Bloom filters, quicksort, quickselect  
28.05 Randomization VI: Randomized search trees (treaps)  
01.06 Polynomials I: Introduction, Karatsuba, Master Theorem  
08.06 Polynomials II: FFT  
11.06 Polynomials III: Polynomial division, Schönhage–Strassen  
15.06 Online algorithms  
18.06 CANCELLED  
22.06 Streaming algorithms: Misra–Gries, median trick, sketching techniques  
25.06 Fixed-Parameter Tractability (Vertex Cover, Color Coding)  
29.06 Strings I: String matching (Morris–Pratt)  
02.07 Strings II: Edit distance, approximate string matching (Needleman–Wunsch)  
06.07 Strings III: Approx. string matching (cont.), suffix arrays, Landau–Vishkin, LCP  
09.07 Strings IV: Streaming pattern matching  
13.07 Geometry I: Introduction, convex hull  
16.07 Geometry II: Convex hull (cont.), orthogonal range searching  

 

 

Literature

The course will not follow a particular book. The following is a list of literature that could be useful.

  • [SMDD] Peter Sanders, Kurt Mehlhorn, Martin Dietzfelbinger, Roman Dementiev. Sequential and Parallel Algorithms and Data Structures - The Basic Toolbox, Springer, 2019, ISBN 978-3-030-25208-3
  • [CLRS] Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford. Introduction to Algorithms (4th ed.), MIT Press and McGraw-Hill, 2022 (ISBN 0-262-04630-X)
  • [CHL] Maxime Crochemore, Christophe Hancart, Thierry Lecroq. Algorithms on Strings, Cambridge University Press, 2009
  • [MU] Michael Mitzenmacher, Eli Upfal: Probability and Computing: Randomized Algorithms and Probabilistic Analysis (2nd ed.), Cambridge University Press, 2017
Privacy Policy | Legal Notice
If you encounter technical problems, please contact the administrators.