Topic  Name  Description 

Course Introduction  Course Syllabus  
Course Terms of Use  
1.1: Introduction to Algorithms  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  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  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  Algorithms: "Introduction"  Read this page to get an introduction to algorithms. 
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. 

2.1: Introduction to Algorithms  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  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  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  Wikipedia: "Master Theorem"  Read this article to learn about the use of Master Theorem in analyzing recursive problems. 
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. 

3.1: Introduction to Divide and Conquer Algorithms  University of California, Berkeley: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's "DivideandConquer Algorithms"  Read Chapter 2 of S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's book Algorithms. 
3.2: Recurrences in Algorithms  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  Wikipedia: "Recursion"  Read this article to learn about the mathematical concepts behind the idea of recursion. 
Divide and Conquer Assignment  Complete all questions in this assignment. There are two questions on the divideandconquer 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. 

4.1: Introduction to Sorting Algorithms  Knight School: "Algorithmic Thinking"  Watch this video to learn about sorting algorithms. 
"Google Interview with Barack Obama"  Watch this video to learn about sorting algorithms. 

4.2: Sorting Algorithms  Part I  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  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  Wikipedia: "Sorting Algorithms"  Read this article to learn about the popular sorting algorithms in use today. 
Sorting Assignment  Please complete all questions in this assignment. There are two questions on the sorting algorithms. The first one involves the mergesort 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. 

5.1: Introduction to Dynamic Programming  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  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  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  Wikipedia: "Dynamic Programming"  Read this article to learn about the different types of problems to which dynamic programming techniques are applied. 
Dynamic Programming Assignment  Complete all questions in this activity. There is one question on the dynamicprogramming 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. 

6.1: Introduction to Graph Theory  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  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  PatrickJMT: "Graph Theory  An Introduction"  Watch this video to learn about data structures used in graph algorithms. 
6.4: Graph Theory Algorithms  Part I  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  Massachusetts Institute of Technology: Dr. Charles E. Leiserson's "Shortest Paths I: Properties, Dijkstra's Algorithm, Breadthfirst Search"  Watch this video to learn about shortest path problems. 
Graph Theory and Graph Algorithms Assignment  Complete all questions in this assignment. There is one question on the breadthfirst search implementation and one on depthfirst search implementation. You can check your answers against the Answer Key. 

7.1: Introduction to Greedy Algorithms  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  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  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  Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "Greedy Algorithms  III"  Watch this video to learn about greedy algorithms. 
Wikipedia: "Recursion"  Read this article to learn about the mathematical concept behind the idea of recursion. 

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. 

8.1: Introduction to NPCompleteness  University of California, Berkeley: S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's "NPComplete Problems"  Read Chapter 8 of S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani's book Algorithms. 
8.2: NPCompleteness  Part I  Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "NPCompleteness  Part I"  Watch this video to learn about NPComplete problems in the context of computer algorithms. 
8.3: NPCompleteness  Part II  Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "NPCompleteness  Part II"  Watch this video to learn about NPComplete problems in the context of computer algorithms. 
8.4: NPCompleteness  Part III  Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "NPCompleteness  Part III"  Watch this video to learn about NPComplete problems in the context of computer algorithms. 
8.5: NPCompleteness  Part IV  Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "NPCompleteness  Part IV"  Watch this video to learn about NPComplete problems in the context of computer algorithms. 
8.6: NPCompleteness  Part V  Indian Institute of Technology, Bombay: Dr. Sunder Viswanathan's "NPCompleteness  Part V"  Watch this video to learn about NPComplete problems in the context of computer algorithms. 
NPCompleteness Assignment  Complete all questions in this assignment. There are two questions that are both related to proving NPCompleteness of a given problem. You can check your answers against the Answer Key. 