## CS 325 H Winter 2016

Topics
Run-time/asymptotic analysis, correctness of algorithms, dynamic programming, divide-and-conquer algorithms, network flow and P, NP, and NP-completeness.
Office hours
To meet with Prof. Borradaile, email for an appointment with a few times that work for you (please provide at least 1 weekday notice).

Week 1
Run-time analysis, start dynamic programming.
Tasks for Thursday, week 1: try some of the ICPC coding exercises.
Week 2-3
Dynamic programming: maximum weight independent set (on paths and trees), knapsack problems, string problems.
Tasks for Tuesday, week 2: think about the first two problems listed here.
Implementation tasks: please report (informally) on attempts to submit valid solutions to the first two problems listed here, the Dividing Coins problem, the Longest Palindrome problem and the Greatest Common Increasing Subsequence problem.
Challenge tasks: give a DP for minimum weight dominating set in a tree.
Written report 1 due Thursday, week 4: as described below. Try to pick problems that illustrate different types of DP (e.g., solving three knapsack-type problems is not very interesting).
Week 4-6
Divide and conquer: designing and analyzing. See class resources (the entirety of Jeff Erickson's notes on recursion apply to this class).
Tasks for Tuesday, Week 5: think about Dropping Balls and Copying Books
Tuesday, Week 6: open problem solving session to work on problems for report 2.
Written report 2 due Tuesday, week 7: as described below. Note that the UWM pages have lists of problems (under each year) solvable by D&C. You need only solve 2 problems for this report.
Week 6-8
Network flow: maximum flows, minimum cuts and how to compute them (notes from Jeff Erickson) and using max flow as a black box to solve other problems (notes from Jeff Erickson)
See these visualizations of maximum flow algorithms in action: Ford and Fulkerson and bipartite matching (made at OSU!)
Written report 3 due Thursday, week 9.: 2 problems, lemma statement for both problems (stating correctness), full proof of one statement; these problems are recommended.
Saturday February 20 (end of week 7)
Mock ICPC competition (being held by our local ACM chapter).
Week 9-10
Computational complexity: P, NP, NP-completeness, reductions:
See Jeff Erickson's lecture notes for a superset of what we will cover in class.
See the Computational Complexity and NP-Completeness and Reductions sections of the study guide for other materials.
Written report 4 due noon on Tuesday of exam week (HARD DEADLINE but may be submitted early; questions for report 4 will be posted by Tuesday of Week 10).
Questions for report 4: questions 2, 3 and 6 from Jeff Erickson's lecture notes and, to get an A on the report:
Show that an otherwise polynomial-time algorithm that makes at most a constant number of calls to polynomial-time subroutines runs in polynomial time, but that a polynomial number of calls to polynomial-time subroutines may result in an exponential-time algorithm.

Bonus topic: property testing; here is a description of testing sortedness.

Exam Week
Oral schedule (using initials); these will take place in KEC3071. Please wait at the end of the hallway to be admitted. Do not talk about your oral finals until after the last appointment.
TimeWedThursFri
09.45JVJHGM
10.30MJKSTT
11.15RWIKCY

### Learning resources

All learning materials are available via the Undergraduate Algorithms Study Guide. This includes all the materials for the eCampus version of CS325: videos, interactive questions, practice questions and readings. As we cover the topics listed above, you will find a corresponding set of learning materials in the study guide. Additional materials will be posted for network flow.

There is no required textbook for this class, but students are encouraged to seek out their own resources online in addition to those that will be suggested here. If you find a particularly useful resource, I would love to hear about it!

### Evaluation of student performance

Written reports
There will be 4 written reports, 3 based on solutions to ICPC problems (more info below) and one answering questions on computational complexity (to be distributed). Deadlines for reports will be one week after they are 'called', typically at the end of covering that topic in class. Reports should be typeset (latex preferred), printed and submitted to Prof. Borradaile in class or their office (KEC3071). Written reports will receive letter grades and written feedback.
ICPC-based reports
For each of the topics dynamic programming, divide and conquer and network flow, you should solve 3 ICPC-style problems (on either PKU's Online Judge or UVA's Online Judge). You can find subsets of questions from each of these topics from Stanford's Intro to Programming Contests and UW-Madison's ICPC Training Page (do not use UW-M's 2015-2016 training questions as solutions are given, nor should you use questions that we explicitly discussed in class). Your grade will be partly determined by the hardness of the problem. The questions on the Stanford and UM-W sites are listed roughly from easy to hard; you are encouraged to challenge yourself! In addition to proof that you have submitted correct solutions to an online judge (e.g. screenshot of your user page showing correctly submitted solutions), you will prepare a written report that includes:
• the statement of the problem and a link to the online judge where it is hosted
• an explanation of your solution (usually with clear and concise pseudocode)
• a proof or argument that your solution is correct
• an asymptotic analysis of the running time of your algorithm
Oral final
During finals week, you will schedule a 30 minute oral exam with Prof. Borradaile. You will be asked questions about the solutions in your written reports as well as questions otherwise based on course materials. Prof. Borradaile will likely keep asking harder and harder questions until you can't answer something.