Topic Name Description
Course Introduction Page Course Syllabus
Page Course Terms of Use
Unit 1: Introduction to Algorithms Page Unit 1 Learning Outcomes
1.1: Introduction to Algorithms Page Massachusetts Institute of Technology: Dr. Charles E. Leiserson's "Merge Sort"

Watch this video to learn the basics of the algorithm. You can skip the first 17 minutes of the video as they talk about MIT class related logistics for the course.

1.2: Introduction to Framework for Algorithm Analysis Page Indian Institute of Technology, Bombay: Dr. Abhiram Ranade's "Framework for Algorithm Analysis"

Watch this video to learn about the basics of the algorithm analysis and associated framework.

1.3: The Importance of Algorithms URL Topcoder: "Importance of Algorithms"

Read this article for an overview of importance of algorithms as well as a listing of some of the key algorithm areas.

1.4: Control Instructions URL Algorithms: "Introduction"

Read this page to get an introduction to algorithms.

URL Introduction to Algorithms Assignment

Complete all questions in this assignment. There are three questions on finding the complexity of the algorithm using the pseudo code and finding the number of instructions executed to solve the problem. Each instruction is associated with some constant cost for execution. You can check your answers against the Answer Key.

Unit 2: Introduction to Analysis of Algorithms Page Unit 2 Learning Outcomes
2.1: Introduction to Algorithms Page Massachusetts Institute of Technology: Dr. Erik Demaine's "Introduction to Algorithms"

Watch this video to learn about the basics of the algorithm.

2.2: Asymptotic Analysis Page University of California, Berkeley: Dr. Jonathan Shewchuk's "Asymptotic Analysis"

Watch this video to learn about the ideas behind the use of asymptotic analysis in algorithms. 

2.3: Introduction to Analysis of Algorithms URL University of California, Berkeley: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's "Algorithms: Prologue"

Read the Prologue of S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's book Algorithms.

2.4: Master Theorem URL Wikipedia: "Master Theorem"

Read this article to learn about the use of Master Theorem in analyzing recursive problems.

URL Introduction to Analysis of Algorithms Assignment

Complete all questions in this assignment. There are six questions listed in two parts. The first part requires solving the problems using the Master Theorem discussed in the lectures. The second part requires solving for complexity of the algorithms using the first principles. You can check your answers against the Answer Key.

Unit 3: Divide and Conquer Method Page Unit 3 Learning Outcomes
3.1: Introduction to Divide and Conquer Algorithms URL University of California, Berkeley: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's "Divide-and-Conquer Algorithms"

Read Chapter 2 of S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's book Algorithms.

3.2: Recurrences in Algorithms Page Massachusetts Institute of Technology: Dr. Erik Demaine's "Introduction to Algorithms"

Watch this lecture to learn about the basics of the algorithm.

3.3: Recursion URL Wikipedia: "Recursion"

Read this article to learn about the mathematical concepts behind the idea of recursion.

URL Divide and Conquer Assignment

Complete all questions in this assignment. There are two questions on the divide-and-conquer strategy. The first one involves a search strategy, whereas the second one involves a multiplication strategy. You can check your answers against the Answer Key.

Unit 4: Sorting Algorithms Page Unit 4 Learning Outcomes
4.1: Introduction to Sorting Algorithms Page Knight School: "Algorithmic Thinking"

Watch this video to learn about sorting algorithms.

Page "Google Interview with Barack Obama"

Watch this video to learn about sorting algorithms.

4.2: Sorting Algorithms - Part I Page Massachusetts Institute of Technology: Dr. Charles E. Leiserson's "Quicksort, Randomized Algorithms"

Watch this video to learn about the basics of sorting algorithms.

4.3: Sorting Algorithms - Part II Page Massachusetts Institute of Technology: Dr. Erik Demaine's "Introduction to Algorithms"

Watch this video to learn about various types of sorting algorithms.

4.4: Popular Sorting Algorithms URL Wikipedia: "Sorting Algorithms"

Read this article to learn about the popular sorting algorithms in use today.

URL Sorting Assignment

Please complete all questions in this assignment. There are two questions on the sorting algorithms. The first one involves the merge-sort algorithm and requires you to work through the merging part of the algorithm. The second one then asks you to implement the merging work that you just completed in the first problem. You can check your answers against the Answer Key.

Unit 5: Dynamic Programming Page Unit 5 Learning Outcomes
5.1: Introduction to Dynamic Programming URL University of California, Berkeley: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's "Dynamic Programming"

Read Chapter 6 of S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's book Algorithms.

5.2: Dynamic Programming Page Massachusetts Institute of Technology: Dr. Charles E. Leiserson's "Dynamic Programming, Longest Common Subsequence"

