Week 16:

Monday, 12/3
Lecture: Go over the NP-completeness assignment and solved a few additional problems

Wednesday, 12/5
Lecture: Review of dynamic programming

Friday, 12/7
Lecture: Go over the local search assignment, and do a general review for the exam''

Week 15:

Monday, 11/26
Lecture: Coping with NP-completeness: local search [ slides ].
Reading: Chapter 12 in Kleinberg and Tardos.

Wednesday, 11/28
Lecture: Local search, continued.
Reading: Chapter 12 in Kleinberg and Tardos.

Friday, 11/30
Lecture: Local search, continued.
Reading: Chapter 12 in Kleinberg and Tardos.
Written homework #8 is available.

Week 14:

Thanksgiving. Have a good break!

Week 13:

Monday, 11/12
Lecture: P, NP, and NP-completeness - continued.
Reading: Chapter 8.3,8.4 in Kleinberg and Tardos.

Wednesday, 11/13
Lecture: More NP-complete problems [ slides ].
Reading: Chapter 8.5 in Kleinberg and Tardos.

Friday, 11/15
Lecture: quiz and review of NP and NP-completeness

Week 12:

Monday, 11/4
Lecture: Continue the applications of maximum network flow.
Reading: Chapter 7.5,7.7 in Kleinberg and Tardos.

Wednesday, 11/6
Lecture: Reductions as a tool for showing problem hardness [ slides ].
Reading: Chapter 8.1,8.2 in Kleinberg and Tardos.

Friday, 11/8
Lecture: P, NP, and NP-completeness [ slides ].
Reading: Chapter 8.3,8.4 in Kleinberg and Tardos.

Week 11:

Monday, 10/29
Lecture: Maximum network flow [ slides ].
Reading: Chapter 7.1,7.2 in Kleinberg and Tardos.

Wednesday, 10/31
Lecture: Maximum network flow - continued.
Reading: Chapter 7.1,7.2 in Kleinberg and Tardos.

Friday, 11/2
Lecture: Applications of maximum network flow [ slides ].
Reading: Chapter 7.5-7.7 in Kleinberg and Tardos.
Assignments: The next written assignment is available.

Week 10:

Monday, 10/22
Lecture: Dynamic programming - we'll continue the discussion of sequence alignment.
Reading: Chapter 6.6 in Kleinberg and Tardos.

Wednesday, 10/24
Lecture: Dynamic programming - linear-space sequence alignment using a hybrid dynamic programming/divide and conquer approach .
Reading: Chapter 6.7 in Kleinberg and Tardos.

Friday, 10/26
Lecture: Dynamic programming - the Bellman-Ford algorithm for shortest paths [ slides ].
Reading: Chapter 6.8 in Kleinberg and Tardos.

Week 9:

Monday, 10/15
Lecture: Dynamic programming - weighted interval scheduling [ slides ].
Reading: Chapter 6.1 in Kleinberg and Tardos.

Wednesday, 10/17
Lecture: Dynamic programming - the knapsack problem (monday slides continued).
Reading: Chapter 6.4 in Kleinberg and Tardos.

Friday, 10/19
Lecture: Dynamic programming - sequence alignment [ slides ].
Reading: Chapter 6.6 in Kleinberg and Tardos.

Week 8:

Monday, 10/8
Lecture: Divide and conquer algorithms [ slides ].
Reading: Chapter 5.1,5.2 in Kleinberg and Tardos.

Wednesday, 10/10
Lecture: Divide and conquer algorithms - closest pair problem [ slides ].
Reading: Chapter 5.4 in Kleinberg and Tardos.
Assignments: Written assignment #4 has been posted.

Friday, 10/12
Lecture: Divide and conquer algorithms - integer multiplication [ slides ].
Reading: Chapter 5.5 in Kleinberg and Tardos.

Week 7:

Monday, 10/1
Lecture: Greedy algorithms - continue minimum spanning trees.
Reading: Chapter 4.5 - 4.7 in Kleinberg and Tardos.

Wednesday, 10/3
Lecture: Greedy algorithms - Huffman encoding [ slides ].
Reading: Chapter 4.8 in Kleinberg and Tardos.

Friday, 10/5
Lecture: midterm.

Week 6:

Monday, 9/24
Lecture: Greedy algorithms - interval scheduling [ slides ].
Reading: Chapter 4.1 in Kleinberg and Tardos.

Wednesday, 9/26
Lecture: Greedy algorithms - Dijkstra's algorithm [ slides ].
Reading: Chapter 4.4 in Kleinberg and Tardos.

Friday, 9/28
Lecture: Greedy algorithms - minimum spanning trees [ slides ].
Here's the demo of Dijkstra's algorithm.
Reading: Chapter 4.5, 4.7 in Kleinberg and Tardos.

Week 5:

Monday, 9/17
Lecture: Graphs - DFS.
Reading: Chapter 3 in Kleinberg and Tardos.
Assignments: written assignment 3 is posted.

Wednesday, 9/19
Lecture: Graphs - bipartite graphs, strongly connected components.
Reading: Chapter 3 in Kleinberg and Tardos.

Friday, 9/21
Lecture: Graphs - DAGs.
Reading: Chapter 3 in Kleinberg and Tardos.

Week 4:

Monday, 9/10
Lecture: Finish Big-O analysis.
Reading: Chapter 2 in Kleinberg and Tardos.
Assignments: written assignment 2 is posted.

Wednesday, 9/12
Lecture: Graphs [ slides ].
Reading: Chapter 3 in Kleinberg and Tardos.

Friday, 9/14
Lecture: Graphs - graph traversal using BFS (continuing graph slide set).
Reading: Chapter 3 in Kleinberg and Tardos.

Week 3:

Wednesday, 9/5
Lecture: On friday we just started on Big O analysis. We will continue this topic. Reading: Chapter 2 in Kleinberg and Tardos.
Assignments: written assignment 1 is due in class on Wednesday, and programming assignment 1 is due thursday at 5pm.

Friday, 9/7
Lecture: More Big-O. Reading: Chapter 2 in Kleinberg and Tardos.

Week 2:

Monday, 8/27
Lecture: Finish discussion of the stable matching problem. Representative problems. Reading: Chapter 1 in Kleinberg and Tardos.

Wednesday, 8/29
Lecture: We will be in a labs (215 and 225) to help you with your assignments.

Friday, 8/31
Lecture: Big O analysis [ slides ]. quiz on big O.
Reading: Chapter 2 in Kleinberg and Tardos.

Week 1:

Monday, 8/20
Lecture: Course introduction and the stable matching problem [ slides ].
Reading: Chapter 1 in Kleinberg and Tardos.
Links: Here's a nice demo and explanation of the stable matching problem. The NRMP explains their matching algorithm, which is a variant of the Gale Shapley algorithm.

Wed, 8/22
Lecture: Crash course in Python. Here's the set code I showed.

Friday, 8/24
Lecture: The Gale Shapely algorithm for the stable matching problem (continuing monday's slide set).
Reading: Chapter 1 in Kleinberg and Tardos.
Assignments: Written assignment 1 is available.