Dynamic Programming provides a set of general normative methods for making sequential decisions under uncertainty. While there are no formal prerequisites for the course, some level of exposure to optimization, probability theory, and matrix-vector algebra is highly desirable. The course brings a new dimension to static models studied in optimization by investigating dynamic systems and their optimization over time.