CS 261: Optimization and Algorithmic Paradigms
 4/3: The first exercise set has been posted.
Further exercises sets will follow on a weekly basis, posted
under "Coursework" below
on Thursday or Friday. (Remember these are not to be turned in.)
 3/30: Welcome to CS261!
Instructor:

Tim
Roughgarden (Office hours: Thursdays 11 AM  Noon, Gates 474. Email: tim@cs.stanford.edu).
Course Assistants:

Weihao Kong
(Office hours: Mondays 10noon (Gates 486).
Email: kweihao@gmail.com).

Lan Huong Nguyen
(Office hours: Mondays 35 (Huang basement).
Email: lanhuong@stanford.edu).

Joshua Wang
(Office hours: TBA.
Tuesdays 24 (Huang basement).
Email: jrwang@stanford.edu).
Time/location: 9:3010:45 AM Tue/Thu in 380380C.
Piazza site: here.
Email address for PSet submissions:
cs261submissions@gmail.com
Staff mailing list:
cs261spr1415staff@lists.stanford.edu
Prerequisites: CS161 or equivalent.
Algorithms for network optimization: maxflow, mincost flow,
matching, assignment, and mincut problems. Introduction to linear
programming. Use of LP duality for design and analysis of
algorithms. Approximation algorithms for NPcomplete problems such as
Steiner Trees, Traveling Salesman, and scheduling problems. Randomized
algorithms. Introduction to online algorithms.
 Exercise Sets (0%):
Exercise sets will be handed out weekly and are meant to help
you keep up with the course material.
Do not turn in your solutions. Think about them and discuss with
fellow students or the course staff any that you cannot answer.
Roughly half of the final exam will consist of
variations of problems on these exercise sets.
 Problem Sets (75%):
There will be 4 problem sets. Here is the schedule:
 Problem Set Policies:
 These are challenging are you are strongly encouraged to form
groups, of up to three students. Each group should turn in a single
writeup (all students of the group receive the same score).
 You can form different groups for different problem sets.
 You can discuss problems with students from other groups
verbally and at a high level only.

Except where otherwise noted, you may refer to your course notes, the
textbooks and research papers listed on the course Web
page only. You cannot refer to textbooks, handouts, or
research papers that are not listed on the course home page. If you
do use any approved sources, make you sure you cite them
appropriately, and make sure that all your words are your own.
 You are strongly encouraged to use LaTex to typeset your writeup.
Here's a LaTeX template that you can use to
type up solutions. Here
and here are good
introductions to LaTeX.
 We expect you to follow
the honor
code.
 Submit your solutions by email to cs261submissions@gmail.com.
 Late Days:
 One late day equals a 24hour extension.
 Each student has two free late days.
 At most two late days can be applied to a single assignment;
after Thursday midnight (following the original due date) no solutions
will be accepted.
 Each late day used after the first two will result in a 25%
penalty.
 Example: a student had one free late day remaining but his/her
group uses two late days on a Problem Set. If the group's writeup
earns p points, the student receives a final score of .75*p points
for the assignment.
 InClass Final Exam (25%):
Date: Friday, June 5, 12:153:15 PM. Location:
Braun Auditorium, Mudd Chemsitry Building.
 Note: We initially listed the incorrect date of June 10th.
The final exam will be June 5th, as specified by the registrar.
 Roughly half of the questions will be variations on exercise set
questions.
 The exam is closedbook/computer; however, you are allowed
to bring two
doublesided sheets (4 pages) of notes, which you must prepare
by yourself.
Resources
 There is no required textbook. Much of the material is covered in
lecture notes for previous offerings of CS261
by Plotkin and Trevisan. See the
lecture schedule below for details.
 Lecture 1 (Tue 3/31):
Course goals.
Introduction to the maximum flow problem.
The FordFulkerson algorithm. Flows and cuts.
 Lecture 2 (Thu 4/2):
Proof of the maxflow/mincut theorem.
Augmenting on shortest paths (EdmondsKarp).
The blocking flow approach (Dinic).
 Lecture 3 (Tue 4/7):
Pushrelabel algorithms for max flow.
 Lecture 4 (Thu 4/9):
Pushrelabel recap. The st mincut problem.
Application to image segmentation.
The cutting edge of maximum flow algorithms.
 Lecture 5 (Tue 4/14): Bipartite and nonbipartite matching.
Optimality conditions: "obvious obstacles" to matchings.
Searching for augmenting paths.
 Lecture 6 (Thu 4/16): Completion of Edmonds's Blossom
algorithm.
 Lecture 7 (Tue 4/21):
Maximumweight matching in bipartite graphs.
The Hungarian (KuhnMunkres) algorithm.
Discussion of the minimumcost flow and
weighted (nonbipartite) matching problems.
 Lecture 8 (Thu 4/23): Linear programming and duality:
introduction.
 Lecture 9 (Tue 4/28): Linear programming and duality:
examples. Mincost perfect matching and maxflow/mincut revisited.
 Lecture 10 (Thu 4/30):
Recap of use cases of linear programming and strong LP duality.
Survey of algorithms for linear programming.
Separating hyperplanes, Farkas's Lemma, and strong LP duality.
 Lecture 11 (Tue 5/5):
Compromises for NPcomplete problems.
A fixedparameter tractable algorithm for Vertex Cover.
Introduction to approximation algorithms: Knapsack
and makespan minimization.
 Lecture 12 (Thu 5/7): Approximation algorithms
for the Traveling Salesman Problem (TSP).
 Lecture 13 (Tue 5/12):
Using linear programming in
the design and/or analysis of approximation algorithms.
Dualbased analysis of the greedy Set Cover algorithm.
LP rounding for Vertex Cover.
 Lecture 14 (Thu 5/14):
Top five tools in the analysis of randomized algorithms.
Chernoff bounds.
Randomized rounding.
Lowcongestion routing.
 Lecture 15 (Tue 5/19):
Categories of approximation guarantees.
Categories of hardness.
Integrality gaps.
Gap reductions.
Case study: vertexdisjoint paths in directed graphs.
 Trevisan survey
on hardness of approximation.
 Paper by Guruswami/Khanna/Rajaraman/Shepherd/Yannakakis on disjoint
paths (see Section 3.1).
 Lecture 16 (Thu 5/21):
Introduction to online algorithms.
Case study #1: online bipartite matching.
 Lecture 17 (Tue 5/26):
Finish online bipartite matching. Case study #2:
online Steiner tree.
 Same references as last lecture,
plus Section 13.5 of the
Plotkin notes.
 Lecture 18 (Thu 5/28):
Introduction to streaming algorithms.
 Lecture 19 (Tue 6/2):
A taste of selfish routing. Course recap. (Optional lecture)