Topic 3: Dynamic Programming I