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

Evaluation:

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

Resources:

Announcements:

• Here are two sample question sets for final: sample 1, and sample 2.
• Midterm exam will be on Tue, Nov 5, in class. Here are two sample sets of questions: sample 1, and sample 2. Here are the answers to sample 1.
• Glencora Borradaile and William Maxwell are teaching the first three lectures.
• The grade cut-offs for this class are roughly (if they change they do so in your favor): A >= 90; A- 85-89; B+ 80-84; B 75-79; B- 70-74; C+ 65-69; C 60-64

Homework:

Lectures:

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.