Week 16:
Tuesday, 5/1
Lecture: Coping with NP-completeness [ slides ].
Reading: Chapters 10-13 in Kleinberg and Tardos
Thursday, 5/3
Lecture: Review for final - please prepare questions!
Week 15:
Tuesday, 4/24
Lecture: NP-completeness [ slides ].
Reading: Chapter 8.3,8.4 in Kleinberg and Tardos
Thursday, 4/26
Lecture: More NP-complete problems [ slides ].
Reading: Chapter 8.5 in Kleinberg and Tardos
Week 14:
Tuesday, 4/17
Lecture: Applications of the Maxflow problem (continue with Thursday's slide set)
Reading: Chapter 7.6,7.7,7.10 in Kleinberg and Tardos
Thursday, 4/19
Lecture: Reductions as a tool for showing problem hardness [ slides ].
Reading: Chapter 8.1,8.2 in Kleinberg and Tardos
Week 13:
Tuesday, 4/10
Lecture: The Maxflow problem and the Ford-Fulckerson algorithm (slides continued from Thursday).
Reading: Chapter 7.1,7.2 in Kleinberg and Tardos
Thursday, 4/12
Lecture: Applications of the Maxflow problem [ slides ]. And here's the maxflow demo I showed.
Reading: Chapter 7.5 in Kleinberg and Tardos
Week 12:
Tuesday, 4/3
Lecture: Shortest paths using dynamic programming - [ slides ].
Reading: Chapter 6.8 in Kleinberg and Tardos
Thursday, 4/5
Lecture: We'll continue the Bellman-Ford algorithm and start on the Maxflow problem [ slides ].
Reading: Chapter 7.1,7.2 in Kleinberg and Tardos
Week 11:
Tuesday, 3/27
Lecture: Dynamic programming - subset sums and knapsack problems [ slides ].
Reading: Chapter 6.4 in Kleinberg and Tardos
Thursday, 3/29
Lecture: Dynamic programming - sequence alignment [ slides ].
Reading: Chapter 6.6, 6.7 in Kleinberg and Tardos
Week 10:
Tuesday, 3/20
Lecture: Divide and conquer - finding closest pair of points [ slides ], integer multiplication [ slides ].
Reading: Chapter 5.4,5.5 in Kleinberg and Tardos.
Thursday, 3/22
Lecture: Dynamic programming - weighted interval scheduling [ slides ].
Reading: Chapter 6.1,6.2 in Kleinberg and Tardos
Week 9:
Spring break
Week 8:
Tuesday, 3/6
Lecture: Divide and conquer and preparation for midterm.
Thursday, 3/8
Midterm.
Week 7:
Tuesday, 2/28
Lecture: Huffman encoding [ slides ].
Reading: Chapter 4.8 in Kleinberg and Tardos.
Thursday, 3/1
Lecture: Divide and conquer [ slides ].
Reading: Chapter 5.1,5.2 in Kleinberg and Tardos.
Here's a cute youtube video on divide and conquer.
Week 6:
Tuesday, 2/21
Lecture: More MST algorithms (cont).
Reading: Chapter 4.5 in Kleinberg and Tardos.
Thursday, 2/23
Lecture: Data clustering, Dijkstra's algorithm [ slides ].
Reading: Chapter 4.4, 4.7 in Kleinberg and Tardos.
Week 5:
Tuesday, 2/14
Lecture: Introduction to greedy algorithms [ slides ].
Reading: Chapter 4.1 in Kleinberg and Tardos.
Thursday, 2/16
Lecture: Greedy algorithms for the minimum spanning tree problem [ slides ].
Reading: Chapter 4.5, 4.7 in Kleinberg and Tardos.
Week 4:
Tuesday, 2/7
Lecture: Graphs - Analysis of BFS, connected components, bipartite graphs.
Reading: Chapter 3.2-3.4 in Kleinberg and Tardos.
Programming assignment #2 is available.
Thursday, 2/9
Lecture: Graphs - Analysis of BFS, connected components, bipartite graphs.
Reading: Chapter 3.5-3.6 in Kleinberg and Tardos.
Written assignment #3 is due.
Week 3:
Tuesday, 1/31
Lecture: Finish the discussion of big O.
Thursday, 2/2
Lecture: Graphs (representations of graphs and BFS) [ slides ]. Written homework 2 is due.
Reading: Chapter 3 in Kleinberg and Tardos.
Week 2:
Tuesday, 1/24
Lecture: Big O [ slides ].
Reading: Chapter 2 in Kleinberg and Tardos.
Thursday, 1/26
Lecture: Big O continued. There will be quiz on big O. Written homework is due.
Reading: Chapter 2 in Kleinberg and Tardos.
Week 1:
Tuesday, 1/17
Lecture: Course introduction
A crash course in Python. Here's the set Python class I showed.
The stable matching problem [ slides ] (slides updated on 1/19 to include the example shown in class)
Reading: Chapter 1 in Kleinberg and Tardos.
Thursday, 1/19
Lecture: We continued with the stable matching problem, and talked about representative problems that will be discussed in the course (almost finished the slides I posted on Tuesday).
