CS 325: Analysis of Algorithms (Fall 2016)
Instructor:
Amir Nayyeri (Office hours: Wed 23pm at KEC 3061)
TA:
Hung Le (Office hours: Tue 56pm at KEC Atrium), Zhicheng Fu (Office hours: Thr 23pm at KEC Atrium)
Lectures: Tue, Thr 10:00am11:20am in ILLC 155
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.

Delayed GA4 submissions receive no penalty, if submitted before Mon.
However, I recommend submitting GA4 as soon as possible and focusing on preparation for the final exam.

Amir holds extra office hours on Fri, Dec 2, 34pm.

Final: Mon, Dec 5 (6:00pm), at ILLC 155.

There is no office hours on Wed, Nov 23.

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

Amir holds extra office hours on Mon, Oct 24, 23pm.

Sample input/outputs for GA2 are corrected.

Midterm: Tue, Nov 1, in class.
Homework:

Practice Assignment 1, Solutions.

Group Assignment 1, Sample input/output, Solutions.
Grades: 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 98, 98, 98, 97, 97, 97, 97, 97, 94, 94, 94, 94, 94, 92, 92, 92, 80, 80, 80, 76, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 72, 69, 69, 69, 68, 66, 66, 66, 64, 63, 63, 63, 57, 57, 54, 54, 52, 52, 52, 50, 50, 50, 49, 49, 48, 48, 45, 45, 45, 42, 42, 42, 42, 40, 40, 37, 37, 27, 24, 10.

Practice Assignment 2, Solutions.

Group Assignment 2, Sample input/output(corrected version).
Grades: 100, 100, 98, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 96, 96, 96, 95, 95, 94, 94, 94, 94, 91, 90, 90, 90, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, 85, 85, 85, 85, 85, 84, 84, 84, 83, 83, 83, 80, 80, 80, 79, 79, 79, 77, 77, 77, 74, 74, 70, 69, 69, 69, 69, 67, 59, 56, 55, 53, 45, 45, 45, 45, 43, 41, 41, 38, 38, 33, 30, 30, 21, 21.

Group Assignment 3, Sample input/output.(note a correction on problem 5.).
Grades: 100, 100, 95, 95, 95, 94, 94, 94, 93, 93, 93, 93, 92, 92, 92, 92, 91, 91, 91, 90, 90, 90, 90, 90, 89, 89, 88, 88, 88, 88, 87, 87, 87, 86, 86, 86, 85, 85, 85, 85, 83, 83, 82, 82, 82, 80, 80, 80, 80, 80, 78, 78, 78, 78, 75, 73, 73, 73, 62, 51, 40, 39, 39, 38, 38, 37, 37, 35, 34, 34, 34, 33, 32, 30, 30, 30, 30, 28, 24.

Practice Assignment 3, Solutions.

Group Assignment 4, Sample input/output.
Lectures:
 Thr 9/22:
Course introduction, Asymptotic running time analysis.
 Tue 9/27:
Asymptotic running time analysis, also see these videos by Tim Roughgaden.
 Thr 9/29: (1) Recursion (Sections 1.1 to 1.3); Hanoi Tower, simplify and delegate. (2) Induction (Section 6); Tiling by triominos.
 Tue 10/4: (1) Induction (Section 6); Tiling by triominos.
(2) Divide and conquer (Sections 1.4 to 1.6); Merge sort, quick sort (not the randomized version), finding median. PA1 due.
 Thr 10/6: Divide and conquer (Sections 1.7); Linear time selection.
 Tue 10/11: (1) Divide and conquer (Sections 1.8); Karastuba's multiplication.
(2) Maximum weight independent set on a path; Dynamic programming. GA1 due.
 Thr 10/13: Dynamic programming (Sections 5.2 to 5.3); Longest increasing subsequence.
 Tue 10/18: (1) Dynamic programming (Sections 5.5 and 5.6.1); Edit distance, subset sum. (2) Also see Knapsack . PA2 due.
 Thr 10/20: Depth First Search; Review of DFS, directed acyclic graphs.
 Tue 10/25: Depth First Search; Directed acyclic graphs, detecting cycles, topological sort.
GA2 due.
 Thr 10/20: Midterm Review.
 Tue 11/1: Midterm, Solutions.
Grades: 31, 30.5, 30, 30, 30, 30, 30, 30, 29, 29, 29, 28.75, 28.5, 28.5, 28.5, 28, 27.5, 27.5, 27.5, 27.5, 26.5, 26, 25.5, 25.25, 25.25, 25, 25, 24.25, 24, 24, 23.5, 23.5, 23, 22.5, 22.25, 21.75, 21.5, 21.5, 21.5, 21.5, 21.5, 21, 20.5, 20.25, 20.25, 20, 20, 19.5, 18.75, 18.5, 18.5, 18.5, 18.5, 18.25, 17.75, 17.75, 17.75, 17.5, 17.25, 17.25, 17, 17, 17, 16.75, 16.75, 16.5, 16, 16, 16, 15.75, 15.75, 15.75, 15.25, 15, 15, 15, 14.75, 14.75, 14.5, 13.25, 12.25, 11.75, 11.75, 10.5, 10.25, 9.5, 8.5
 Thr 11/3: Greedy Algorithms (Section 7.2); Job scheduling.
 Tue 11/8: Greedy Algorithms (Section 7.3); Huffman codes.
 Thr 11/10: Minimum spanning trees (Sections 20.1 to 20.4).
 Tue 11/15: (1) Minimum spanning trees (Sections 20.1 to 20.5)(cont.).
(2) NPhard problems. GA2 due.
 Thr 11/17: NPhardness (Sections 30.1 to 30.3, and 30.5).
 Tue 11/22: NPhardness (Sections 30.6 and 30.7).
PA3 due.
 Thr 11/24: No class, Thanksgiving.
 Tue 11/29: NPhardness (Sections 30.8, 30.9, and 30.12).
 Thr 12/1: Final Review. GA4 due.