# CS 515: Algorithms and Data Structures (Fall 2016)

Instructor: Amir Nayyeri (Office hours: Wed 3-4pm at KEC 3061)

TA: Baigong Zheng (Office hours: Wed 4-5pm at KEC Atrium)

Lectures: Tue, Thr 18:00-19: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 CS519-005 before this course.)

Evaluation:

• Homework (30%)
• Midterm exam (35%)
• Final exam (35%)

Resources:

Announcements:

Homework:

• Homework 1, Selected solutions: Problem 1; Problems 2, 3; Problem 4.
Grades: 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 99, 99, 99, 95, 90, 90, 83, 75, 75, 68, 68, 57, 57, 45, 34, 34
• Homework 2
Grades: 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 95, 95, 95, 95, 83, 83, 70, 70.
• Homework 3, Selected solutions.
Grades: 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 90, 90, 90, 90, 90, 90, 90, 90, 90, 87, 85, 85, 85, 80, 80.
• Homework 4

Lectures:

1. Thr 9/22: Course introduction, Recursion.

2. 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.

3. Thr 9/29: Recursion (Sections 1.5 to 1.8); Quick sort, median selection, Karastuba's 'multiplication.

4. Tue 10/4: (1) The closest pair of points. (2) Maximum weight independent set on a path; Dynamic programming.

5. Thr 10/6: Dynamic programming (Sections 1.1 to 1.5); Longest increasing subsequence, edit distance.

6. Tue 10/11: (1) Knapsack . (2) Shimbel's single source shortest paths algorithm. HW1 due.

7. 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.

8. Tue 10/18: (1) Dynamic Programming on DAGs (Sections 9.4 to 9.6). (2) Greedy Algorithms (Section 7.2); Job scheduling.

9. Thr 10/20: (1) Greedy Algorithms (Section 7.3); Huffman codes. (2) Matroids.

10. Tue 10/25: (1) Matroids(cont.). (2) Randomized algorithms; Probability overview, deterministic vs. randomized algorithms. HW2 due.

11. Thr 10/27: Randomized algorithms; Probability overview, Deterministic vs. randomized algorithms, Bolts and nuts example.

12. 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.

13. Thr 11/3: (1) Randomized algorithms; Probability overview, Deterministic vs. randomized algorithms, Bolts and nuts example. (2) Randomized data structures, Treaps.

14. Tue 11/8: (1) Randomized data structures, Skip lists. (2) Minimum enclosing circle.

15. Thr 11/10: (1) Randomized minimum cut, Kareger's algorithm. (2) Maximum flows and minimum cuts, Flows and cuts.

16. Tue 11/15: Maximum flows and minimum cuts, max flow min cut theorem. HW3 due.

17. Thr 11/17: Maximum flows and minimum cuts, Ford-Fulkerson, Edmon's Karp.

18. Tue 11/22: Applications of maximum flow, Disjoint paths, Bipartite matching, Project selection.

19. Thr 11/24: No class, Thanksgiving.

20. Tue 11/29: Linear Programming. See these lecture notes for LP detailed coverage, also see the wikipedia page . HW4 due.

21. Thr 12/1: (1) Linear Programming, strong duality theorem. (2) Linear programming algorithms, the simplex algorithm (Sections 27.1 to 27.4).