VOOZH about

URL: https://www.coursera.org/learn/packt-advanced-algorithms-dynamic-programming-and-graph-algorithms-pnfqd

⇱ Advanced Algorithms, Dynamic Programming & Graph Algorithms | Coursera


Advanced Algorithms, Dynamic Programming & Graph Algorithms

Keep adding new skills with 10,000+ programs for $239 (usually $399). Save now.

Advanced Algorithms, Dynamic Programming & Graph Algorithms

Included with

Ask Coursera

Gain insight into a topic and learn the fundamentals.
Intermediate level

Recommended experience

2 weeks to complete
at 10 hours a week
Flexible schedule
Learn at your own pace

Gain insight into a topic and learn the fundamentals.
Intermediate level

Recommended experience

2 weeks to complete
at 10 hours a week
Flexible schedule
Learn at your own pace

What you'll learn

  • Learn advanced heap operations to solve optimization problems in algorithmic challenges.

  • Understand and apply dynamic programming techniques to solve complex recursive problems.

  • Implement advanced graph algorithms like Dijkstra’s, Bellman-Ford, and Prim’s Algorithm for real-world problems.

  • Master bit manipulation techniques for efficient data handling in coding challenges.

Details to know

Shareable certificate

Add to your LinkedIn profile

Recently updated!

April 2026

Assessments

12 assignments

Taught in English

Build your subject-matter expertise

This course is part of the Data Structures & Algorithms in Java + 150 Leetcode Problems Specialization
When you enroll in this course, you'll also be enrolled in this Specialization.
  • Learn new concepts from industry experts
  • Gain a foundational understanding of a subject or tool
  • Develop job-relevant skills with hands-on projects
  • Earn a shareable career certificate

There are 10 modules in this course

This course features Coursera Coach!

A smarter way to learn with interactive, real-time conversations that help you test your knowledge, challenge assumptions, and deepen your understanding as you progress through the course. Mastering advanced algorithms is essential for solving complex problems in real-world applications. In this course, you’ll dive deep into critical concepts such as dynamic programming, graph theory, heap operations, and bit manipulation techniques. Each section builds on your knowledge, ensuring a comprehensive understanding that will be indispensable in interviews, competitive programming, and everyday coding tasks. The course begins by introducing heaps, providing hands-on lessons on implementing heaps, inserting and deleting elements, and solving problems like finding the kth largest element in an array. From there, you'll move to dynamic programming, tackling classical problems such as "Climbing Stairs," "Coin Change," and "Longest Common Subsequence," learning the techniques to optimize recursive algorithms with memorization and tabulation. You’ll also explore graph algorithms including BFS, DFS, Dijkstra's, and Bellman-Ford for shortest path solutions, as well as Minimum Spanning Trees with Prim’s Algorithm. Designed for anyone looking to deepen their algorithmic knowledge, this course is suitable for intermediate learners with a basic understanding of data structures. No prior experience with dynamic programming or advanced graph algorithms is required, but a solid grasp of programming basics will be beneficial. By the end of the course, you will be able to efficiently solve complex problems using dynamic programming, implement advanced graph algorithms, and apply heaps to optimize your solutions. You’ll also gain hands-on experience with Leetcode-style problems that are frequently encountered in technical interviews.

In this module, we will explore heap data structures, including their fundamental operations like insertion, deletion, and heapify. We will implement heaps in Java and apply them to real-world problems such as finding the kth largest element and solving the "Last Stone Weight" problem. By the end of this section, you will have hands-on experience solving various heap-based problems.

What's included

13 videos2 readings1 assignment

13 videosTotal 122 minutes
  • Introduction To Heaps11 minutes
  • Implementation Of Heaps10 minutes
  • Insertion in Heaps6 minutes
  • Heap Insertion Implementation12 minutes
  • Deletion in Heaps7 minutes
  • Heapify8 minutes
  • Practice Problem 1 - Kth Largest Element In An Array9 minutes
  • Practice Problem 2 - Find Median from Data Stream17 minutes
  • Practice Problem 3 - Kth Largest Element In A Stream11 minutes
  • Leetcode #1046 - Last Stone Weight - Java5 minutes
  • Leetcode #23 - Merge K Sorted Lists7 minutes
  • Leetcode #253 - Meeting Rooms II9 minutes
  • Leetcode #347 - Top K Frequent Elements8 minutes
2 readingsTotal 20 minutes
  • Introduction to the Course 'Advanced Algorithms, Dynamic Programming & Graph Algorithms'10 minutes
  • Full Specialization Resource10 minutes
