In this course, you will learn :
- The fundamentals of recursion before progressing to more advanced DP concepts like Bottom-Up optimization.
- Learn a variety of DP techniques for dealing with even the most difficult problems.
- A variety of coding challenges of varying difficulty, allowing you to practise a wide range of problems.
- Able to use dynamic programming in your own projects.
1. From Recursion to Dynamic Programming
- What is Recursion?
- Thinking Recursively
- The Fibonacci Numbers
- Challenge: Find All Permutations of a String
- Solution Review: Find All Permutations of a String
- Challenge: Place N Queens on an NxN Chessboard
- Solution Review: Place N Queens on an NxN Chessboard
- Is Plain Recursion Good Enough?
- What is Dynamic Programming?
- Approaches of Dynamic Programming
- Where to Use Dynamic Programming
2. Top-Down Dynamic Programming with Memoization
- What is Memoization?
- The Fibonacci Numbers Algorithm with Memoization
3. Bottom-Up Dynamic Programming with Tabulation
- Limitations of Top-Down Dynamic Programming
- What is Tabulation?
- The Fibonacci Numbers Algorithm with Tabulation
- Optimizing the Fibonacci Numbers Algorithm
- Top-Down vs Bottom-Up