News
Exam DatesWritten on 12.11.24 by Karl Bringmann Dear students, The exam dates have been fixed as follows: Final Exam: 13.02. 16:0018:30 ReExam: 25.3. 14:0016:30 
Tutorial Assignment, Exercise Sheet 2, Sample SolutionsWritten on 24.10.24 by Niko Hastrich Dear all, as some of you already noticed, you were assigned to a tutorial now. If there are any dealbreakers with your assignments, please don't hesitate to contact me. Dear all, as some of you already noticed, you were assigned to a tutorial now. If there are any dealbreakers with your assignments, please don't hesitate to contact me. Best, 
One Submission per TeamWritten on 24.10.24 by Niko Hastrich Dear all, for each team, exactly one team member should submit your solution (either digitally or physically). This helps the tutors to only grade each exercise sheet once. Dear all, for each team, exactly one team member should submit your solution (either digitally or physically). This helps the tutors to only grade each exercise sheet once. Best, 
Corrected Deadline for First Exercise SheetWritten on 17.10.24 by Niko Hastrich Please note that we put the wrong Deadline on the first exercise sheet. The correct deadline is next Thursday, October 24. We have corrected the uploaded version. As mentioned in the lecture, this gives you one week to work on the exercises. Best, 
Update Your Tutorial ChoiceWritten on 16.10.24 by Niko Hastrich Dear all, up until now, you were only able to assign preferences for the time of your tutorial. For the time slots where there is an English and a German tutorial simultaneously, this did not allow you to choose the tutorial language. We have updated the tutorial choices for you to be able to give… Read more Dear all, up until now, you were only able to assign preferences for the time of your tutorial. For the time slots where there is an English and a German tutorial simultaneously, this did not allow you to choose the tutorial language. We have updated the tutorial choices for you to be able to give preferences to each tutorial individually, allowing you to specify the language of the tutorial you prefer. This erased all preferences. So, please update your preferences by next Wednesday, October 23rd. Best, 
Introduction to Algorithms and Data Structures
This lecture gives an introduction to the design of efficient algorithms and data structures, as well as analyzing their correctness and running time. We will cover sorting algorithms, basic data structures (linked lists, stacks, priority queues, balanced binary search trees, hashing), and basic graph algorithms (traversal, shortest path, minimum spanning tree). We will discuss algorithm design techniques such as divide and conquer, exhaustive search, greedy and dynamic programming as well as randomized algorithms and amortized analysis of algorithms.
Lecture Format
Lecture: Thursdays 12:1514:00 (E2 2 HS 001, GünterHotzHörsaal)
The first lecture will take place on October 17. The lectures will be held in English.
We will try to make recordings of the lecture available on this website, but there can always be technical difficulties, so we recommend attending in person.
Prerequisites: It is recommended to have taken Programming 1+2 and Mathematics for Computer Scientists 1+2 before this course.
Exercise Sheets & Tutorials
Exercise sheets will be handed out on Thursday and are due on the next Thursday before the lecture. Your solutions should be submitted either physically in the lecture hall or digitally via this website. Physical solutions are handwritten or printed sheets of paper. Digital solutions are submitted as a PDF by writing in LaTeX, writing in a common word processor like Word, or as a high quality scan/photo of a handwritten submission. The first page of your solutions must list your name and your tutorial slot.
You can work in groups of up to 3 students on the exercises. Each group must submit exactly one solution (for digital solutions this means that exactly one group member should submit the solutions via this website). The first page of your solutions must list all group members. Each group must write their own solution and must not copy the solution of another group!
The exercises sheets will be written in English, but you can choose to write your solutions in English or German depending on the tutorial you choose (i.e. check the submission language in the table below).
Solutions to the exercises will be presented in the weekly tutorials. Tutorials start on October 28. We offer the following tutorial slots:
Time  Tutor  Room  Tutorial Language  Submission Language 

Monday 810  Jonas  E1.3, SR014  English  English or German 
Monday 1012  Jan  E1.3, SR014  English  English or German 
Monday 1012  Lars  E1.3, SR015  German  English or German 
Monday 1214  Thorben  E1.3, SR014  English  English or German 
Monday 1214  Mahmod  E1.3, SR015  German  English or German 
Monday 1416  Samuel  E1.3, SR014  German  English or German 
Monday 1618  Florian  E1.3, SR014  German  English or German 
Thursday 810  Johannes  E1.3, SR015  German  English or German 
Thursday 1012  Jashmanpreet  E1.3, SR015  English  English or German 
When registering on this website, you are asked to give your preferences for tutorial slots. You can submit your preferences until October 23. We will then create a tutorial assignment on October 24.
Office Hours
We offer Office Hours, where you can ask tutors about the course material or exercises:
 Tuesdays 13:0014:00, room 401 E1 3
 Wednesdays 11:0012:00, room 401 E1 3
Algodat++
If you feel confident with the core concepts of the lecture and would like to explore more advanced topics, we offer an extra tutorial which is:
 solving additional, difficult exercises
 presenting additional material related to the lecture, e.g. more efficient algorithms

discussing unexpected applications of the lecture material
This happens Tuesdays 14:1516:00 in room 024 building E1 4 (MPIInf), starting on October 29. It is organized by Evangelos Kipouridis. Participation is voluntary.
Grading and Exams
To be able to obtain a certificate you must register in the LSF system. If you are unable to register in LSF, please contact Niko.
To be admitted to the final exam and the reexam, you need to score at least 50% of the points on the exercise sheets. For the exams you are allowed to bring a single handwritten DinA4sheet (which can be written on both sides); photocopies and printouts are not allowed. Your final grade will be the better of your grade in the final exam and your grade in the reexam.
 Final Exam: 13.02. 16:0018:30
 ReExam: 25.03. 14:0016:30
Tentative Schedule
Date  Topic  Comment 

Oct 17 
Introduction (machine model, Onotation, correctness proofs)


Oct 24 
Basic Sorting Algorithms and Lower Bound


Oct 31 
Noncomparisonbased Sorting + Basic Data Structures


Nov 7 
More Basic Data Structures + Binary Search Trees


Nov 14 
Balanced Binary Search Trees


Nov 21 
Divide and Conquer

replacement lecturer: Evangelos Kipouridis 
Nov 28 
Priority Queues


Dec 5 
Introduction to Randomized Algorithms


Dec12 
Hashing


Dec 19 
Greedy and Dynamic Programming


Dec 26    lecturefree period 
Jan 2    lecturefree period 
Jan 9 
More Dynamic Programming


Jan 16 
Graphs: Representation and Traversal


Jan 23 
Graphs II: Shortest Paths


Jan 30  Graphs III: Minimum Spanning Trees  
Feb 6 
Outlook

Literature
There are many good books and lecture scripts on the topic, here is a selection:
 [Blä] M. Bläser, Introduction to Algorithms and Data Structures, 2015 (Script)
 [MS] K. Mehlhorn, P. Sanders, Algorithms and Data Structures  The Basic Toolbox, Springer, 2008 (ISBN: 9783540779773)
 [CLRS] T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein, Introduction to Algorithms  Fourth Edition, MIT Press, 2022 (ISBN: 9780262046305)
 [Eri] J. Erickson, Algorithms, 2019 (Free electronic version)