Dive into the world of algorithm design, a fundamental aspect of computer science. This course provides a comprehensive understanding of various algorithmic design paradigms such as divide and conquer, greedy methods, dynamic programming, backtracking, and branch and bound. You will explore fundamental graph algorithms, gain practical experience in solving complex graph-related problems, and delve into randomized algorithms and complexity classes.

Algorithm Design: Mastering Computational Problem Solving

Algorithm Design: Mastering Computational Problem Solving

Instructor: BITS Pilani Instructors Group
Access provided by Colegio de Estudios Superiores de Administracion - CESA
What you'll learn
Master divide and conquer techniques to solve complex problems and enhance algorithm efficiency in software development.
Apply dynamic programming for decision optimization, storing and reusing sub-problems to improve computational problem-solving.
Design and analyze graph algorithms, including shortest paths and minimum spanning trees, to address network challenges.
Utilize branch and bound methods for solving optimization problems like 0-1 knapsack and traveling salesman with precision.
Details to know

Add to your LinkedIn profile
107 assignments
See how employees at top companies are mastering in-demand skills

There are 9 modules in this course
Explore the basic framework needed for representing and analyzing algorithms. The module provides a comprehensive understanding of asymptotic notations and a brief discussion of how recursive algorithms are analyzed.
What's included
16 videos10 readings14 assignments
16 videos• Total 138 minutes
- Introducing Algorithm Design• 3 minutes
- Meet your Instructor: Prof. Febin Vahab• 1 minute
- Meet your Instructor: Prof. Rakesh Prasanna• 1 minute
- Notion of Algorithms• 13 minutes
- Methodologies for Analyzing Algorithms• 13 minutes
- Notion of Best Case, Average Case, and Worst Case• 8 minutes
- Basic Operation Method• 9 minutes
- Order of Growth of Algorithms• 11 minutes
- Asymptotic Notations: Part I• 8 minutes
- Asymptotic Notations: Part II• 12 minutes
- Algorithm Analysis: Insertion Sort• 9 minutes
- Analysis of Recursive Algorithms• 10 minutes
- Solving Recurrences: Backward Substitution• 7 minutes
- Solving Recurrences: Recursion Tree—Part I• 10 minutes
- Solving Recurrences: Recursion Tree—Part II• 7 minutes
- Solving Recurrences: Master Method• 16 minutes
10 readings• Total 100 minutes
- Course Overview• 10 minutes
- Recommended Reading: Methodologies for Analyzing Algorithms • 10 minutes
- Recommended Reading: Asymptotic Notation• 10 minutes
- Essential Reading: Notion and Analysis of Algorithms• 10 minutes
- Recommended Reading: The Iterative Substitution Method• 10 minutes
- Essential Reading: The Recursion Tree Method• 10 minutes
- Recommended Reading: The Recursion Tree Method for Solving Recurrences• 10 minutes
- Essential Reading: The Master Method• 10 minutes
- Recommended Reading: The Master Method for Solving Recurrences• 10 minutes
- Recommended Reading: Recursive Algorithm Analysis• 10 minutes
14 assignments• Total 72 minutes
- Practice Quiz: Notion of Algorithms• 3 minutes
- Practice Quiz: Methodologies for Analyzing Algorithms• 6 minutes
- Practice Quiz: Notion of Best Case, Average Case, and Worst Case• 3 minutes
- Practice Quiz: Basic Operation Method• 3 minutes
- Practice Quiz: Order of Growth of Algorithms• 6 minutes
- Practice Quiz: Asymptotic Notations: Part I• 3 minutes
- Practice Quiz: Asymptotic Notations: Part II• 3 minutes
- Practice Quiz: Introduction: Algorithm Analysis• 3 minutes
- Practice Quiz: Analysis of Recursive Algorithms• 12 minutes
- Practice Quiz: Solving Recurrences: Backward Substitution• 6 minutes
- Practice Quiz: Solving Recurrences: Recursion Tree—Part I• 3 minutes
- Practice Quiz: Solving Recurrences: Recursion Tree—Part II• 3 minutes
- Practice Quiz: Solving Recurrences: Master Method• 3 minutes
- Test Yourself: Analysis of Algorithms• 15 minutes
Explore techniques for breaking down complex problems into manageable subproblems, with applications in sorting, searching, and mathematical computations.
What's included
13 videos4 readings14 assignments
13 videos• Total 106 minutes
- Design Principles and Strategy• 11 minutes
- Analysis of Divide and Conquer Algorithms: Mergesort• 10 minutes
- Divide and Conquer Algorithm: Quicksort—Part I• 8 minutes
- Divide and Conquer Algorithm: Quicksort—Part II• 9 minutes
- Divide and Conquer Algorithm: Binary Search• 7 minutes
- Problem 1: Integer Multiplication Problem• 10 minutes
- Problem 2: Maximum Subarray Problem—Part I• 6 minutes
- Problem 2: Maximum Subarray Problem—Part II• 13 minutes
- Maximum Subarray Problem: Analysis• 5 minutes
- Strassen’s Matrix Multiplication Problem• 6 minutes
- Matrix Multiplication: A Simple Divide and Conquer Algorithm• 8 minutes
- Strassen’s Algorithm• 6 minutes
- Strassen’s Algorithm: Analysis• 5 minutes
4 readings• Total 40 minutes
- Recommended Reading: Divide-and-Conquer Recurrence Equations • 10 minutes
- Recommended Reading: Integer Multiplication• 10 minutes
- Recommended Reading: Maximum Subarray Problem• 10 minutes
- Recommended Reading: Strassen’s Algorithm for Matrix Multiplication • 10 minutes
14 assignments• Total 63 minutes
- Practice Quiz: Design Principles and Strategy• 3 minutes
- Practice Quiz: Analysis of Divide and Conquer Algorithms: Mergesort• 3 minutes
- Practice Quiz: Divide and Conquer Algorithm: Quicksort—Part I• 6 minutes
- Practice Quiz: Divide and Conquer Algorithm: Quicksort—Part II• 3 minutes
- Practice Quiz: Divide and Conquer Algorithm: Binary Search• 3 minutes
- Practice Quiz: Problem 1: Integer Multiplication Problem• 6 minutes
- Practice Quiz: Problem 2: Maximum Subarray Problem—Part I• 3 minutes
- Practice Quiz: Problem 2: Maximum Subarray Problem—Part II• 3 minutes
- Practice Quiz: Maximum Subarray Problem: Analysis• 3 minutes
- Practice Quiz: Strassen’s Matrix Multiplication Problem• 3 minutes
- Practice Quiz: Matrix Multiplication: A Simple Divide and Conquer Algorithm• 3 minutes
- Practice Quiz: Strassen’s Algorithm• 6 minutes
- Practice Quiz: Strassen’s Algorithm: Analysis• 3 minutes
- Test Yourself: Algorithm Design Technique• 15 minutes
In this module, you will gain insights into the algorithm design technique called the greedy method, which is a technique applicable to optimization problems, and how the method makes a series of greedy choices to construct an optimal solution (or close to optimal solution) for a given problem. You will also learn about greedy algorithms like fractional knapsack, activity selection problem, and job sequencing with deadlines.
What's included
9 videos4 readings9 assignments
9 videos• Total 70 minutes
- Change Making Problem• 5 minutes
- Greedy Strategy: Design Principle and Key Elements• 11 minutes
- Introduction to Knapsack Problem • 2 minutes
- Fractional Knapsack Algorithm and Analysis• 12 minutes
- Fractional Knapsack: Numerical Example• 6 minutes
- Task Scheduling Problem• 4 minutes
- Task Scheduling: Algorithm and Analysis• 14 minutes
- Job Sequencing with Deadlines: Algorithm and Analysis • 4 minutes
- Job Sequencing with Deadlines: Numerical Example• 12 minutes
4 readings• Total 40 minutes
- Recommended Reading: Greedy Strategy: Principles and Elements• 10 minutes
- Recommended Reading: The Fractional Knapsack Problem • 10 minutes
- Recommended Reading: Task Scheduling• 10 minutes
- Recommended Reading: Job Sequencing with Deadlines• 10 minutes
9 assignments• Total 42 minutes
- Practice Quiz: Change Making Problem• 3 minutes
- Practice Quiz: Greedy Strategy: Design Principle and Key Elements• 12 minutes
- Practice Quiz: Introduction to Knapsack Problem • 9 minutes
- Practice Quiz: Fractional Knapsack Algorithm and Analysis• 3 minutes
- Practice Quiz: Fractional Knapsack: Numerical Example• 3 minutes
- Practice Quiz: Task Scheduling Problem• 3 minutes
- Practice Quiz: Task Scheduling: Algorithm and Analysis• 3 minutes
- Practice Quiz: Job Sequencing with Deadlines: Algorithm and Analysis • 3 minutes
- Practice Quiz: Job Sequencing with Deadlines: Numerical Example• 3 minutes
In this module, you will gain insight into dynamic programming, which is a powerful problem-solving technique used in computer science to solve optimization and decision problems. You will also be introduced to the principles, algorithms, and applications of dynamic programming and learn how to break down complex problems into smaller sub-problems, store and reuse solutions to these sub-problems, and ultimately design efficient algorithms for various real-world challenges.
What's included
8 videos3 readings9 assignments
8 videos• Total 78 minutes
- Dynamic Programming Paradigm: The General Technique• 5 minutes
- Fibonacci Numbers: Top-Down and Bottom-Up Approaches—Part I• 9 minutes
- Fibonacci Numbers: Top-Down and Bottom-Up Approaches—Part II• 10 minutes
- Matrix Chain Product (MCP)• 5 minutes
- MCP: Applying Dynamic Programming• 7 minutes
- MCP: Numeric Example• 9 minutes
- MCP: Bottom-Up Approach• 16 minutes
- 0/1 Knapsack Problem• 18 minutes
3 readings• Total 30 minutes
- Recommended Reading: Dynamic Programming: The General Technique • 10 minutes
- Recommended Reading: Matrix Chain Product• 10 minutes
- Recommended Reading: The 0/1 Knapsack Problem• 10 minutes
9 assignments• Total 60 minutes
- Practice Quiz: Dynamic Programming Paradigm: The General Technique• 6 minutes
- Practice Quiz: Fibonacci Numbers: Top-Down and Bottom-Up Approaches—Part I• 6 minutes
- Practice Quiz: Fibonacci Numbers: Top-Down and Bottom-Up Approaches—Part II• 3 minutes
- Practice Quiz: Matrix Chain Product (MCP)• 3 minutes
- Practice Quiz: MCP: Applying Dynamic Programming• 3 minutes
- Practice Quiz: MCP: Numeric Example• 3 minutes
- Practice Quiz: MCP: Bottom-Up Approach• 3 minutes
- Practice Quiz: 0/1 Knapsack Problem• 3 minutes
- Test Yourself: Algorithm Design Techniques• 30 minutes
In this module, you will explore the graph concepts, different types of graphs, and how we can represent a graph in a computer. You will also gain insight into how to model problems as graphs and design efficient algorithms for a wide range of graph-related challenges like minimum spanning trees, single source shortest paths, all pair shortest paths.
What's included
8 videos3 readings8 assignments1 discussion prompt
8 videos• Total 71 minutes
- Review: Graph Properties and Types• 6 minutes
- Review: Graph Representations• 7 minutes
- Path, Cycle, Subgraphs, Connectivity, Trees, and Forests• 10 minutes
- Reachability and Strong Connectivity• 6 minutes
- Review: Graph Traversal—Breadth First Search (BFS) and Analysis• 13 minutes
- Review: Graph Traversal—Depth First Search (DFS) and Analysis• 10 minutes
- BFS and DFS Comparison• 4 minutes
- Topological Sort: Algorithm and Analysis• 15 minutes
3 readings• Total 30 minutes
- Recommended Reading: Graph Terminologies and Representations• 10 minutes
- Recommended Reading: Graph Traversals• 10 minutes
- Recommended Reading: Topological Sorting• 10 minutes
8 assignments• Total 48 minutes
- Practice Quiz: Review: Graph Properties and Types• 6 minutes
- Practice Quiz: Review: Graph Representations• 6 minutes
- Practice Quiz: Path, Cycle, Subgraphs, Connectivity, Trees, and Forests• 6 minutes
- Practice Quiz: Reachability and Strong Connectivity• 6 minutes
- Practice Quiz: Review: Graph Traversal—Breadth First Search (BFS) and Analysis• 3 minutes
- Practice Quiz: Review: Graph Traversal—Depth First Search (DFS) and Analysis• 6 minutes
- Practice Quiz: BFS and DFS Comparison• 12 minutes
- Practice Quiz: Topological Sort: Algorithm and Analysis• 3 minutes
1 discussion prompt• Total 15 minutes
- Graph Algorithms Analysis• 15 minutes
In this module, you will explore a wide range of graph-related problems like finding the minimum spanning trees, single source shortest paths, and all pair shortest paths.
What's included
8 videos3 readings9 assignments
8 videos• Total 100 minutes
- Minimum Spanning Tree• 8 minutes
- Kruskal’s Design Strategy • 12 minutes
- MST: Prim’s Design Strategy • 14 minutes
- Shortest Paths and Properties • 6 minutes
- The Bellman-Ford Algorithm • 21 minutes
- Dijkstra’s Algorithm • 16 minutes
- Transitive Closure: Design Strategy • 14 minutes
- All Pair Shortest Path: Floyd’s Design Strategy• 9 minutes
3 readings• Total 30 minutes
- Recommended Reading: MST, Kruskal’s Design Strategy and Prim’s Design Strategy• 10 minutes
- Recommended Reading: Single Source Shortest Path• 10 minutes
- Recommended Readings: Transitive Closure and All Pair Shortest Path• 10 minutes
9 assignments• Total 78 minutes
- Practice Quiz: Minimum Spanning Tree • 6 minutes
- Practice Quiz: Kruskal’s Design Strategy • 6 minutes
- Practice Quiz: MST: Prim’s Design Strategy • 6 minutes
- Practice Quiz: Shortest Paths and Properties • 6 minutes
- Practice Quiz: The Bellman-Ford Algorithm • 6 minutes
- Practice Quiz: Dijkstra’s Algorithm • 6 minutes
- Practice Quiz: Transitive Closure: Design Strategy • 6 minutes
- Practice Quiz: All Pair Shortest Path: Floyd’s Design Strategy• 6 minutes
- Test Yourself: Graph Algorithms Analysis • 30 minutes
In this module, you will learn the concept of backtracking and its applications in problem-solving. Backtracking is a systematic algorithmic approach used to find solutions to problems where you need to make a sequence of decisions and if a decision leads to an unsatisfactory outcome, you backtrack to the previous decision and try an alternative path. This module covers the fundamentals of state space and explores specific problems such as the N-queen problem (4-queen problem), graph coloring problem, sum of subsets, and Hamilton cycle. You will also learn how to apply backtracking to find solutions to these problems.
What's included
33 videos9 readings31 assignments1 discussion prompt
33 videos• Total 192 minutes
- Definition of a State in a State Space • 5 minutes
- Finite and Infinite State Space • 7 minutes
- Traversing Through State Space • 3 minutes
- State Space Tree • 2 minutes
- Introduction to Backtracking • 4 minutes
- DFS as an Example of Backtracking with State Space Tree • 5 minutes
- Definition of the State in the N-Queen Problem• 4 minutes
- Traversing Through All State Spaces Using Recursion• 4 minutes
- Backtracking Strategy Explanation• 2 minutes
- Backtracking Solution versus Solution Without Backtracking• 7 minutes
- Time Complexity Comparison• 5 minutes
- Graph Coloring Problem: Definitions and Applications• 4 minutes
- Naive Approach to Color with All Possible Colors • 2 minutes
- Backtracking Strategy with Visualization• 5 minutes
- Problem and State Definition • 7 minutes
- Naïve Approach to Find Through all Possible Subsets• 4 minutes
- Backtracking Code and State Space Tree• 4 minutes
- Time Complexity Analysis• 5 minutes
- Introduction to Least Cost Search• 9 minutes
- Application Examples of Least Cost Search• 6 minutes
- Practical Implementation of Least Cost Search• 5 minutes
- FIFO Data Structures, Branching, and Bounding Framework• 6 minutes
- Analysis and Implementation of FIFO Approach• 3 minutes
- 0/1 Knapsack Problem Using FIFO Branch and Bounds• 20 minutes
- Comparison with Other Branch and Bound Strategies: Challenges and Limitations• 3 minutes
- Optimization Techniques with Examples: Network Routing in Telecommunications and Vehicle Routing for Deliveries• 5 minutes
- Bounding Strategies and LC Branching Technique• 7 minutes
- 0/1 Knapsack Problem Using LC Branch and Bounds• 11 minutes
- Comparison with Other Branch and Bound Strategies, Challenges and Limitations• 3 minutes
- Optimization Techniques with Examples: Project Scheduling and Resource Allocation• 6 minutes
- Introduction to Job Sequencing with Timebound• 8 minutes
- Implementation and Analysis with Optimization Strategy• 5 minutes
- Job Sequencing with Deadline• 13 minutes
9 readings• Total 90 minutes
- Recommended Reading: Introduction to State Space • 10 minutes
- Recommende Reading: N-queen Problem (4 Queen Problem)• 10 minutes
- Recommended Reading: Graph Coloring Problem • 10 minutes
- Recommended Reading: Sum of Subset• 10 minutes
- Recommended Reading: Graph Terminologies and Representations• 10 minutes
- Recommended Reading: The Principles of LC Branch and Bound • 10 minutes
- Recommended Reading: First-In-First-Out (FIFO) Branch and Bound• 10 minutes
- Recommended Reading: LC Branch and Bound• 10 minutes
- Essential Reading: Recent Advances in Searching, Branching, and Pruning Within the Realm of Branch-and-Bound Algorithms• 10 minutes
31 assignments• Total 162 minutes
- Practice Quiz: Definition of a State in a State Space • 3 minutes
- Practice Quiz: Finite and Infinite State Space • 3 minutes
- Practice Quiz: Traversing Through State Space • 3 minutes
- Practice Quiz: State Space Tree • 3 minutes
- Practice Quiz: Introduction to Backtracking • 3 minutes
- Practice Quiz: DFS as an Example of Backtracking with State Space Tree • 3 minutes
- Practice Quiz: Definition of the State in the N-Queen Problem• 3 minutes
- Practice Quiz: Traversing Through all State Spaces Using Recursion• 3 minutes
- Practice Quiz: Backtracking Strategy Explanation• 3 minutes
- Practice Quiz: Backtracking Solution, Optimization Over Without Backtracking• 3 minutes
- Practice Quiz: Time Complexity Comparison• 3 minutes
- Practice Quiz: Graph Coloring Problem: Definitions and Applications• 6 minutes
- Practice Quiz: Naive Approach to Color with All Possible Colors • 6 minutes
- Practice Quiz: Backtracking Strategy with Visualization• 3 minutes
- Practice Quiz: Problem and State Definition • 3 minutes
- Practice Quiz: Naïve Approach to Find Through all Possible Subsets• 6 minutes
- Practice Quiz: Backtracking Code and State Space Tree• 3 minutes
- Practice Quiz: Time Complexity Analysis• 3 minutes
- Practice Quiz: Introduction to Least Cost Search• 3 minutes
- Practice Quiz: Application Examples of Least Cost Search• 6 minutes
- Practice Quiz: Practical Implementation of Least Cost Search• 9 minutes
- Practice Quiz: FIFO Data Structures, Branching, and Bounding Framework• 6 minutes
- Practice Quiz: Analysis and Implementation of FIFO Approach• 3 minutes
- Practice Quiz: Comparison with Other Branch and Bound Strategies: Challenges and Limitations• 6 minutes
- Practice Quiz: Optimization Techniques with Examples: Network Routing in Telecommunications and Vehicle Routing for Deliveries• 3 minutes
- Practice Quiz: Bounding Strategies and LC: Branching Technique• 6 minutes
- Practice Quiz: Comparison with Other Branch and Bound Strategies, Challenges and Limitations• 6 minutes
- Practice Quiz: Optimization Techniques with Examples: Project Scheduling and Resource Allocation• 6 minutes
- Practice Quiz: Introduction to Job Sequencing with Timebound• 9 minutes
- Practice Quiz: Implementation and Analysis with Optimization Strategy• 6 minutes
- Test Yourself: Backtracking and Branch & Bound Design Techniques• 30 minutes
1 discussion prompt• Total 15 minutes
- Design Techniques: Backtracking• 15 minutes
In this module, you will learn the principles and applications of randomized algorithms. Randomized algorithms use randomization as a fundamental tool to solve computational problems efficiently and often provide probabilistic guarantees of correctness. This module explores several key randomized algorithms, including randomized quicksort, min-cut algorithm, random permutation, convex hull, and Bloom filters. You will also learn how to analyze the expected performance and probabilistic guarantees of these algorithms in various problem-solving scenarios.
What's included
10 videos2 readings8 assignments1 discussion prompt
10 videos• Total 66 minutes
- Randomized Algorithm• 7 minutes
- Classical Quicksort• 14 minutes
- Random Selection of Pivot• 6 minutes
- Randomized Quicksort Algorithm• 9 minutes
- Average Time Complexity Comparison• 3 minutes
- Min-Cut Problem Definition• 6 minutes
- Contracting Edges• 4 minutes
- Classical Algorithm• 8 minutes
- Karger’s Algorithm for Finding the Min-Cut• 6 minutes
- Time Complexity Comparison• 4 minutes
2 readings• Total 20 minutes
- Recommended Reading: Randomized Version of Quicksort • 10 minutes
- Recommended Reading: Min Cut Algorithm • 10 minutes
8 assignments• Total 39 minutes
- Practice Quiz: Randomized Algorithm• 12 minutes
- Random Selection of Pivot• 3 minutes
- Practice Quiz: Randomized Quicksort Algorithm• 3 minutes
- Practice Quiz: Average Time Complexity Comparison• 3 minutes
- Practice Quiz: Min-Cut Problem Definition• 3 minutes
- Practice Quiz: Contracting Edges• 3 minutes
- Practice Quiz: Karger’s Algorithm for Finding the Min-Cut• 6 minutes
- Practice Quiz: Time Complexity Comparison• 6 minutes
1 discussion prompt• Total 15 minutes
- Randomized Algorithms• 15 minutes
In this module, you will gain a foundational understanding of P, NP, NP-complete, and NP-hard problems, as well as key concepts like satisfiability problem (SAT), polynomial time reducibility, and common NP-complete problems.
What's included
12 videos1 reading5 assignments
12 videos• Total 96 minutes
- Introduction to Complexity Classes • 23 minutes
- Definition of P and NP Classes and Examples • 9 minutes
- NP-Completeness: Importance • 7 minutes
- Understanding NP-Completeness • 5 minutes
- Reductions in Complexity Theory• 5 minutes
- NP-Hardness and NP-Hard versus NP-Complete• 4 minutes
- Satisfiability Problem (SAT) as an NP-Complete Problem• 11 minutes
- Polynomial Time Reducibility: Definition and Examples • 7 minutes
- NP-Complete Problems: Introduction • 4 minutes
- NP-Complete Problems: Clique and Set-Cover Problems and Hamiltonian Cycle Problem—Part I• 4 minutes
- NP-Complete Problems: Clique and Set-Cover Problems and Hamiltonian Cycle Problem—Part II• 9 minutes
- NP-Complete Problems: Clique and Set-Cover Problems and Hamiltonian Cycle Problem—Part III• 8 minutes
1 reading• Total 10 minutes
- Recommended Reading: Understanding P, NP, NP-Complete, and NP-Hard Problems• 10 minutes
5 assignments• Total 60 minutes
- Practice Quiz: Introduction to Complexity Classes • 6 minutes
- Practice Quiz: Understanding NP-Completeness • 9 minutes
- Practice Quiz: Reductions in Complexity Theory• 6 minutes
- Practice Quiz: NP-Complete Problems: Clique and Set-Cover Problems and Hamiltonian Cycle Problem • 9 minutes
- Test Yourself: Randomized Algorithms and Computational Problems• 30 minutes
Instructor

Offered by

Offered by

Birla Institute of Technology & Science, Pilani (BITS Pilani) is one of only ten private universities in India to be recognised as an Institute of Eminence by the Ministry of Human Resource Development, Government of India. It has been consistently ranked high by both governmental and private ranking agencies for its innovative processes and capabilities that have enabled it to impart quality education and emerge as the best private science and engineering institute in India. BITS Pilani has four international campuses in Pilani, Goa, Hyderabad, and Dubai, and has been offering bachelor's, master’s, and certificate programmes for over 58 years, helping to launch the careers for over 1,00,000 professionals.
Why people choose Coursera for their career

Felipe M.

Jennifer J.

Larry W.

Chaitanya A.
Explore more from Computer Science
CClemson University
Course

Course
NNortheastern University
Course
