This course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.
In this course you will learn
to measure and compare the efficiency of algorithms,
to implement fundamental algorithms and data structures in Java,
to design your own algorithms and data structures,
and to prove their correctness and efficiency.
Weekly lectures (online) and weekly exercise session.
Lectures take place on Wednesday, 9:45 - 13:00, in the Audimax II.
There are six group exercise classes:
Mo, 11:30 - 13:00, Room H - 0.08 (Group 4)
Mo, 16:45 - 18:15, Room O - 0.018 (Group 2)
Tu, 11:30 - 13:00, Room D - 1.021 (Group 3)
We, 8:00 - 9:30, Room H - 0.03 (Group 6)
Thu, 11:30 - 13:00, Room H - 0.03 (Group 1)
Fri, 8:00 - 9:30, Room H - 0.03 (Group 5)
T. H. Cormen, C. E. Leiserson, R. Rivest and C. Stein: An Introduction to Algorithms. MIT Press, 3rd edition, 2009.
T. H. Cormen, C. E. Leiserson, R. Rivest and C. Stein: Algorithmen — eine Einführung. Oldenbourg Wissenschaftsverlag, 3. Auflage, 2010.
M. T. Goodrich and R. Tamassia: Data Structures and Algorithms in Java. Wiley, 5th edition, 2010.
K. Mehlhorn and P. Sanders: Algorithms and Data Structures: The Basic Toolbox. Springer, 2008.