Chapter 1 - Introduction

Chapter 2 - Algorithm Efficiency

Chapter 3 - Brute Force and Exhaustive Search

Chapter 4 - Decrease-and-Conquer

Chapter 5 - Divide-and-Conquer

Chapter 6 - Transform-and-Conquer

Intro Video

Chapter 7 - Space and Time Trade-Offs

Chapter 8 - Dynamic Programming

Chapter 9 - Greedy Technique

Chapter 10 - Iterative Improvement

Chapter 11 - Limitations of Algorithm Power

Chapter 12 - Coping with the Limitations

Extra

Lecture Notes