The document describes the Expectation Maximization (EM) algorithm. It begins with the general idea that EM can be used to estimate the parameters of a model that predicts observations through some hidden structure. The EM algorithm iterates between an expectation step, where the expected hidden structure is computed based on current parameter estimates, and a maximization step, where the parameters are re-estimated based on the expected hidden structure. The document provides examples of how EM can be applied to problems involving hidden Markov models, probabilistic context-free grammars, and clustering. It also describes how dynamic programming techniques like the inside-outside algorithm can be used to implement EM for parsing.