Dynamic Programming Approach Algorithm And Complexity Course Definition