Watch this video to learn about dynamic programming concepts.

5.3: The Knapsack Problem Page James Bedford's "Dynamic Programming - The Knapsack Problem"

Watch this video series to learn about how the knapsack problem is solved using dynamic programming techniques.

5.4: Dynamic Programming Examples URL Wikipedia: "Dynamic Programming"

Read this article to learn about the different types of problems to which dynamic programming techniques are applied.

URL Dynamic Programming Assignment

Complete all questions in this activity. There is one question on the dynamic-programming paradigm that requires two implementations. The first one involves the use of the regular approach to matrix multiplication, and the second one requires the dynamic programming approach. You have to compare the runtimes for the two approaches. You can check your answers against the Answer Key.

Unit 6: Graph Theory and Graph Algorithms Page Unit 6 Learning Outcomes
6.1: Introduction to Graph Theory URL University of California, San Diego: Edward A. Bender and S. G. Williamson's "Basic Concepts in Graph Theory"

Read this chapter for an introduction to graph theory.

6.2: Paths in Graphs URL University of California, Berkeley: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's "Paths in Graphs"

Read Chapter 4 from S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's book Algorithms.

6.3: Graph Data Structures Page PatrickJMT: "Graph Theory - An Introduction"

Watch this video to learn about data structures used in graph algorithms.

6.4: Graph Theory Algorithms - Part I Page Massachusetts Institute of Technology: Dr. Charles E. Leiserson's "Greedy Algorithms, Minimum Spanning Trees"

Watch this video to learn about graph theory concepts, greedy algorithms, and minimum spanning trees.

6.5: Graph Theory Algorithms - Part II Page Massachusetts Institute of Technology: Dr. Charles E. Leiserson's "Shortest Paths I: Properties, Dijkstra's Algorithm, Breadth-first Search"

Watch this video to learn about shortest path problems.

URL Graph Theory and Graph Algorithms Assignment

Complete all questions in this assignment. There is one question on the breadth-first search implementation and one on depth-first search implementation. You can check your answers against the Answer Key.

Unit 7: Greedy Algorithms Page Unit 7 Learning Outcomes
7.1: Introduction to Greedy Algorithms URL University of California, Berkeley: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's "Greedy Algorithms"

Read Chapter 5 of S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's book Algorithms.

7.2: Greedy Algorithms - Part I Page Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "Greedy Algorithms - I"

Watch this video to learn about greedy algorithms.

7.3: Greedy Algorithms - Part II Page Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "Greedy Algorithms - II"

Watch this video to learn about greedy algorithms.

7.4: Greedy Algorithms - Part III Page Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "Greedy Algorithms - III"

Watch this video to learn about greedy algorithms.

URL Wikipedia: "Recursion"

Read this article to learn about the mathematical concept behind the idea of recursion.

URL Greedy Algorithms Assignment

Complete all questions in this activity. There is one question on the minimum spanning tree problem requiring two implementations using the Kruskal's algorithm and the Prim's algorithm. You can check your answers against the Answer Key.

Unit 8: NP-Completeness Page Unit 8 Learning Outcomes
8.1: Introduction to NP-Completeness URL University of California, Berkeley: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's "NP-Complete Problems"

Read Chapter 8 of S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's book Algorithms.

8.2: NP-Completeness - Part I Page Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "NP-Completeness - Part I"

Watch this video to learn about NP-Complete problems in the context of computer algorithms.

8.3: NP-Completeness - Part II Page Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "NP-Completeness - Part II"

Watch this video to learn about NP-Complete problems in the context of computer algorithms.

8.4: NP-Completeness - Part III Page Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "NP-Completeness - Part III"

Watch this video to learn about NP-Complete problems in the context of computer algorithms.

8.5: NP-Completeness - Part IV Page Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "NP-Completeness - Part IV"

Watch this video to learn about NP-Complete problems in the context of computer algorithms.

8.6: NP-Completeness - Part V Page Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "NP-Completeness - Part V"

Watch this video to learn about NP-Complete problems in the context of computer algorithms.

URL NP-Completeness Assignment

Complete all questions in this assignment. There are two questions that are both related to proving NP-Completeness of a given problem. You can check your answers against the Answer Key.

Optional Course Evaluation Suvey URL Optional Course Evaluation Suvey

Please take a few moments to provide some feedback about this course. Consider completing the survey whether you have completed the course, you are nearly at that point, or you have just come to study one unit or a few units of this course.

Your feedback will focus our efforts to continually improve our course design, content, technology, and general ease-of-use. Additionally, your input will be considered alongside our consulting professors' evaluation of the course during its next round of peer review. As always, please report urgent course experience concerns to contact@saylor.org and/or our discussion forums.