The course covers data structures and techniques for constructing efficient algorithms, including their analysis with respect to efficiency. It stresses the importance of adapting standard algorithms and data structures to the peculiarities of both the given problem and the underlying hardware, because efficiency does not only depend on the intrinsic asymptotic efficiency of an algorithm, but also on the context in which it is applied.
Typical algorithmic techniques are divide-and-conquer, greedy methods, and dynamic programming. As efficient data structures form the basis for many of these techniques, important data structures, their analysis and advantages and disadvantages depending on circumstances are covered as well. Examples of data structures to be covered are heaps, disjoint sets, and tree data structures.
At least 90 ECTS, including 60 ECTS Computing Science, or at least 120 ECTS within a study programme. At least 7.5 ECTS programming; 7.5 ECTS data structures and algorithms; 7.5 ECTS discrete mathematics; and 7.5 ECTS formal languages. Proficiency in English equivalent to the level required for basic eligibility for higher studies.