Courses given by Algorithm Engineering
Summer 2025
Algorithmic Geometry
- Lecturer: Kevin Buchin
- Module: INF-MSc-602
- Type: 3 SWS lecture + 1 SWS exercise
- Moodle: 51565
Data Structures, Algorithms and Programming 2
- Lecturer: Kevin Buchin, Antonia Kalb, Torben Scheele, Mart Hagedoorn, Carolin Rehs
- Module: INF-BSc-104
- Type: 4 SWS lecture + 2 SWS exercise + 2 SWS lab
- Moodle: 50412
Regularly offered courses
Bachelor
Description
In the lecture "Data Structures, Algorithms and Programming 2" (DAP 2) we deal with techniques for designing and analyzing algorithms and data structures.
In this course you will learn to:
- Describe basic algorithms and data structures, apply them to small examples and adapt them to new problems
- Determine, compare and mathematically prove properties such as the runtime and correctness of algorithms
- Develop new algorithms and data structures using basic design methods
Examples for basic algorithms:
- Algorithms for sorting numbers such as MergeSort, InsertionSort, Quicksort, Heapsort, CountingSort and RadixSort and algorithms for the selection problem
- Algorithms for basic organization problems such as the knapsack problem
- Graph algorithms such as breadth-first search, depth-first search, topological sorting, minimum spanning trees and shortest paths
Examples for basic data structures:
- Heaps
- Hash charts
- Balanced binary search trees such as red-black trees
- Graph representations such as adjacency lists and adjacency matrices
For many algorithmic problems it is necessary to adapt these basic algorithms and data structures or to develop new algorithms and data structures. In the lecture we will learn about design techniques such as divide-and-conquer, icremental algorithms, greedy algorithms and dynamic programming.
To analyze the runtime of algorithms, we learn about O-notation. To analyze the runtime of recursive algorithms, the recurrence for the runtime must be determined and solved using techniques such as recursion trees or the master theorem. We also learn various techniques such as loop invariants to show the correctness of algorithms.
Description
The basic techniques introduced in DAP 2 are deepened and applied to more complex problems, in addition to selected problems with large application areas, advanced aspects such as approximation and advanced design methods.
Topics include:
- Hashing methods, string matching
- Graph algorithms, e.g. strong connection in graphs, maximum matchings, network flow problems, cutting problems (min-cut and max-flow), traveling salesperson problem, vertex cover, maxSAT
- Advanced data structures, e.g. B-trees, data structures for disjoint sets, augmentation of data structures
- Analysis techniques, e.g. amortized analysis of algorithms, analysis of randomized algorithms
- Optimization techniques, e.g. linear programming, approximation quality and schemes
Literature
- Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms (also available at the university library as an e-book in English and German)
- Additional literature references and scripts will be made available on Moodle
Examination
- Coursework: successful participation (50 % of the points) in the weekly Moodle quizzes
- For Bachelor students of Computer Science and Applied Computer Science: written exam, 90 minutes, 2 dates
- Students of other disciplines have either oral or written exams. The exact requirements will be announced in the lecture (see slides). In case of a written exam, it will take place at the same time as the exams above. Please note the registration deadlines for examinations at the examinations office, which are very early for written exams (usually 2 weeks in advance).
Description
Competitive programming is about developing algorithmic solutions for specific problems and implementing them in the shortest possible time. In this course, students deepen their understanding of basic efficient algorithms and practise applying the algorithms and programming under time pressure. Since 1970, the Association for Computing Machinery (ACM) has organized the annual International Collegiate Programming Contest (ICOC), which we will use as a guide.
In our project, important algorithms and data structures for solving problems from previous years of the ICPC are presented in lectures and approaches to solutions are discussed. In addition to the lectures, tasks are solved and programmed in a simulated competition situation in teams of 3. At the end of the semester, participants will take part in the Winter Contest or GCPC.
Timetable and process
The specialized project takes place every Wednesday from 12 to 4 pm. The first two hours deal with specific techniques for solving competition problems. The last two hours are dedicated to working on exercises.
Programming language: C, C++, Java or Python (you need to find two other participants for your preferred language)
Course language is German, but the problem descriptions / assignments will be in English!
Prerequisites
- Programming skills (internships DAP 1 and 2)
- Data Structures, Algorithms and Programming 2
- Basic knowledge in the following areas:
- Algorithm design methods: greedy, divide and conquer, dynamic programming, backtracking and recursion
- Basic data structures: arrays, lists, stacks, queues, binary search trees, heaps, adjacency lists and matrices
- Standard algorithmic topics: O-notation, sorting, searching, hashing, simple graph algorithms (e.g. tree traversal, breadth-first and depth-first search)
- Basic knowledge of matching and flow algorithms (EA) is helpful, but not necessary
Examination
All final module examinations are carried out in teams of 3
- 30 min presentation on a data structure or programming paradigm as well as guiding the participants to solve the corresponding task types
- 3 out of 5 of the weekly problems per task type solved
- Successful participation in the internal programming challenge
Materials
Description
Competitive programming is about developing algorithmic solutions for specific problems and implementing them in the shortest possible time. Since 1970, the Association for Computing Machinery (ACM) has organized the annual International Collegiate Programming Contest (ICOC), which we will use as a guide.
In our seminar, advanced algorithms and data structures for solving problems from previous years of the ICPC are presented and approaches to solutions are discussed.
Prerequisites
This course ties to the specialized project "Algorithms for Competitve Programming". Previous know-ledge from this course is desirable, but not necessary. You can also take the specialized project simultaneously (Wednesday morning: seminar, Wednesday afternoon: project).
We expect basic knowledge of algorithm design methods (e.g. dynamic programming, backtracking), data structures (e.g. queues, binary search trees, heaps, graphs) and standard algorithmic topics (O-notation, sorting, searching, hashing).
Master
Description
The lecture "Algorithms and Data Structures" with the accompanying exercise provides the basis for most of the more advanced special lectures in the field of algorithmic and formal foundations, and also deals with more advanced and complex algorithms and data structures.
The lecture focuses on approximation algorithms and linear optimization. In addition to these topics, various advanced algorithmic topics are covered, such as parameterized algorithms and advanced data structures.
There are many algorithmic problems for which we cannot expect to find efficient algorithms. In order to find solutions to such problems, approximation algorithms are of central importance. Approximation algorithms calculate a solution that is not necessarily optimal, but for which we can give a quality guarantee. For example, Christofide's algorithm for the round trip problem (TSP) calculates a tour that is at most 1.5 times as long as the optimal tour in the worst case. We learn about different approximation algorithms and techniques for the design of approximation algorithms.
Linear optimization together with integer optimization can be used to solve a variety of optimization, which are essential for computer science. Linear optimization plays a particularly important role in approximation algorithms and we will take a closer look at this application of linear optimization in the lecture.
Description
Geometric algorithms comprise the design and analysis of algorithms and data structures for geometric problems. In the lecture, some basic problems are considered first: Computing the convex hull of a set of points, the intersection points of a set of lines, or a triangulation of a simple polygon. We then look at algorithms for calculating known geometric structures, such as Voronoi diagrams, Delaunay triangulations and arrangements. We also look at data structures for efficient queries on geometric data, such as range trees, kd-trees and quadtrees. Three main types of algorithms are used: incremental, divide-and-conquer, and sweep. Some of these occur as randomized algorithms.
Prerequisites
Previous knowledge of the lecture "Algorithms and Data Structures" or comparable knowledge is expected.
Examination
- Coursework: active participation (incl. presentation of your own solutions)
- Oral exam
Description
In this seminar we will deal with current research topics of the Algorithm Engineering research group based on selected recent publications in the field of algorithms. The group conducts research on a wide range of algorithmic topics, in particular geometric algorithms and data structures, algorithm engineering, geometric networks and algorithms for geoinformation systems.
Prerequisites
Previous knowledge of the lectures "Algorithms and Data Structures" or "Geometric Algorithms" or comparable knowledge is expected.
*Alternating with the research group Efficient Algorithms and Complexity Theory
Past Terms
Seminar on Algorithms
- Lecturer: Kevin Buchin
- Module: Seminar
- Type: 2 SWS seminar
Algorithms and Data Structures
- Lecturer: Kevin Buchin, Carolin Rehs
- Module: Algorithmen und Datenstrukturen
- Type: 4 SWS lecture + 2 SWS exercise
Proseminar: Advanced Algorithms for Competitive Programming
- Lecturer: Kevin Buchin, Antonia Kalb
- Module: Undergraduate Seminar and Presentation Techniques
- Type: 2 SWS seminar + 1 SWS presentation course
- You will need to implement advanced algorithms in this seminar!
Specialized Project: Algorithms for Competitive Programming
- Lecturer: Mart Hagedoorn
- Module: Undergraduate Project
- Type: 4 SWS project
Algorithmic Geometry
- Lecturer: Kevin Buchin
- Module: Algorithmische Geometrie (Master INF-MSc-602 (Informatik, Angewandte Informatik))
- Type: 2 SWS lecture + 2 SWS exercise
Data Structures, Algorithms and Programming 2
- Lecturer: Kevin Buchin, Carolin Rehs, Antonia Kalb
- Module: INF-BSc-104
- Type: 4 SWS lecture + 2 SWS exercise + 2 SWS lab
Seminar of Algorithm Engineering research group
- Lecturer: Kevin Buchin
- Module: Seminar
- Type: 2 SWS seminar
Algorithms and Data Structures
- Lecturer: Kevin Buchin, Carolin Rehs
- Module: Algorithmen und Datenstrukturen
- Type: 4 SWS lecture + 2 SWS exercise
Proseminar: Advanced Algorithms for Competitive Programming
- Lecturer: Kevin Buchin, Antonia Kalb
- Module: Proseminar und Präsentationstechniken
- Type: 2 SWS seminar + 1 SWS presentation course
Proseminar: Algorithms for Packing Problems
- Lecturer: Kevin Buchin, Antonia Kalb
- Module: Proseminar und Präsentationstechniken
- Type: 2 SWS seminar + 1 SWS presentation course
Specialized Project: Algorithms for Competitive Programming
- Lecturer: Mart Hagedoorn
- Module: Fachprojekt - Bachelor Informatik/Angewandte Informatik
- Type: 4 SWS project
Algorithmic Geometry
- Lecturer: Kevin Buchin
- Module: Algorithmische Geometrie (Master INF-MSc-602 (Informatik, Angewandte Informatik))
- Type: 2 SWS lecture + 2 SWS exercise
Efficient Algorithms
- Lecturer: Kevin Buchin, Carolin Rehs
- Module: INF-BSc-221 (Bachelor Informatik / Angewandte Informatik)
- Type: 4 SWS lecture + 2 SWS exercise
Specialized Project: Algorithms for Competitive Programming
- Lecturer: Mart Hagedoorn
- Module: Fachprojekt - Bachelor Informatik/Angewandte Informatik
Specialized Project: Algorithms for Competitive Programming
- Lecturer: Dr. Carolin Rehs, Mart Hagedoorn, Antonia Kalb
- Module: Fachprojekt - Bachelor Informatik/Angewandte Informatik
Proseminar: Allocation and Assignment Algorithms
- Lecturer: Dr. Carolin Rehs, Antonia Kalb
- Module: Proseminar INF-BA-110 (Bachelor Informatik / Angewandte Informatik)
Seminar: Algorithm Engineering
- Lecturer: Dr. Carolin Rehs
- Module: Seminar INF-MSc-102 (Informatik, Angewandte Informatik)