Week 
Topics 
Reference 
Assignment 
14 
Lecture 25: Coping with NP
complete problems. Lecture 24: NP completeness. Lecture notes from last semester. Lecture notes. 
Sections 10.1 and 10.2. Sections 8.7 and 8.8 Slides for the Minesweeper (PDF). 

13 
Lecture 23: NP completeness Lecture 22: Polynomial time reduction. Lecture notes on polynomial time reduction. More lecture notes on NPC. 
Sections 8.1 to 8.4. 
HW10.
Due: 4/26 Wednesday. 
12 
Lecture 21: Concept of NP. Lecture 20: Algorithm for primality testing. Lecture notes on the concept of NP. Lecture notes on primality testings: part 1and part 2. 
Wikipedia
page on primality test. Section 8.3. 
HW9.
Due: 4/19 Wednesday. 
11 
Exam two. Lecture 19: Advanced topic: Fast Fourier transform Lecture notes (focus on the FFT part) 
Section 5.6. 
Programming
assignment 2: dynamic programming. Due: 4/12. Test data (for Linux/Mac) Test data (for Windows) Note: the test data was generated for another assignment. It contains more datasets than needed. You only need to run your code on files like listSeqserrorxxxlxxx.txt. 
10 
Lecture 18: Shortest path: BellmanFord
algorithm Lecture 17: Dynamic programming: matrix chain multiplication. Shortest path. Lecture notes from last semester 
Sections 4.4 and 6.8. Wikipedia page for matrix chain multiplication 
HW8. Due: 4/3
Monday. Note: please don't be late. I need to post the
solution soon after the deadline for the purpose of exam
preparation. 
9 
Lecture 16: Dynamic programming:
knapsack, edit distance, weighted interval scheduling. Lecture 15: Dynamic programming: longest common subsequence (LCS) Lecture notes from last semester. Lecture notes from last semester. 
Sections 6.1, 6.2, 6.4, 6.6. 
HW7. Due: 3/27
Monday. 
8 
Lecture 14: Dynamic programming: longest
increasing subsequence (LIS) Lecture 13: Divide and conquer algorithms: integer and matrix multiplication; closest point; Quicksort and selection. Lecture notes from last semester. Lecture notes from last semester. 
Sections 5.4 and 5.5. 
HW6. Due: 3/20
Monday. 
7 
Lecture 12: Divide and conquer. Master
theorem. Design of algorithms using divide and conquer. Lecture 11: MST (continued). Divide and conquer Lecture notes from last semester. Lecture notes on the Master theorem. This is from a lecture I gave for the other section of CSE 3500 last semester. 
Sections 5.1 and 5.2. 
HW5. Due: 3/6
Monday. 
6 
Exam one. Lecture 10: Greedy algorithm: minimum spanning tree (MST) Lecture notes (see last week's) 
Section 4.5. 

5 
Lecture 9: Greedy algorithms: Huffman
coding and knapsack. Lecture 8: Greedy algorithm: more scheduling problems. Lecture notes on Huffman coding. Lecture notes on scheduling: this part follows closely the textbook. Also check the discussion board in HuskyCT. 
Sections 4.1, 4.2 and 4.8. 
HW4. Due: 2/20
Monday. 
4 
Lecture 7: Strongly connected
components. Greedy algorithms: coin change and interval
scheduling. Lecture 6: Graph: DFS and applications: Is a directed graph acyclic? Topological sort of DAGs. Lecture notes Lecture notes 
Sections 3.5 to 3.6. Section 4.1. 
HW3. Due: 2/13 Monday. 
3 
Lecture 5: Graph: BFS. Lecture 4: Common running time. Heap. Lecture notes on heap (see the second page). 
Sections 3.1 to 3.4. Sections 2.4 and 2.5. 
Programming
assignment one. Due: 2/8, end of day. Test data one for this assignment. Test data two for this assignment. 
2 
Lecture 3: Asymptotic notations Lecture 2: Basic algorithm analysis. Lecture notes 2 
Chapter 2 
HW2. Due: 2/1, end
of day. 
1 
Lecture 1: Basic concepts of algorithms. Stable
matching problem: a motivating example. Lecture notes 1 (from previous offering of this course): please note lecture topics will be similar with previous offering of this course. So I often will reuse the lecture notes. 
Chapter 1 of the textbook (also available online here). 
HW1. Due: 1/25,
end of day. Submit electronically to HuskyCT. 