Algorithm design and analysis is fundamental to all areas of computer science and gives a rigorous framework for the study of optimization. This course provides an introduction to algorithm design through a survey of the common algorithm design paradigms of greedy optimization, divide and conquer, dynamic programming, linear programming, network flows, reductions, and randomized and approximation algorithms. Important themes that will be developed in the course include the algorithmic abstraction-design-analysis process and computational tractability (e.g., NP-completeness).
Shi Li
Email: [first name][dot][last name][at][northwestern][dot][edu]
Homepage: ttic.uchicago.edu/~shili/
Office hours: Thursdays, 1:00pm-3:00pm, Tech M128
Name | Type | Office Hours | |
---|---|---|---|
Biao He | biaohe2014 at unw | Grader | 2:00~3:00 Tuesdays |
Min-Hsiu Hsieh | minhsiuhsieh2016 at unw | Grader | 2:00~3:00 Wednesdays |
Hao Wu | haowu1.2013 at unw | Peer Mentor | 4:00~5:00 Wednesdays |
Ruiqi Yang | ruiqiyang2014 at unw | Peer Mentor | 12:30~1:30 Mondays |
Mingzi Yi | mingziyi2014 at unw | Peer Mentor | 1:00~2:00 Fridays |
T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction to Algorithms. 3rd Edition, 2009, MIT Press.
Thursdays and Fridays, 3:30pm - 4:50pm
Tuesdays from Week 3 to Week 10. There are two discussion sections on each Tuesday of these weeks: one from 4:00pm to 4:50pm and the other from 5:00pm to 5:50pm. You can go to one of these two sections. Attendance is required.
Your final grade will be computed as follows: 70% for the 7 weekly problem sets: 8% + 8% + 8% + 10% + 10% + 10% + 16%; 10% for in-class test 1 and 20% for in-class test 2. There will be no final exam.
Week | Date | Topics | Notes | Reading | Problem Set |
---|---|---|---|---|---|
Week 1 | Jan 8 | Syllabus and Introduction | 0, 1 | 1, 2, 3, 4.3, 4.4, 4.5 | |
Jan 9 | Asymptotical Notations, Solving Recurrences | 2 | |||
Week 2 | Jan 15 | Divide-and-Conquer, Strassen's Algorithm, Selection | 3 | 4.1, 4.2, 7, 9, C.1~C.3 |
PS #1 (8 points) Due on Jan 23 |
Jan 16 | Divide-and-Conquer, Quicksort, Randomized Quicksort | 4 | |||
Week 3 | Jan 22 | Greedy Algorithms, Activity-Selection, Kruskal | 5 | 16, 23 | PS #2 (8 points) Due on Feb 3 |
Jan 23 | Greedy Algorithms, Prim | 6 | |||
Week 4 | Jan 29 | Dynamic Programming, Shortest Paths in DAG, Matrix-Chain Multiplication, LCS | 7 | 15.1~15.4, 24.1~24.2, 25.2 |
PS #3 (8 points) Due on Feb 13 |
Jan 30 | Dynamic Programming, Bellman-Ford, | 8 | |||
Week 5 | Feb 5 | Floyd-Warshall, Dijkstra | 9 | 24.3, 26.1~26.2 |
PS #4 (10 points) Due on Feb 24 |
Feb 6 | Network Flow, Ford-Fulkerson Method | 10 | |||
Week 6 | Feb 12 | In-Class Test #1 | Practice PS 1 Test 1 (10 points) |
||
Feb 13 | Max-Flow-Min-Cut | ||||
Week 7 | Feb 19 | Maximum Matching, NP-Completeness | 13,13(2) | 34.1~34.2, 26.3 | PS #5 (10 points) Due on Mar 3 |
Feb 20 | NP-Completeness | 14 | |||
Week 8 | Feb 26 | NP-Completeness | 15 | 34.3~34.5 | PS #6 (10 points) Due on Mar 13 |
Feb 27 | NP-Completeness | 16 | |||
Week 9 | Mar 5 | NP-Completeness | 29.1 | Test 2 (20 points) | |
Mar 6 | In-Class Test #2 | ||||
Week 10 | Mar 12 | Linear Programming | 29.2, 29.4, 35.1~35.2 |
PS #7 (16 points) Due on Mar 20 | |
Mar 13 | Duality of Linear Programming |