The Road To Dynamic Programming: Java, JavaScript, & Python (2021)

Recursion, Memoization, and Tabulation in Dynamic Programming

What you’ll learn

  • How to solve dynamic programming problems
  • How to think in a programming way
  • How to improve possible solution and enhance time and space complexity using Dynamic Programming
Dynamic Programming

Course content

10 sections • 42 lectures • 5h 27m total lengthExpand all sections

Introduction2 lectures • 3min

  • Introduction and Welcome VideoPreview02:24
  • RequirementsPreview01:00

Basics Of Dynamic Programming3 lectures • 18min

  • Fibonacci Sequence and Recursive SolutionPreview06:19
  • Memoization06:29
  • Tabulation05:30

Minimum Number Of Bills to Return an Amount5 lectures • 51min

  • Explanation and Example walkthrough14:57
  • Pseudo-Code of the problem10:22
  • Java Implementation09:18
  • JavaScript Implementation08:44
  • Python Implementation07:28
  • Time and Space Complexity2 questions

Number Of Ways to Return an Amount5 lectures • 42min

  • Problem Explanation and Example Walkthrough14:38
  • Pseudo-Code of the problem05:09
  • Java Implementation08:21
  • JavaScript Implementation07:58
  • Python Implementation05:41
  • Time and Space Complexity2 questions

Knapsack With Repetition6 lectures • 51min

  • Introduction to The Knapsack ProblemPreview11:13
  • Problem Explanation and Example Walkthrough07:48
  • Pseudo-Code of the problem15:01
  • Java Implementation07:06
  • JavaScript Implementation05:39
  • Python Implementation04:21
  • Time and Space Complexit2 questions

Knapsack Without Repetition5 lectures • 40min

  • Problem Explanation and Example Walkthrough08:44
  • Pseudo-Code Of The Problem08:40
  • Java Implementation08:44
  • JavaScript Implementation06:16
  • Python Implementation07:11
  • Time and Space Complexity2 questions

Number Of Subsets that Add Up to A Specific Number5 lectures • 44min

  • Problem Explanation and First SolutionPreview14:58
  • Optimized Solution Using Dynamic Programming and Pseudo-Code09:22
  • Java Implementation07:54
  • JavaScript Implementation05:44
  • Python Implementation05:49

Longest Common Subsequence5 lectures • 44min

  • Problem Explanation and Example Walkthrough12:59
  • Improved Solution Using Dynamic Programming and Pseudo-Code14:14
  • Java Implementation05:43
  • JavaScript Implementation05:17
  • Python Implementation05:19

Longest Increasing Subsequence5 lectures • 34min

  • Problem Explanation and First Solution11:54
  • Improved Solution Using Dynamic Programming and Pseudo-Code07:56
  • Java Implementation05:04
  • JavaScript Implementation04:18
  • Python Implementation04:48
  • Better Solution of the Longest Increasing Subsequence using Java1 question

Final Message1 lecture • 1min

  • Thank You and Quick Tips01:28


  • Basic Knowledge of at least one of the three programming languages: Java, Python, and JavaScript
  • Basic knowledge about recursion


In this course, you are going to learn about one of the most popular programming topics, dynamic programming. This topic is known as one of the most difficult topics in the programming world. However, in this course, we are going to simplify it and deeply learn the basis on which it stands.

What we are going to do is to start by introducing and defining dynamic programming, and present two popular techniques that are generally used which are memoization, and tabulation. We are going to learn about the differences between them, and when and where to use each one of them.

Then, we are going to solve some of the most famous dynamic programming problems by a detailed explanation of the problem, followed by an example walkthrough. Then, we come up with a pseudo-code, and finally we implement our code using three languages, Java, JavaScript, and Python.

This course contains multiple quizzes and coding exercises that will help you deeply understand each of the topics presented.

With that being said, I hope you enjoy this course, and I would love to help you make your dynamic programming experience more fun, and enjoyable as much as possible! 

Good Luck and Enjoy!

Who this course is for:

  • Python, Java, or JavaScript programmers
  • Software Developers
  • Competitive programmers


Hadi youness

Hadi younessComputer Engineer

  • 4.5 Instructor Rating
  • 253 Reviews
  • 33,460 Students
  • 2 Courses

Hello, I am Hadi Youness and I am studying Computer Engineering at the Lebanese American University (LAU). I like to share my knowledge with everyone, and I believe that teaching is the best way to fully understand anything since you must be very knowledgeable about a topic so that you can teach in in the most simplest ways.

Leave a Comment