This document provides an overview of dynamic programming, including examples of 1-dimensional, 2-dimensional, interval, tree, and subset dynamic programming problems. It explains the general process of solving dynamic programming problems through defining subproblems, finding recurrences relating the subproblems, and solving base cases. Specific examples covered include the longest common subsequence problem, editing strings to palindromes, tree coloring, and the traveling salesman problem.