CS 515: Algorithms and Data Structures (Fall 2016)
Instructor:
Amir Nayyeri (Office hours: Wed 34pm at KEC 3061)
TA:
Baigong Zheng (Office hours: Wed 45pm at KEC Atrium)
Lectures: Tue, Thr 18:0019:20 in KEAR 212
Tentative topic list: Recursive algorithms, Dynamic programming, Greedy algorithms, Randomized algorithms and data structures, Treaps, Hashing*, Network flow, Linear programming, Approximation algorithms*.
Prerequisites: Graduate standing in computer science and an undergraduate course in algorithms. I assume that the students are comfortable with CS325 material. (If you have not taken any undergraduate algorithm course, I strongly recommand taking CS519005 before this course.)
Evaluation:
 Homework (30%)
 Midterm exam (35%)
 Final exam (35%)
Resources:
Announcements:

Final: Tue, Dec 6, 8:00pm, at KEAR 212. Exams from last years: 2014, 2015. Study the following lecture notes for the exam: (1) Randomized algorithms (9.1 to 9.7), (2) Randomized data structures, (3) Maximum flows and minimum cuts (23.1 to 23.5), (4) Applications of maximum flow (24.1 to 24.3 and 24.6), (5) Linear Programming (26.1 to 26.6), Linear programming algorithms (27.1 to 27.4).

Amir holds extra office hours on Mon, Oct 31, 34pm.

Midterm: Tue, Nov 1, in class. Exams from last years: 2014, 2015.
Homework:
Lectures:
 Thr 9/22:
Course introduction, Recursion.
 Tue 9/27: (1) Recursion (Sections 1.2 to 1.4); Hanoi Tower, merge sort, simplify and delegate. (2) Induction (Section 6); Tiling by triominos.
 Thr 9/29: Recursion (Sections 1.5 to 1.8); Quick sort, median selection, Karastuba's 'multiplication.
 Tue 10/4: (1) The closest pair of points. (2) Maximum weight independent set on a path; Dynamic programming.
 Thr 10/6: Dynamic programming (Sections 1.1 to 1.5); Longest increasing subsequence, edit distance.
 Tue 10/11: (1) Knapsack . (2) Shimbel's single source shortest paths algorithm. HW1 due.
 Thr 10/13: (1) All pairs shortest paths (Sections 22.4 to 22.7)). (2) Dynamic programming on trees (Section 5.9); Maximum indepedent set.
 Tue 10/18: (1) Dynamic Programming on DAGs (Sections 9.4 to 9.6).
(2) Greedy Algorithms (Section 7.2); Job scheduling.
 Thr 10/20:
(1) Greedy Algorithms (Section 7.3); Huffman codes. (2) Matroids.
 Tue 10/25: (1) Matroids(cont.). (2) Randomized algorithms; Probability overview, deterministic vs. randomized algorithms.
HW2 due.
 Thr 10/27: Randomized algorithms; Probability overview, Deterministic vs. randomized algorithms, Bolts and nuts example.
 Tue 11/1: Midterm.
Grades: 100, 100, 97, 96, 93, 91, 91, 90, 88, 85, 85, 83, 82, 80, 78, 77, 76, 74, 73, 66, 63, 60, 60, 54, 31, 30.
 Thr 11/3: (1) Randomized algorithms; Probability overview, Deterministic vs. randomized algorithms, Bolts and nuts example.
(2) Randomized data structures, Treaps.
 Tue 11/8:
(1) Randomized data structures, Skip lists. (2) Minimum enclosing circle.
 Thr 11/10:
(1) Randomized minimum cut, Kareger's algorithm. (2) Maximum flows and minimum cuts, Flows and cuts.
 Tue 11/15:
Maximum flows and minimum cuts, max flow min cut theorem. HW3 due.
 Thr 11/17:
Maximum flows and minimum cuts, FordFulkerson, Edmon's Karp.
 Tue 11/22: Applications of maximum flow, Disjoint paths, Bipartite matching, Project selection.
 Thr 11/24: No class, Thanksgiving.
 Tue 11/29: Linear Programming. See these lecture notes for LP detailed coverage, also see the wikipedia page . HW4 due.
 Thr 12/1: (1) Linear Programming, strong duality theorem. (2) Linear programming algorithms, the simplex algorithm (Sections 27.1 to 27.4).