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
This course is part of Data Structures & Algorithms in Java + 150 Leetcode Problems Specialization
Included with
Ask Coursera
Recommended experience
Recommended experience
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
April 2026
12 assignments
See how employees at top companies are mastering in-demand skills
Build your subject-matter expertise
- 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 videos•Total 122 minutes
- Introduction To Heaps•11 minutes
- Implementation Of Heaps•10 minutes
- Insertion in Heaps•6 minutes
- Heap Insertion Implementation•12 minutes
- Deletion in Heaps•7 minutes
- Heapify•8 minutes
- Practice Problem 1 - Kth Largest Element In An Array•9 minutes
- Practice Problem 2 - Find Median from Data Stream•17 minutes
- Practice Problem 3 - Kth Largest Element In A Stream•11 minutes
- Leetcode #1046 - Last Stone Weight - Java•5 minutes
- Leetcode #23 - Merge K Sorted Lists•7 minutes
- Leetcode #253 - Meeting Rooms II•9 minutes
- Leetcode #347 - Top K Frequent Elements•8 minutes
2 readings•Total 20 minutes
- Introduction to the Course 'Advanced Algorithms, Dynamic Programming & Graph Algorithms'•10 minutes
- Full Specialization Resource•10 minutes
1 assignment•Total 15 minutes
- Heaps - Assessment•15 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 videos•Total 223 minutes
- Introduction to Dynamic Programming•12 minutes
- Practice Problem 1 - Climbing Stairs - Java•7 minutes
- Practice Problem 2 - Jump Game - Java•9 minutes
- Practice Problem 3 - Coin Change•20 minutes
- Practice Problem 4 - Target Sum•14 minutes
- Practice Problem 5 - Longest Common Subsequence•15 minutes
- Practice Problem 6 - House Robber•10 minutes
- Practice Problem 7 - Longest Increasing Subsequence•12 minutes
- Practice Problem 8 - Partition Equal Subset Sum•18 minutes
- Practice Problem 10 - Integer Replacement•14 minutes
- Practice Problem 11 - Decode Ways•14 minutes
- Practice Problem 12 - House Robber II•12 minutes
- Practice Problem 13 - Min Cost Climbing Stairs•15 minutes
- Practice Problem 14 - Longest Palindromic Substring•18 minutes
- Practice Problem 15 - Word Break•11 minutes
- Practice Problem 16 - Unique Paths•12 minutes
- Practice Problem 17 - Palindromic Substrings•9 minutes
1 assignment•Total 15 minutes
- Dynamic Programming Theory + DP Practice Problems (1D + 2D + String DP) - Assessment•15 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 videos•Total 82 minutes
- Introduction to Bitwise Operators•5 minutes
- Common Bitwise Operators•7 minutes
- Leetcode #136 - Single Number - Java•6 minutes
- Leetcode #338 - Counting Bits - Java•11 minutes
- Leetcode #287 - Find the Duplicate Number - Java•10 minutes
- Leetcode #29 - Divide Two Integers - Java•15 minutes
- Leetcode #268 - Missing Number - Java•6 minutes
- Leetcode #191 - Number of 1 Bits - Java•7 minutes
- Leetcode #371 - Sum Of Two Integers - Java•9 minutes
- Leetcode #7 - Reverse Integer - Java•7 minutes
1 assignment•Total 15 minutes
- Bit Manipulation Techniques + Leetcode Practice Problems - Assessment•15 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 videos•Total 34 minutes
- Introduction to Disjoint Set Data Structure•5 minutes
- Understanding Disjoint Set Data Structure•9 minutes
- Implementing Disjoint Set Data Structure Part 1•4 minutes
- Union By Rank Optimization•6 minutes
- Union By Rank Implementation•4 minutes
- Path Compression Optimization•4 minutes
- Path Compression Optimization Implementation•2 minutes
1 assignment•Total 15 minutes
- Disjoint Set Data Structure - Union Find Algorithms - Assessment•15 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 videos•Total 371 minutes
- What Are Graphs•6 minutes
- Directed vs Undirected Graphs•5 minutes
- Weighted vs Unweighted Graphs•5 minutes
- Terms Of Graphs Part 1•4 minutes
- Types Of Graphs Part 1•4 minutes
- Types Of Graphs Part 2•8 minutes
- Implementing Graphs Part 1•6 minutes
- Implementing Graphs Part 2•8 minutes
- Graph Implementation Part 3•4 minutes
- Graph Adjacency Matrix Demonstration•6 minutes
- Graph Adjacency List Demonstration•5 minutes
- Introduction To Traversals•7 minutes
- BFS Working•9 minutes
- BFS Implementation•7 minutes
- Rotting Oranges Property Solution•8 minutes
- BFS Property 1•8 minutes
- BFS Over Binary Weighted Graphs•7 minutes
- Introduction to DFS•7 minutes
- DFS Iterative Implementation•5 minutes
- DFS Recursive Implementation•5 minutes
- DFS Important Properties•4 minutes
- Cycle Detection Part 1•9 minutes
- Cycle Detection Part 2•4 minutes
- Cycle Detection Part 3•4 minutes
- Cycle Detection Implementation•5 minutes
- What Is Topological Sorting•4 minutes
- Topological Sorting Example 1•4 minutes
- Single Source Shortest Path Algorithm•4 minutes
- Dijkstra's Algorithm•7 minutes
- Dijkstra's Algorithm Implementation•12 minutes
- Introduction To Bellman-Ford Algorithm•4 minutes
- Bellman-Ford Algorithm Working•7 minutes
- Bellman-Ford Algorithm Implementation•6 minutes
- Introduction To Minimum Spanning Tree•3 minutes
- Prim's Algorithm•5 minutes
- Prim's Algorithm Implementation•5 minutes
- Practice Problem 1 - Course Schedule•15 minutes
- Practice Problem 2 - Number of Islands•14 minutes
- Practice Problem 3 - Find the Town Judge•10 minutes
- Practice Problem 4 - Surrounded Regions•17 minutes
- Practice Problem 5 - Number of Enclaves•10 minutes
- Practice Problem 6 - Flood Fill•6 minutes
- Practice Problem 8 - Rotting Oranges•18 minutes
- Practice Problem 9 - Graph Valid Tree•10 minutes
- Practice Problem 10 - Number Of Connected Components In An Undirected Graph•9 minutes
- Practice Problem 11 - Pacific Atlantic Water•25 minutes
- Practice Problem 12 - Alien Dictionary•17 minutes
- Practice Problem 13 - Clone Graph•9 minutes
1 assignment•Total 15 minutes
- Graphs Theory + Graph Practice Problems (BFS/DFS/Shortest Path Algorithm/MST) - Assessment•15 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 videos•Total 44 minutes
- Introduction To Greedy Algorithms•13 minutes
- Practice Problem 1 - Minimum Add To Make Parentheses Valid•7 minutes
- Practice Problem 2 - Best Time To Buy And Sell Stock II•8 minutes
- Practice Problem 3 - Candy•16 minutes
1 assignment•Total 15 minutes
- Greedy Algorithms - Assessment•15 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 video•Total 5 minutes
- Practice Problem 1 - Nim's Game•5 minutes
1 assignment•Total 15 minutes
- Game Theory - Assessment•15 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 videos•Total 101 minutes
- Introduction To Pattern Matching•7 minutes
- Pattern Matching Brute Force•8 minutes
- Introduction to KMP Algorithm•13 minutes
- KMP Algorithm Version 1 - Extra Space•10 minutes
- Longest Prefix Suffix Brute Force Approach•9 minutes
- Longest Prefix Suffix Brute Force Implementation•4 minutes
- Longest Prefix Suffix Optimized Approach•17 minutes
- Longest Prefix Suffix Optimized Approach Implementation•6 minutes
- KMP Algorithm - Final Optimized Approach•15 minutes
- KMP Algorithm - Final Optimized Approach Implementation•12 minutes
1 assignment•Total 15 minutes
- Advanced String Matching Algorithms - Assessment•15 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 video•Total 9 minutes
- Practice Problem 1 - Longest Palindromic String•9 minutes
1 assignment•Total 15 minutes
- String Problems - Assessment•15 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 videos•Total 86 minutes
- Introduction to Range Sum Query Problem•17 minutes
- Introduction To Segment Tree - Building A Segment Tree•8 minutes
- Answering Queries Using Segment Trees•11 minutes
- Segment Tree Updating Values•7 minutes
- Segment Tree Build Function Implementation•20 minutes
- Segment Tree Query Function Implementation•12 minutes
- Segment Tree Update Function Implementation•11 minutes
1 reading•Total 10 minutes
- Conclusion to the Course 'Advanced Algorithms, Dynamic Programming & Graph Algorithms'•10 minutes
3 assignments•Total 90 minutes
- Full Course Practice Assessment•15 minutes
- Advanced Data Structure - Segment Trees - Assessment•15 minutes
- Full Course Assessment•60 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
Explore more from Algorithms
- Status: Free Trial
- Status: Free Trial
- Status: Free Trial
- Status: Free Trial
Why people choose Coursera for their career
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.
More questions
Financial aid available,
