Lecture 3: Dynamic Programming and Alignment