1 assignmentTotal 15 minutes
  • Heaps - Assessment15 minutes

In this module, we will delve into dynamic programming (DP) techniques, understanding their theoretical foundation and practical use. We will solve a variety of problems, from simple ones like "Climbing Stairs" to more complex ones such as "Longest Palindromic Substring." By the end, you'll be equipped to apply dynamic programming to tackle a wide range of algorithmic challenges.

What's included

17 videos1 assignment

17 videosTotal 223 minutes
  • Introduction to Dynamic Programming12 minutes
  • Practice Problem 1 - Climbing Stairs - Java7 minutes
  • Practice Problem 2 - Jump Game - Java9 minutes
  • Practice Problem 3 - Coin Change20 minutes
  • Practice Problem 4 - Target Sum14 minutes
  • Practice Problem 5 - Longest Common Subsequence15 minutes
  • Practice Problem 6 - House Robber10 minutes
  • Practice Problem 7 - Longest Increasing Subsequence12 minutes
  • Practice Problem 8 - Partition Equal Subset Sum18 minutes
  • Practice Problem 10 - Integer Replacement14 minutes
  • Practice Problem 11 - Decode Ways14 minutes
  • Practice Problem 12 - House Robber II12 minutes
  • Practice Problem 13 - Min Cost Climbing Stairs15 minutes
  • Practice Problem 14 - Longest Palindromic Substring18 minutes
  • Practice Problem 15 - Word Break11 minutes
  • Practice Problem 16 - Unique Paths12 minutes
  • Practice Problem 17 - Palindromic Substrings9 minutes
1 assignmentTotal 15 minutes
  • Dynamic Programming Theory + DP Practice Problems (1D + 2D + String DP) - Assessment15 minutes

In this module, we will explore bit manipulation techniques and how they can optimize problem-solving. You'll learn the key bitwise operators and solve practice problems, from finding a single number in an array to dividing integers using bit shifts. By the end of this section, you'll be proficient in using bitwise operations for efficient solutions.

What's included

10 videos1 assignment

10 videosTotal 82 minutes
  • Introduction to Bitwise Operators5 minutes
  • Common Bitwise Operators7 minutes
  • Leetcode #136 - Single Number - Java6 minutes
  • Leetcode #338 - Counting Bits - Java11 minutes
  • Leetcode #287 - Find the Duplicate Number - Java10 minutes
  • Leetcode #29 - Divide Two Integers - Java15 minutes
  • Leetcode #268 - Missing Number - Java6 minutes
  • Leetcode #191 - Number of 1 Bits - Java7 minutes
  • Leetcode #371 - Sum Of Two Integers - Java9 minutes
  • Leetcode #7 - Reverse Integer - Java7 minutes
1 assignmentTotal 15 minutes
  • Bit Manipulation Techniques + Leetcode Practice Problems - Assessment15 minutes

In this module, we will focus on the Disjoint Set (Union-Find) data structure, learning how it helps efficiently solve problems in graph theory. We'll implement Union-Find with optimizations to improve its performance and apply it to problems like cycle detection and finding connected components. This section will give you the tools to work with graph-based problems effectively.

What's included

7 videos1 assignment

7 videosTotal 34 minutes
  • Introduction to Disjoint Set Data Structure5 minutes
  • Understanding Disjoint Set Data Structure9 minutes
  • Implementing Disjoint Set Data Structure Part 14 minutes
  • Union By Rank Optimization6 minutes
  • Union By Rank Implementation4 minutes
  • Path Compression Optimization4 minutes
  • Path Compression Optimization Implementation2 minutes
1 assignmentTotal 15 minutes
  • Disjoint Set Data Structure - Union Find Algorithms - Assessment15 minutes

In this module, we will dive into graph theory, starting with essential concepts like directed vs. undirected graphs and weighted vs. unweighted graphs. You'll learn and implement graph traversal techniques like BFS and DFS, along with optimization algorithms such as Dijkstra’s and Prim’s. By the end of this section, you’ll be able to solve various graph-related problems with confidence.

What's included

48 videos1 assignment

