Dynamic programming turns up in many machine learning algorithms, maybe because dynamic programming excels at solving problems involving "non-local" information. I explore one technique used in machine learning, Hidden Markov Models, and how dynamic programming is used when applying this technique. Then, I'll show a few real-world examples where Hidden Markov Models are used.