The main context you need to learn parent problems. All the parent problems I will learn will help me understanding all sort of patterns.
Dynamic programming is essentially important and it solves the optimization probelms by computing and storing subproblems so that It can use that later.