# Algorithm Design and Analysis

# Course overview

In this graduate course, students learn the building blocks of algorithms and data structures. We introduce standard algorithms for sorting, searching, for graphs, and to solve linear programs. We introduce standard data structures, namely priority queues, graphs, and several variants of search trees. More importantly, we handle methods to analyze the time and memory complexity of any algorithm (Big-O notation; NP-completeness) and a number of algorithm paradigms like recursion (divide and conquer), dynamic programming and greedy algorithms. These will help students to create new algorithms on their own.

# Textbook

- Introduction to algorithms, Thomas H. Cormen, Charles E. Leiserson and Ronald L. Rivest, Clifford Stein

# Instructors

- Prof. Zhilin Wu ()
- Asso. Prof. Bohua Zhan ()
- Asso. Prof. David N. Jansen