Lecture Dates Book Sections Comments
12-07, 12-09 34.4 In the last lecture of the course, we will give a survey of what we have done and what I consider to be the main topics in the course.

Videos: 12-07 and 12-09.

11-30, 12-02 34.1, 34.2, 34.3 For the remainder of the course we will covering Computational Complexity. These topics are usually covered in EECS 510, so parts of this should be a review.

Videos: 11-30 and 12-02.

11-23 16.4 We complete our discussion of Matroids from last week by proving that a certain scheduling problem is realizable as a Matroid.

Videos: 11-23.

11-16, 11-18 16.3, 16.4 We covered the dynamic programming solution to the optimal binary tree problem (section 15.5). Huffman Codes are a greedy solution to the same problem. We will also begin talking about Matroids this week, which provide a generic greedy algorithm that works for a very large variety of problems.

Videos: 11-16 and 11-18.

11-09, 11-11 16.1, 16.2 This week we begin our coverage of Greedy Algorithms with the (unweighted) Interval Scheduling problem and the 0-1 Knapsack Problem.

Videos: 11-09 and 11-11.

11-02, 11-04 25.2 We complete our coverage of graph algorithm with the Floyd-Warshall algorithm before the second exam on 11-04.

Videos: 11-02.

10-26, 10-28 24.2, 24.3, 25.1 Dijkstra's algorithm has an interesting history, which you should read about. You should also read more about the Shortest Paths problem. It includes many famous results and is the source of some ongoing research.

Videos: 10-26 and 10-28.

10-19, 10-21 23.2, 24.1 We continue our discussion of minimum spanning trees with Kruskal's algorithm before continuing on to Chapter 24. Chapter 24 contains several famous shortest path algorithms that are not covered in other courses, so please read about them beforehand.

Videos: 10-26 and 10-21.

10-14 23.2 Prim's and Kruskal's algorithms should have been covered in EECS 560, so please review them if you are unfamiliar.

Videos: 10-14.

10-05, 10-07 22.4, 23.1, 23.2 Minimum spanning trees should be covered in EECS 560, but we will cover the basic algorithms for them in greater detail.

Videos: 10-05 and 10-07.

09-28, 09-30 Chapter 22 This chapter should be mostly review, so we will only briefly cover it. If you are unfamiliar with any of the main algorithms (BFS, DFS, Topological Sort), please review them carefully before class.

Videos: 09-28 and 09-30.

09-21, 09-23 15.5 We have an exam on 09-23. All sections prior to this week will be covered on the exam.

Videos: 09-21.

09-14, 09-16 15.2, 15.4 You should read more about the Longest Common Subsequence problem. This problem comes up quite often in practice. See also homework problem 15-5 on the Edit Distance problem.

Videos: 09-14 and 09-16.

09-07, 09-09 15.1, 15.2, 15.3 Dynamic programming is a very important and very powerful programming technique. Be sure to carefully read the book sections and make sure that you understand the technique, not just the solution.

Videos: 09-07 and 09-09.

08-31, 09-02 4.1, 4.4, 4.5, 4.2 You can read more about the Master Theorem on Wikipedia. A slight variant of Strassen's algorithm is considered state-of-the-art for fast matrix multiplication, but asymptotically faster algorithms have been discovered. These faster algorithms are not used in practice because the lower-order terms end up dominating for most matrices that people actually do calculations on.

Videos: 08-31 and 09-02.

08-24, 08-26 3.1, 3.2, 4.0 Material this week should be a review, so please read these sections carefully to make sure everything is familiar.

Videos: 08-24 and 08-26.