Skip to content

Design & Analysis of Algorithms

Overview

DAA reconciles Data Structures & Algorithms with the Theory of Computation. In this course, you will learn to systematically create and analyze algorithms of your own making and set boundaries on its running time using the notion of Complexity Classes. The course also covers various algorithm design & problem solving strategies such as Divide & Conquer, Dynamic Programming & Approximation Algorithms.

Use CLRS along with the supplementary video material. The polynomial reductions are also present in the Text. For additional information on reductions, refer to the TOC textbook. The coursera course by Tim Roughgarden is recommended.

Prerequisites

This course has the following prerequisites. * Data Structures & Algorithms * Theory of Computation

Textbooks

Title Author(s) Edition
Introduction to Algorithms Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest & Clifford Stein 3rd (2009)
Competitive Programmer’s Handbook Antti Laaksonen Draft (2017)
Algorithm Design and Applications Michael T. Goodrich & Roberto Tamassia 1st (2015)
Algorithm Design Kleinberg & Tardos 1st (2006)
Instructor's Manual to Accompany Introduction to Algorithms Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest & Clifford Stein 3rd (2009)
Algorithms Illuminated: Part I, The Basics Tim Roughgarden 2017
Algorithms Illuminated: Part II, Graph Algorithms and Data Structures Tim Roughgarden 2017
The Algorithm Design Manual Skiena 2nd (2008)
Introduction To The Design & Analysis of Algorithms Anany Levitin 3rd (2012)
Foundations of Algorithms Richard Neopolitan 5th (2015)

Code

Videos

Websites

Apps