Algorithms and Problem Solving with Advanced Techniques
Algorithms and Problem Solving with Advanced Techniques
This course is part of Data Structures & Algorithms in JavaScript Specialization
Included with
Learn more
Ask Coursera
Recommended experience
Recommended experience
What you'll learn
Learn how to solve complex problems using dynamic programming techniques.
Understand greedy algorithms and their application in optimization problems.
Master graph algorithms, including BFS, DFS, and shortest path techniques.
Gain expertise in bitwise operations to solve optimization and number-based problems.
Details to know
May 2026
7 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 5 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. In this course, you will master advanced problem-solving techniques and learn to approach algorithmic challenges with a structured mindset. By covering key techniques like dynamic programming, greedy algorithms, and graph theory, this course will equip you with the skills to solve complex problems with confidence. You'll learn how to break down large problems into smaller subproblems and optimize your solutions for efficiency and scalability. The course starts with an in-depth exploration of dynamic programming, where you will implement various problems and learn how to select the most effective strategies for solving them. Then, you'll move into greedy algorithms and their applications, followed by a deep dive into graph algorithms. The course covers graph traversal methods like BFS and DFS, as well as more complex topics like Dijkstra's algorithm, Bellman-Ford, and minimum spanning trees. Each section is accompanied by practical problems to reinforce your learning. As you progress, you'll develop critical thinking skills and a deep understanding of algorithmic principles. This course encourages hands-on problem-solving, with each problem designed to stretch your ability to approach problems from multiple angles. You'll gain practical experience in coding and problem-solving, ensuring you're well-prepared for real-world technical challenges. The course is ideal for those who already have basic programming knowledge and want to deepen their understanding of algorithms and problem-solving techniques. Whether youβre preparing for technical interviews or looking to enhance your algorithmic thinking, this course is tailored to boost your skill set. It is especially suitable for computer science enthusiasts, developers, and those aspiring to excel in technical fields. By the end of the course, you will be able to apply dynamic programming, greedy algorithms, graph traversal methods, and backtracking to solve complex problems, optimize algorithms, and enhance your problem-solving efficiency.
In this module, we will introduce you to dynamic programming as a technique to break complex problems into simpler subproblems. You will learn how to apply both top-down and bottom-up approaches to solve various challenges, optimizing solutions using previously computed results.
What's included
17 videos2 readings1 assignment
17 videosβ’Total 193 minutes
- Introduction to Dynamic Programmingβ’12 minutes
- Dynamic Programming Implementationβ’4 minutes
- Top Down vs Bottom Upβ’9 minutes
- Practice Problem 1 - Climbing Stairsβ’10 minutes
- Practice Problem 2 - Jump Gameβ’14 minutes
- Practice Problem 3 - Coin Changeβ’13 minutes
- Practice Problem 4 - Target Sumβ’14 minutes
- Practice Problem 5 - Longest Increasing Subsequenceβ’13 minutes
- Practice Problem 6 - Longest Common Subsequenceβ’12 minutes
- Practice Problem 7 - House Robberβ’14 minutes
- Practice Problem 8 - House Robber IIβ’8 minutes
- Practice Problem 9 - 0-1 Matrixβ’11 minutes
- Practice Problem 10 - Integer Replacementβ’9 minutes
- Practice Problem 11 - Decode Waysβ’16 minutes
- Practice Problem 12 - Partition Equals Subset Sumβ’14 minutes
- Practice Problem 13 - Longest Palindromic Substringβ’11 minutes
- Practice Problem 14 - Min Cost Climbing Stairsβ’8 minutes
2 readingsβ’Total 20 minutes
- Introduction to the Course 'Algorithms and Problem Solving with Advanced Techniques'β’10 minutes
- Full Specialization Resourceβ’10 minutes
1 assignmentβ’Total 15 minutes
- Dynamic Programming - Assessmentβ’15 minutes
In this module, we will explore the concept of greedy algorithms, a class of algorithms that make locally optimal choices at each step. You will learn to identify when greedy strategies can provide optimal or near-optimal solutions to a problem.
What's included
1 video1 assignment
1 videoβ’Total 13 minutes
- Introduction to Greedy Algorithmsβ’13 minutes
1 assignmentβ’Total 15 minutes
- Greedy Algorithms - Assessmentβ’15 minutes
In this module, we will dive into the world of graphs, examining their various types and structures. You will learn graph traversal techniques such as BFS and DFS and explore advanced algorithms like Dijkstraβs and Bellman-Ford for shortest paths, as well as Primβs for minimum spanning trees.
What's included
41 videos1 assignment
41 videosβ’Total 274 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
- Implementing Graphs Part 3β’4 minutes
- Adjacency Matrix Demonstrationβ’8 minutes
- Adjacency List Implementation Demonstrationβ’5 minutes
- Introduction to Traversalsβ’7 minutes
- BFS Workingβ’9 minutes
- BFS Implementationβ’9 minutes
- BFS Property #1β’8 minutes
- BFS over Binary Weighted Graphsβ’7 minutes
- Introduction to DFSβ’7 minutes
- DFS Iterative Implementationβ’6 minutes
- DFS Recursive Implementationβ’4 minutes
- DFS Important Propertiesβ’5 minutes
- Cycle Detection Part 1β’9 minutes
- Cycle Detection Part 2β’4 minutes
- Cycle Detection Part 3β’4 minutes
- Cycle Detection Implementationβ’7 minutes
- What is Topological Sorting?β’4 minutes
- Topological Sorting Example 1β’4 minutes
- Single Source Shortest Path Algorithmβ’4 minutes
- Djikstra's Algorithmβ’7 minutes
- Djikstra's Algorithm Implementationβ’14 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
- Practice Problem 1 - Course Scheduleβ’10 minutes
- Practice Problem 2 - Number of Islandsβ’12 minutes
- Practice Problem 3 - Find the Town Judgeβ’9 minutes
- Practice Problem 4 - Surrounded Regionsβ’13 minutes
- Practice Problem 5 - Number of Enclavesβ’9 minutes
- Practice Problem 6 - Network Delay Timeβ’7 minutes
- Practice Problem 7 - Flood Fillβ’6 minutes
1 assignmentβ’Total 15 minutes
- Graphs - Assessmentβ’15 minutes
In this module, we will cover the powerful backtracking technique, enabling you to explore all potential solutions to problems by undoing steps when necessary. Through hands-on examples like N Queens and Combination Sum, you will develop the skills to apply backtracking in algorithm design.
What's included
5 videos1 assignment
5 videosβ’Total 54 minutes
- What is Backtracking?β’14 minutes
- Backtracking Example 1β’8 minutes
- Practice Problem 1 - Subsetsβ’8 minutes
- Practice Problem 2 - Combination Sumβ’12 minutes
- Practice Problem 3 - N Queensβ’11 minutes
1 assignmentβ’Total 15 minutes
- Backtracking - Assessmentβ’15 minutes
In this module, we will introduce you to bitwise operations, which allow you to manipulate numbers at the bit level. You will learn how to leverage bit magic to solve problems efficiently, including detecting duplicates, reversing integers, and counting bits.
What's included
10 videos1 reading3 assignments
10 videosβ’Total 79 minutes
- Introduction to Bitwise Operatorsβ’5 minutes
- Common Bitwise Operatorsβ’7 minutes
- Practice Problem 1 - Single Numberβ’6 minutes
- Practice Problem 2 - Counting Bitsβ’10 minutes
- Practice Problem 3 - Sum of Two Integersβ’8 minutes
- Practice Problem 4 - Missing Numbersβ’5 minutes
- Practice Problem 5 - Divide Two Integersβ’12 minutes
- Practice Problem 6 - Reverse Integerβ’7 minutes
- Practice Problem 7 - Number of 1 Bitsβ’7 minutes
- Practice Problem 8 - Find the Duplicate Numberβ’12 minutes
1 readingβ’Total 10 minutes
- Conclusion to the Course ' Algorithms and Problem Solving with Advanced Techniques'β’10 minutes
3 assignmentsβ’Total 90 minutes
- Bitmagic - Assessmentβ’15 minutes
- Full Course Assessmentβ’60 minutes
- Full Course Practice Assessmentβ’15 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
Advance your career with an online degree
Earn a degree from world-class universities - 100% online
Frequently asked questions
This course covers advanced algorithmic techniques such as dynamic programming, greedy algorithms, graph theory, backtracking, and bit manipulation. These techniques are fundamental for solving complex problems efficiently and are widely applicable in fields like software development, data science, and competitive programming. By mastering these methods, learners can optimize solutions for real-world challenges and improve their problem-solving skills.
"Algorithms and Problem Solving with Advanced Techniques" introduces learners to essential algorithmic strategies. The course emphasizes dynamic programming, greedy algorithms, graph algorithms, backtracking, and bit manipulation. It provides both theoretical understanding and practical implementation of these methods, allowing learners to solve advanced computational problems effectively.
After completing this course, you will be equipped with the knowledge and skills to solve complex algorithmic problems. You will understand how to apply dynamic programming, graph traversal, backtracking, and bitwise techniques to optimize solutions for real-world scenarios. This will enhance your problem-solving capabilities, especially for coding interviews and competitive programming.
More questions
Financial aid available,
