6.006 Introduction to Algorithms (Fall 2011, MIT OCW). Taught by Professor Erik Demaine and Professor Srinivas Devadas, this course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.
(from ocw.mit.edu)
Lecture 22 - Dynamic Programming IV: Guitar Fingering, Tetris, Super Mario Bros
This lecture introduces a second type of guessing, in which more subproblems are created so that more features of the solution can be found. This type of guessing is illustrated with piano/guitar fingering and the Tetris and Super Mario Brothers games.