Friday, March 27, 2020

Top 5 Courses to Learn Dynamic Programming for Coding Interviews - Best of lot

Hello guys, If you are looking for a job and giving interviews then you might have noticed that getting a Software development Job is becoming more and more difficult every day. For example, there was a time when you can get a Java developer position by just knowing Core Java concepts like String, Collections, and Multithreading, etc, but, not anymore. There were definitely some questions on Data structure and Algorithms and even on Dynamic Programming that time as well, but the focus was always on programming language expertise like Java or Python. But, things have completely changed now, and the focus is more and more on the candidate's ability to solve coding problems.

Every company now has a tough coding test, and without passing them, you won't go into the regular round of interviews, where your expertise on a programming language is getting tested.

On these coding tests, some of the hardest problems come from Dynamic Programming, especially for tech giants like Microsoft, Apple, Google, Facebook, and many programmers struggle to solve it.

From my own experience, I can say that understanding the Dynamic Programming algorithm is tough, and you need a lot of practice to get the hang of it. But, just practice won't be enough; you need to learn some tricks to solve those Dynamic Programming problems, and the best way to learn those tricks and approaches is to read good books or join excellent online courses.

A couple of days ago, one of my readers asked me about the Knapsack problem and longest subsequence problem, two of the most popular Dynamic programming problem and how to solve Dynamic coding problems, as I haven't touched the topic from a long time, I had to do some research.

As part of my research, I come across some useful resources to learn and master Dynamic programming, which I am going to share with you guys today, along with some useful tips to solve Dynamic programming problems, but before that, let's understand what is Dynamic Programming? and take a look at some coding problems which can be solved using Dynamic programming.





What is Dynamic Programming (DP)?

Dynamic Programming (DP) is an algorithmic technique for solving a bigger and hard problem by breaking it down into simpler sub-problems and utilizing the fact that the optimal solution to the bigger problem depends upon the optimal solution to its smaller sub-problems.

One of the simplest examples of Dynamic Programming problems is the Fibonacci series because it's possible to solve the problem (i.e., Fib(n)) by solving tow smaller subproblems (which are Fib(n-1) and Fib(n-2)).

Another popular example of Dynamic Programming question is the Knapsack problem, which tests your ability to find an optimal solution in a given constraint.

The fact is, Dynamic Programming (DP) problems can be some of the most intimidating on actual coding interview. Even when it's clear that a problem can be solved using Dynamic Programming (which is also difficult), it can be challenging to even know where to start on the solution. Unless you're trained on the approach to solving Dynamic Programming problems.

Now that we know what is Dynamic Programming and got an idea of what type of problems can be solved using Dynamic Programming let's see some online courses which will train you on Dynamic Programming.


5 Best Courses to learn Dynamic Programming

These courses have easy to understand explanations of some of the famous Dynamic Programming based coding problems, which will help you to learn how to approach and solve them. They also share some tips to identify if a problem can be solved using Dynamic programming.

1. Dynamic Programming - I

If you struggle to solve Dynamic Programming problems, particularly identifying if a problem can be solved using Dynamic Programming and then breaking into sub-problems, then this course is for you. In this course, you will learn what Dynamic Programming is, what are some important steps while solving a problem using Dynamic Programming and how to approach it.

The course is structured nicely, and it has got many examples like Longest Increasing Subsequence, Fibonacci series, Stairway to Heaven, Sum of the Range, etc. to teach you Dynamic Programming and I bet you will need all of those to get this concept into your head.

The best thing about this course is their assignments and quizzes, which gives you an opportunity to the utilized thinking part of your brain. Unless you think on your own, you won't understand Dynamic programming, and these quizzes will help you to understand the problem on a deeper level.

Talking about social proof, more than 5500 students have already trusted it, and it has got on average, 4.5 ratings from close to 270 participants, which is amazing. I strongly recommend this course to you if you want to learn Dynamic Programming from scratch.

Top 5 Courses to Learn Dynamic Programming for Programmers



2. Intro To Dynamic Programming

This is another great course to learn Dynamic Programming from Udemy. I first come across this course while searching for a solution of a problem which was asked to one of my reader on Morgan Stanley interview - The Climbing Stairs Problem.

