After successful completion of the course, students are able to understand the contents of this course. Among other effects, this understanding forms the basis for the capability to correctly reproduce the statements and notions covered in the course as well as for the ability to explain and apply the proof techniques used in the course.
This lecture is an introduction to the design and analysis of algorithms for
students of mathematics The structure of the lecture mostly follows the central
design principles for algorithms, such as divide-and-conquer, dynamic
programming, or greedy algorithms. In order to achieve a well-balanced
presentation of the subject, graph theory and data structures play an important
role throughout the lecture. The mathematical foundations of discrete
algorithms, such as elementary combinatorics or recurrence relations, will be
treated thoroughly. In the choice of concrete algorithms mathematical tasks,
such as matrix multiplication, linear optimisation, or geometric problems, have
been preferred.