48 videosTotal 371 minutes
  • What Are Graphs6 minutes
  • Directed vs Undirected Graphs5 minutes
  • Weighted vs Unweighted Graphs5 minutes
  • Terms Of Graphs Part 14 minutes
  • Types Of Graphs Part 14 minutes
  • Types Of Graphs Part 28 minutes
  • Implementing Graphs Part 16 minutes
  • Implementing Graphs Part 28 minutes
  • Graph Implementation Part 34 minutes
  • Graph Adjacency Matrix Demonstration6 minutes
  • Graph Adjacency List Demonstration5 minutes
  • Introduction To Traversals7 minutes
  • BFS Working9 minutes
  • BFS Implementation7 minutes
  • Rotting Oranges Property Solution8 minutes
  • BFS Property 18 minutes
  • BFS Over Binary Weighted Graphs7 minutes
  • Introduction to DFS7 minutes
  • DFS Iterative Implementation5 minutes
  • DFS Recursive Implementation5 minutes
  • DFS Important Properties4 minutes
  • Cycle Detection Part 19 minutes
  • Cycle Detection Part 24 minutes
  • Cycle Detection Part 34 minutes
  • Cycle Detection Implementation5 minutes
  • What Is Topological Sorting4 minutes
  • Topological Sorting Example 14 minutes
  • Single Source Shortest Path Algorithm4 minutes
  • Dijkstra's Algorithm7 minutes
  • Dijkstra's Algorithm Implementation12 minutes
  • Introduction To Bellman-Ford Algorithm4 minutes
  • Bellman-Ford Algorithm Working7 minutes
  • Bellman-Ford Algorithm Implementation6 minutes
  • Introduction To Minimum Spanning Tree3 minutes
  • Prim's Algorithm5 minutes
  • Prim's Algorithm Implementation5 minutes
  • Practice Problem 1 - Course Schedule15 minutes
  • Practice Problem 2 - Number of Islands14 minutes
  • Practice Problem 3 - Find the Town Judge10 minutes
  • Practice Problem 4 - Surrounded Regions17 minutes
  • Practice Problem 5 - Number of Enclaves10 minutes
  • Practice Problem 6 - Flood Fill6 minutes
  • Practice Problem 8 - Rotting Oranges18 minutes
  • Practice Problem 9 - Graph Valid Tree10 minutes
  • Practice Problem 10 - Number Of Connected Components In An Undirected Graph9 minutes
  • Practice Problem 11 - Pacific Atlantic Water25 minutes
  • Practice Problem 12 - Alien Dictionary17 minutes
  • Practice Problem 13 - Clone Graph9 minutes
1 assignmentTotal 15 minutes
  • Graphs Theory + Graph Practice Problems (BFS/DFS/Shortest Path Algorithm/MST) - Assessment15 minutes

In this module, we will explore the principles of greedy algorithms and their applications in optimization problems. You’ll tackle practice problems like "Best Time to Buy and Sell Stock II" and "Candy," learning how greedy strategies help find the most efficient solutions. By the end of this section, you’ll be able to apply greedy algorithms to real-world optimization challenges.

What's included

4 videos1 assignment

4 videosTotal 44 minutes
  • Introduction To Greedy Algorithms13 minutes
  • Practice Problem 1 - Minimum Add To Make Parentheses Valid7 minutes
  • Practice Problem 2 - Best Time To Buy And Sell Stock II8 minutes
  • Practice Problem 3 - Candy16 minutes
1 assignmentTotal 15 minutes
  • Greedy Algorithms - Assessment15 minutes

In this module, we will explore the fundamentals of game theory, focusing on strategic decision-making in competitive scenarios. You will solve problems such as "Nim’s Game," learning how to use optimal moves to determine the winner. By the end, you will have a solid understanding of game theory and how to apply it to solve problems in competitive environments.

What's included

1 video1 assignment

1 videoTotal 5 minutes
  • Practice Problem 1 - Nim's Game5 minutes
1 assignmentTotal 15 minutes
  • Game Theory - Assessment15 minutes

In this module, we will delve into advanced string matching algorithms, focusing on the Knuth-Morris-Pratt (KMP) algorithm. You will learn both brute force and optimized methods for string matching and subsequences. By the end of this section, you’ll be able to solve complex string matching problems using efficient algorithms.

What's included

10 videos1 assignment

10 videosTotal 101 minutes
  • Introduction To Pattern Matching7 minutes
  • Pattern Matching Brute Force8 minutes
  • Introduction to KMP Algorithm13 minutes
  • KMP Algorithm Version 1 - Extra Space10 minutes
  • Longest Prefix Suffix Brute Force Approach9 minutes
  • Longest Prefix Suffix Brute Force Implementation4 minutes
  • Longest Prefix Suffix Optimized Approach17 minutes
  • Longest Prefix Suffix Optimized Approach Implementation6 minutes
  • KMP Algorithm - Final Optimized Approach15 minutes
  • KMP Algorithm - Final Optimized Approach Implementation12 minutes
