CS 515: Algorithms and Data Structures (Fall 2019)

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

TA: William Maxwell, (email: maxwellw AT oregonstate DOT edu) (Office hours: Fri 12:00-1:00pm at KEC Atrium)

Lectures: Tue, Thr 8:30-9:50 in Owen Hall 103

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






  1. Thr 09/26: Course introduction, Recursion; Hanoi tower.

  2. Tue 10/01: (1) Recursion (divide and conquer); merge sort. (2) The closest pair of points.

  3. Thr 10/03: (1) Recursion (divide and conquer); median selection, integer multiplication. (2) Matrix multiplication.

  4. Tue 10/08: Recursion (backtracking); n-queens, subset sum.

  5. Thr 10/10: Dynamic Programming; maximum weighted indepdent set, subset sum.

  6. Tue 10/15: Dynamic Programming; longest increasing subsequence.

  7. Thr 10/17: Dynamic Programming; edit distance, dynamic programming on trees.

  8. Tue 10/22: Dynamic Programming on Graphs; single source shortest paths.

  9. Thr 10/24: Greedy Algorithms; job scheduling.

  10. Tue 10/29: Greedy Algorithms; Huffman codes.

  11. Thr 10/31: Randomized Algorithms; nuts and bolts.

  12. Tue 11/5: Midterm Exam.

  13. Thr 11/7: Randomized Algorithms; quick sort analysis, treaps.

  14. Tue 11/12: Randomized Algorithms; skip lists.

  15. Thr 11/14: Maximum flows; maximum flow = minimum cut, Ford Fulkerson algortihm.

  16. Tue 11/19: Maximum flow applications; disjoint paths, bipartite matching, exam scheduling.

  17. Thr 11/21: Maximum flows; Edmond Karp algorithms.

  18. Tue 11/26: Linear programming; Agebraic/geometric view.

  19. Thr 11/28: Thanksgiving, no class.

  20. Tue 12/3: Linear programming; Agebraic/geometric view.

  21. Thr 12/5: Linear programming; Algorithms.