Thanks a lot for the amazing content. Regarding dynamic programming, when trying to solve optimization problems using dynamic programming, I like to think about the problem by first comping up with a recurrence relation between the sub problem and then building a top-down solution and after that finally coding a bottom up solution. This is much more intuitive that directly coming up with a bottom up solution, the way some the problems are taught in this course. I expected this teaching style. I am also having problems on deciding the dimensionality for a dynamic programming problem and on what all factors does it depends.