> For the complete documentation index, see [llms.txt](https://xiaoyang-liu.gitbook.io/programming-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xiaoyang-liu.gitbook.io/programming-notes/computer-science/algorithm-design.md).

# Algorithm Design

> The course will cover the basics of design and analysis of algorithms. The primary goal of the course is to develop 'algorithmic thinking'. Along the way we will learn some of the core algorithmic techniques and concrete algorithms that underlie much of computer science, including graph algorithms, divide-and-conquer, greedy method, dynamic programming, complexity measures, time and space complexity and NP completeness.

**Textbook**: Algorithm Design, Kleinberg and Tardos, 2005
