Iterative algorithms: measures of progress and loop invariants
Examples using more-of-the-input loop invariants
Narrowing the search space: binary search
Iterative sorting algorithms
The loop invariant for lower bounds
Abstractions, techniques, and theory
Some simple examples of recursive algorithms
Parsing with context-free grammars
Definition of optimization problems
Network flows and linear programming
Dynamic programming algorithms
Examples of dynamic programs
Reductions and NP-completeness
Existential and universal quantifiers
Logarithms and exponentials
Adding-made-easy approximations
A formal proof of correctness.