An algorithm is a description of a solution for a problem. Students will learn various algorithm design methods, such as divide-and-conquer techniques, greedy algorithms, dynamic programming, backtracking and branch-and-bound searching. The different design techniques will be demonstrated by algorithms for a variety of both practical and theoretically interesting problems, such as problems in scheduling, optimization, graphs, games, geometry, pattern matching and linear algebra. We will also discuss lower bounds on the complexities of some problems. The course will will end with an introduction to complexity classes, NP-complete and NP-hard problems.
Prof. Dr. Henk Meijer
Computer Science
Fall / 2007
The following courses are required in order to take this course: