CS 325: Analysis of Algorithms (Fall 2017)
Instructor:
Amir Nayyeri (Office hours: Wed 34pm at KEC 3061)
TA:
Evgenia Chunikhina (Office hours: Fri 910am at KEC Atrium), Zhicheng Fu (Office hours: Mon 34pm at KEC Atrium)
Lectures: Tue, Thr 10:00am11:20am in KEAR 112
Tentative topic list: Asymptotic running time analysis, Recursion, Divide and conquer, Dynamic programming, Greedy algorithms, Linear programming, Computational complexity (P and NP), Randomization*, Approximation algorithms*.
Prerequisites: CS 261; Data structures and introductory discrete mathematics, trees and graphs, data structures such as priority queues, basic proof technique including induction.
Evaluation:
 Group Assignments (30%): You are encouraged to work on in groups of up to 3 students. You do not need to work in the same group for each assignment, but you will only get credit for an assignment if your name is listed on exactly one submission. Late assignments will not be accepted without prior arrangements.
 Practice Assignments (10%): These assignments must be completed individually, and submitted in class or slid under the door of my office on the due day before midnight. Late assignments will not be accepted without prior arrangements. These assignments will be graded on effort alone and will not be returned. Solutions will be posted.
 Midterm exam (30%)
 Final exam (30%):
Resources:
Announcements:

Final exam solutions: Solutions for the first set, Solutions for the second set.

Final exam of 2016.

PA3 is posted.

GA3 is posted.

Midterm solutions are posted.

Amir will have extra office hours Mon 10/30, 45pm.

Amir will have extra office hours Mon 10/23, 45pm.

GA2 is posted.

Midterm will be on Oct 31.

Practice Assignment 2 is posted.

Amir will have extra office hours Mon 10/9, 45pm.

Test cases for GA1 are posted.

Group Assignment 1 is posted.

Practice Assignment 1 is posted.

First class, Thr, Sep 20.
Homework:
Lectures:
 Thr 9/21:
Course introduction, Asymptotic running time analysis.
 Tue 9/26:
Asymptotic running time analysis, also see these videos by Tim Roughgaden.
 Thr 9/28: (1) Recursion (Sections 1.1 to 1.3); Hanoi Tower, simplify and delegate.
 Tue 10/3: (1) Induction (Section 6); Tiling by triominos, Pancake Sorting.
(2) Divide and conquer. PA1 due.
 Thr 10/5: Divide and conquer; Binary search, Merge sort.
 Tue 10/10: Divide and conquer; Quick sort/select, Karastuba's multiplication. GA1 due.
 Thr 10/12: Dynamic programming; Introduction, number of binary strings with no '11' (Fibonacci numbers).
 Tue 10/17: (1) Maximum weight independent set on a path, (2) Dynamic programming; Longest increasing subsequence.
 Thr 10/19: Dynamic programming; Longest increasing subsequence, longest common subsequence.
 Tue 10/24: Dynamic programming; Longest common subsequence, Edit distance.
 Thr 10/26: Graphs.
 Tue 10/31: Midterm. Midterm of Fall 16. Midterm solutions.
 Thr 11/2: Minimum spanning trees, Boruvka.
 Tue 11/7: Minimum spanning trees, Generic MST, Boruvka, Kruskal.
 Thr 11/9: Minimum spanning trees, Prim, fast implementations.
 Tue 11/14: (1) Minimum spanning trees, Kruskal. (2) Greedy Algorithms. GA3 due.
 Thr 11/16: Greedy Algorithms.
 Tue 11/21: NPhardness, Decision problems, undecidability, P, NP, NPhardness. PA3 due.
 Thr 11/23: No class, Thanksgiving.
 Tue 11/28: NPhardness, Redcutions, SAT, 3SAT.
 Thr 11/30: NPhardness, Reductions, Max Independent Set, Max Clique, Graph Coloring. GA4 due.