In this course, you will learn about the famous optimization algorithm of Dynamic Programming.
Dynamic programming is a critical algorithm for solving many problems in practical time limits that would otherwise be of exponential time complexity with brute-force/recursive approach. Dynamic programming is such a critical optimization algorithm that it find its application in many real-world problems and that is the reason i believe coding rounds of many company interviews and coding competitions do emphasize on testing the ability of candidates to solve these problems.
You may be surprised to know that even Neural Networks in machine learning leverages Dynamic Programming along with Chain Rule (of calculus). You will learn the basics of writing a Dynamic Programming Solution and how to find time complexity of these solutions. We will consider a number of examples to help you better understand on how to solve these problems .
These examples are divided into three categories : 1-Dimensional,2-Dimensional and Bit-masking Problems. For each of the category we will have 2 different problems. Here is the course overview :
1-Dimensional Problems
1. Nth Fibonacci Term
2. Longest Increasing Subsequence
2-Dimensional Problems
1. Longest Common Subsequence
2. Longest Palindromic Subsequence
Bit-masking Problems
1. Travelling Salesman Problem
2. Assignment Problem
Through this course, i am trying to give you a mental model for approaching dynamic programming problems. After this course, all that would be left on your part is to practice problems on coding platforms like Spoj, LeetCode, Codeforces, Codechef etc. So please join me in this course and have fun.
66
10
TAKE THIS COURSE