1 assignmentTotal 15 minutes
  • Advanced String Matching Algorithms - Assessment15 minutes

In this module, we will explore various string problems, starting with the "Longest Palindromic Substring." You'll learn how to solve string manipulation problems using dynamic programming and optimize your solutions for better performance. By the end of this section, you'll have the skills to tackle a range of challenging string problems efficiently.

What's included

1 video1 assignment

1 videoTotal 9 minutes
  • Practice Problem 1 - Longest Palindromic String9 minutes
1 assignmentTotal 15 minutes
  • String Problems - Assessment15 minutes

In this module, we will focus on segment trees, an advanced data structure that is essential for solving range queries and updates. You will learn how to build and implement segment trees, answering complex range queries efficiently. By the end of this section, you’ll be capable of using segment trees to optimize a variety of range-based problems.

What's included

7 videos1 reading3 assignments

7 videosTotal 86 minutes
  • Introduction to Range Sum Query Problem17 minutes
  • Introduction To Segment Tree - Building A Segment Tree8 minutes
  • Answering Queries Using Segment Trees11 minutes
  • Segment Tree Updating Values7 minutes
  • Segment Tree Build Function Implementation20 minutes
  • Segment Tree Query Function Implementation12 minutes
  • Segment Tree Update Function Implementation11 minutes
1 readingTotal 10 minutes
  • Conclusion to the Course 'Advanced Algorithms, Dynamic Programming & Graph Algorithms'10 minutes
3 assignmentsTotal 90 minutes
  • Full Course Practice Assessment15 minutes
  • Advanced Data Structure - Segment Trees - Assessment15 minutes
  • Full Course Assessment60 minutes

Earn a career certificate

Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.

Instructor

Offered by

Explore more from Algorithms

Why people choose Coursera for their career

👁 Image

Felipe M.

Learner since 2018
"To be able to take courses at my own pace and rhythm has been an amazing experience. I can learn whenever it fits my schedule and mood."
👁 Image

Jennifer J.

Learner since 2020
"I directly applied the concepts and skills I learned from my courses to an exciting new project at work."
👁 Image

Larry W.

Learner since 2021
"When I need courses on topics that my university doesn't offer, Coursera is one of the best places to go."
👁 Image

Chaitanya A.

"Learning isn't just about being better at your job: it's so much more than that. Coursera allows me to learn without limits."

Frequently asked questions

This course is focused on advanced algorithmic techniques and their real-world applications. It covers important topics like heaps, dynamic programming, graph algorithms, bit manipulation, and greedy algorithms. The course will guide you through the implementation of these algorithms and how to apply them to solve complex problems efficiently.

Upon completion of this course, you will be equipped with the knowledge to solve challenging algorithmic problems. You will be able to implement advanced algorithms like Dijkstra’s shortest path, dynamic programming solutions for optimization problems, and graph algorithms like BFS/DFS. Additionally, you will have the skills to approach problems involving heaps, bit manipulation, and greedy methods with confidence.

To get the most out of this course, you should have a basic understanding of algorithms and data structures, including concepts like arrays, linked lists, and basic sorting algorithms. Familiarity with programming languages such as Java or Python will also be helpful for implementing the algorithms taught in this course.

This course is aimed at intermediate learners who are familiar with basic data structures and algorithms and want to take their knowledge to the next level. It’s ideal for students, professionals, and anyone interested in mastering advanced algorithmic techniques to solve complex programming problems and prepare for technical interviews.

The course is approximately 18 hours of video content. The actual time to complete will depend on your pace, but it should take a few weeks if you’re working through the course actively, practicing the problems, and implementing the algorithms taught in the videos.

Yes, you can preview the first video and view the syllabus before you enroll. You must purchase the course to access content not included in the preview.

If you decide to enroll in the course before the session start date, you will have access to all of the lecture videos and readings for the course. You’ll be able to submit assignments once the session starts.

Once you enroll and your session begins, you will have access to all videos and other resources, including reading items and the course discussion forum. You’ll be able to view and submit practice assessments, and complete required graded assignments to earn a grade and a Course Certificate.

If you complete the course successfully, your electronic Course Certificate will be added to your Accomplishments page - from there, you can print your Course Certificate or add it to your LinkedIn profile.

This course is currently available only to learners who have paid or received financial aid, when available.

Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.

Financial aid available,