## CS 31: Algorithms, Winter 2018

Schedule Problem Sets Policies

Course Description and Goals:
Algorithms are step-by-step instructions for a computation problem. Although this sounds like a cooking recipe, good algorithms is what makes the modern world run.
In this course, we will study algorithms rigorously. At the end of the course, the student should be able to design algorithms for problems, reason about these algorithms, and communicate the algorithm and its analysis.

Background Assumed:
Students should have basic knowledge about programming and should be able to read and write mathematical proofs. If you have taken CS 1, CS 10, CS 30 or equivalents, you should be fine. A problem set 0 will be given out on first day of class which should allow you to test compatibility.

Personnel and Office Hours:
• Deeparnab Chakrabarty (Instructor)
Tuesdays (after class - 5:30pm) @Sudikoff 212, Wednesdays (12:45pm - 2pm) @Sudikoff 213
Wednesdays (2:15pm - 3:15pm) @Sudikoff 115
• Yining Chen (TA)
Mondays (3:30pm - 4:30pm) @Sudikoff 114
• Ji Yun Sung (TA)
Sundays (11am - 12noon) @Sudikoff 115
Class Times: 2A (TR: 2:25pm - 4:15pm), X-hours (W: 4:35pm - 5:25pm)
Venue: Kemeny 008
Discussions: Piazza

Text Books:
I will not follow one single textbook but most material will come from the following three. I strongly recommend having access to these books.

• (DPV) Algorithms by Dasgupta, Papadimitriou, Vazirani
• (KT) Algorithm Design by Kleinberg, Tardos
• (CLRS) Introduction to Algorithms by Cormen, Leiserson, Rivest, Stein

## Tentative Weekly Schedule

4 Jan (Thu): Introduction + Logistics. Algorithms for numbers: add, multiply, divide [DPV 1.1], PS 0 given out, due: 1/11
9 Jan (Tue): Big-Oh Notation, Time complexity of Algorithms [DPV 0.3, CLRS, chapter 3] The slides contain more what Prof. Jayanti covered
11 Jan (Thu): GCD, Divide and Conquer 1: Finding Max, Recurrences [DPV 1.2, CLRS, chapter 2] PS 1 given out, due 1/18
16 Jan (Tue) Divide and Conquer 2: Counting Inversions, MaxRange Subarray, Master Theorem [KT 5.3, CLRS 4.1, DPV 2.2]
17 Jan (X) Divide and Conquer 2.5: Karatsuba's Algorithm for Subquadratic Multiplication [DPV 2.1], We also resolved the "dynamic sorting" question which arose from last time. I will perhaps put this resolution as a problem in a problem set.
18 Jan (Thu) Divide and Conquer 3: Nearest Pair of Points on a Plane [KT 5.4, CLRS 33.4] PS 2 given out, due 1/25
23 Jan (Tue) Dynamic Programming 1: Fibonacci, Counting Heads, Subset Sum [DPV 0.2, KT 6.4]
24 Jan (X) Dynamic Programming 1.5: Knapsack Problem [DPV 6.4]
25 Jan (Thu) Dynamic Programming 2: Weighted Interval Scheduling, String Snipping Problem [KT 6.1] PS 3 given out, due 2/5
30 Jan (Tue) Dynamic Programming 3: String Problems [CLRS 15.4, KT 6.6, DPV 6.2-3]
1 Feb (Thu) Greedy Algorithms 1: Weighted Completion Time, Picking Points in General Position, Matroid [CLRS 16.4]
6 Feb (Tue) Greedy Algorithms 2: Approximation Algorithms, Set Cover [DPV 5.4]
7 Feb (X) Midterm [4:35p to 6:35pm, Kemeny 008]
8 Feb (Thu) Graph Algorithms: Basics, Priority Queues [CLRS 6, DPV 3.1] PS 4 given out, due 2/15
13 Feb (Tue) Graph Algorithms: Depth First Search [CLRS 22.3]
15 Feb (Thu) Graph Algorithms: Depth First Search, Strongly Connected Components [CLRS 22.5] The lecture notes contain more than what was covered in class. They are mostly definitions, and one proof. Please go through them.
20 Feb (Tue) Graph Algorithms: Shortest Path, Dijkstra's Algorithm [DPV 4.2-4.5, CLRS 24.3]
21 Feb (X) Graph Algorithms: Bellman Ford
22 Feb (Thu) Graph Algorithms: Bellman Ford, Shortest Path wrap-up [DPV 4.6, CLRS 24.3] PS 6 given out on Canvas, due 3/1
27 Feb (Tue) Graph Algorithms: Flows and Cuts
1 Mar (Thu) Applications of Flows PS 7 given out, due 3/8
6 Mar (Tue) "Hard" Problems.
11 Mar (Sunday) Final [3:00p to 6:00p, Venue: Kemeny 008]

## Problem Sets

Weekly problems sets which will be due on Thursdays, 11:59pm. All submissions must be done via Canvas. Problem Sets are posted on Canvas too.

## Policies

Evaluation

• Eight Problem Sets : 42
• Midterm : 20
• Endterm : 35
• Participation : 3
Both Midterm and Endterm will be an in-class examination with no cheat sheets allowed. Some problems of the exam may be released in advance.

Although the final grades will be fit to a curve, the following gives some ``guaranteed grades''

• > 96 : A
• > 92 : at least A-
• > 80 : at least B
• > 65 : at least C

Lectures, X-hours, Attendence Policy
I will be using almost all the X-hours and it is extremely critical you keep yourself free for these hours.         Algorithms is not a spectator sport, and you must participate to learn. Ask and Answer questions both in class and Piazza. I have reserved 3 points for this activity which are at my discretion.

We will follow Amit Chakrabarti's detailed grading scheme . Every problem will be worth 7 points which you get if you are complete, correct, and concise. Note: presentation is as important as the ideas.

If there is a totalling error, please see any of the TAs and they will fix it rightaway.
On the other hand, if you feel that the grader has not graded accurately then you should clearly write down which problem and your reason why you think the grading is incorrect, staple it with your answer-sheet and hand it to the Head TA during his or her office hour
If even after this you feel unsatisfied, then you can email the instructor for a full regrade . I will look at the entire problem set and re-grade it completely.

Late Exercises and Problem Sets
Problem Sets are submitted via Canvas. Each student has two late days available. Note that even a minute late in canvas is a day late. Any late submissions after the two late days won't be considered.

No Laptop / No Phone Policy
We have a no-laptop/no-phone policy in class to minimize distractions and encourage participation. We have a no-laptop/no-phone/no note-taking policy during office hours.