If you are regular on coding interviews, you might have seen this problem before. The problem definition is simple, you can climb either 1 or 2 stairs at a time, how many different ways you can climb N stairs, and solution presented Farouk Yasser really blew my mind.

This is not really a funky course with lots of animation to teach you concepts, but the way Farouk, instructor of this course explains, the solution makes a difference.

It's also one of the few courses which solve almost all the famous Dynamic programming problems like Climbing Stairs, Cutting Roads, House Robber, the Best time to buy and sell stocks, 0/1 Knapsack problem, Longest Common sub-sequence problem, and Longest common substring problem. If you are looking for a solution to those problems, then this course is for you.

I also suggest you watch a couple of previews of this course, in fact, climbing stairs problem is solved in the preview itself, and if you find Farouk teaching style great, you can join the course.

best course to learn Dynamic Programming


3. Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming

If you are a Coursera fan and looking for a good course to learn Dynamic Programming in Coursera, then you should check this out.

In this course, you will not only learn Dynamic Programming but also Greedy Algorithms, other useful techniques for solving coding problems, and some popular algorithms like Minimum Spanning trees.

The course also covers common dynamic programming problems and techniques like a knapsack, sequence alignment, optimal search trees.





4. Master the art of Dynamic Programming

If you like Udemy courses like me, this is another good course to learn the Dynamic Programming technique. It covers problems like Edit Distance, Regular Expression Matching, Minimum deletion to make a String palindrome, and Longest increasing subsequence.

Most importantly, the way Ajay explains how to approach a Dynamic Programming problem from identification to formulation is great. He also divides the problems into two categories one-dimensional Dynamic Programming problems and Two-dimensional dynamic programming problems.

The course will also teach you Recursion and Backtracking, two important techniques for solving coding problems. The best thing is that he explains the solution in depth. Examples from the CLRS book are also covered in this course, which one can refer to know more about concepts.

Master the art of Dynamic Programming Udemy course


5. Grokking Dynamic Programming Patterns for Coding Interviews

You may not know already, but Educative, a new interactive online learning platform has some of the best courses for coding interview preparation. I have already talked about their best course - Grokking the System Design Interview, and this one is another gem.

This course was made from scratch with only one goal in mind - how to approach Dynamic programming problems. It'll equip you with a set of easy-to-understand techniques to handle any DP based coding problem.

Rather than just having you try to memorize solutions, you'll be walked through five underlying DP patterns that can then be applied to solve 35+ Dynamic Programming problems.

In each pattern, you'll first learn a recursive brute-force solution, which is actually the best way to start solving a DP problem. Once you understood the recursive solution, you'll learn how to apply advanced Dynamic programming techniques of Memoization and Tabulation (using grids).

Grokking Dynamic Programming Patterns for Coding Interviews Educative course


Like the previous course, this one also covers most of the common Dynamic Programming problems you will see on coding interviews. Practice problems also give you the opportunity to apply the patterns you have learned in the course. If you like interactive reading, this is the best course to learn Dynamic Programming.


That's all about some of the best courses to learn Dynamic Programming. As I have said, DP is a topic for Coding interviews, and most of the tough questions are from Dynamic Programming. It's not wise to ignore Dynamic programming anymore, particularly if you are serious about getting that job you always wanted. Dynamic Programming also has uses in Artificial intelligence, and it also boosts your problem-solving ability, which means you better spend some time learning Dynamic Programming before your next Programming interview.


Other Programming Resources  you may like to check

Thanks for reading this article so far; if you like these Dynamic Programming courses, then please share it with your friends and colleagues. If you have any questions or feedback, then please drop a note.

P.S. - If you like books, I also suggest you take a look at the Grokking Algorithms by Aditya Bhargava. His explanation to knapsack problem is the best and most detailed I have seen so far.

P. P. S. - Are you ready for an Interview? Take TripleByte's quiz and go directly to the final round of interviews with top tech companies like Coursera, Adobe, Dropbox, Grammarly, Uber, Quora, Evernote, Twitch, and many more.

No comments :

Post a Comment