This is an archived version of this module from Winter 2024-25.

Efficient Algorithms (CS 566) is a second module in algorithms (Aufbaumodul) that covers common strategies for designing algorithms and data structures, illustrated through a variety of examples. While the selection of examples takes their relevance in applications into account, the module also focuses at teaching formal techniques for proving correctness and performance guarantees.

Slido  ⋅  Live  ⋅  ILIAS  ⋅  Campuswire  ⋅  Question Gallery  ⋅  Units

Teaching Evaluation

Below are the results of the University’s end-of-module survey.


Taking CS 566 for conditional admission to an international MSc program?
$\longrightarrow$   Read “CS 566 for Credit vs. for conditional admission”!

Lectures

There will be synchronous interactive lectures, starting from October 14. Live participation is expected; recordings will be available on a best-effort basis.

Our regular lecture slots are

  • Monday 16:15 – 18:00 in Hörsaalgebäude H|05, Hörsaal B;
  • Tuesday 14:15 – 16:00 in Hörsaalgebäude H|05, Hörsaal D;

Units

The module will consist of the following units; each has unit subpage linked in the table with slides, lecture notes, and video recordings for that unit.

Week Date (Mon) Lecture In-class Sheet Exercise Sheet
1 2024-10-14 Unit 0: Administrative
  2024-10-15 Unit 1: Proof Techniques
2 2024-10-21 Unit 2: Machines & Models Präsenzübung 0 Blatt 1Code
3 2024-10-28 Unit 3: Fundamental Data Structures Präsenzübung 1 Blatt 2
4 2024-11-04 Unit 4: Efficient Sorting Präsenzübung 2 Blatt 3
5 2024-11-11 Unit 5: Divide & Conquer Präsenzübung 3 Blatt 4
6 2024-11-18 Unit 6: String Matching Präsenzübung 4 Blatt 5
7 2024-11-25 Unit 7: Text Compression Präsenzübung 5 Blatt 6
8 2024-12-02 Unit 8: Clever Codes Präsenzübung 6 Blatt 7
9 2024-12-09 Unit 9: Graph Algorithms Präsenzübung 7 Blatt 8
10 2024-12-16 Unit 10: Parallel Algorithms Präsenzübung 8 Blatt 9
2024-12-23 Xmas break
2024-12-30 Xmas break
2025-01-06 Xmas break
11 2025-01-13 Unit 11: Greedy Algorithms Präsenzübung 9 Blatt 10
12 2025-01-20 Unit 11: Greedy Algorithms Präsenzübung 10 Blatt 11
13 2025-01-27 Unit 12: Dynamic Programming Präsenzübung 11 Blatt 12
14 2025-02-03 Unit 13: Text Indexing Präsenzübung 12  
14 2025-02-10 Unit 14: Range-Minimum Queries    

Tutorials (Übungen)

There will be small-group tutorials, organized by Nikolaus Glombiewski and Hannes Feil. The first tutorial classes will be held in the week of October 21.

Online Tools

We will use several tools and services that have proven effective in this module.

Campuswire

Campuswire is our main online communication channel.
Any questions relating to the module should be posted on Campuswire on the question & answer forum, the class feed. You can post anonymously if you prefer, and you are encouraged to answer each other’s questions, as well!

You can also use the platform for (social or topical) discussions in the chat rooms.

ILIAS

We will use the university’s official learning management system ILIAS for announcements and examination-related information.

Slido

During the live lectures, I will use Slido to for interactive parts.

We maintain a collaborative exam question gallery on Papeeria Overleaf.
(You may have to create a free account.)

Join us in making this a great resource for preparation for the exam – and if your questions are good enough, they might end up inspiring the actual exam! This is also a chance to learn or practice some $\LaTeX{}$.

Exam & Assessment

The module mark is based on the final examination. To be admitted to the exam, you must achieve a passing grade in the tutorials.

More details will be given in class.

Exams will take place on the following dates.

  • First Examination opportunity for-credit students: Tue 25 Feb 2025
  • First Examination opportunity conditional-admission students: Sat 1 Mar 2025
  • Second Examination opportunity for-credit students: Wed 26 March 2025
  • Second Examination opportunity conditional-admission students: tbd

CS 566 for Credit vs. for conditional admission

The for-credit version of CS 566 is predominantly taken by students on the German undergrad programs in Marburg and is a compulsory module for the BSc Data Science program. It must hence be offered in German, including examinations.

If you are taking CS 566 to satisfy the prerequisites of a conditional admission to an international Master’s program, you will be offered a separate examination in English that is based on the provided English self-study material instead of the German lectures. You are, however, welcome and encouraged to attend lectures and tutorials, and in particular to join and use the Campuswire Q&A forum.

Note: If you are required to take the CS 566 prerequisite module as part of your admission, you cannot take CS 566 for credit in your program.

Further reading

There are many good algorithms textbooks, but no single definitive one that covers all topics of this module (in the way I want them presented!). Indeed, I have been cherrypicking the – in my opinion – most effective descriptions from a variety of sources; check the individual units for details.

Other resources