Skip to main content





Announcements

Here is a link to videos of the lectures. (Cornell NetID required.)

Overview

This is a first-year Ph.D.-level course on the design and analysis of algorithms, intended for graduate students and advanced undergraduates. We will focus on the core theory of algorithms; practical applications will receive much more limited coverage. Topics to be covered will include graph algorithms (especially for computing matchings and network flows), linear and semidefinite programming, convex optimization, fast algorithms for solving linear systems, spectral methods, Markov chains, submodular optimization, NP-complete problems, approximation algorithms, online algorithms, and a survey of some algorithmic techniques for manipulating massive data.

Instructor: Robert Kleinberg

Course information

Time and Place

Monday, Wednesday, Friday, 2:30-3:20pm.
Mentor's Lecture Hall, G01 Gates. (ground floor, below the main entrance).

Course Staff

  • Robert Kleinberg (Instructor)

    317 Gates Hall
    Office hours: Tuesday 11-12, Thursday 1:15-2:15
  • Pooya Jalaly (Teaching Assistant)

    Office hours: Tuesday, 2:30-3:30, in Gates G17
  • Jenna Edwards (Course Administrator)

    401 Gates Hall
    Email: jls478@cornell.edu

Prerequisites

CS 4820 or equivalent, i.e. an advanced undergraduate-level algorithms course. If you are unsure whether CS 6820 or CS 4820 is the right course for you, please talk to the instructor.

We will assume knowledge of:

  • discrete mathematical structures, including graphs, trees, DAGs
  • basic data structures such as lists, trees, heaps, sorting and searching
  • asymptotic complexity, O( ) and o( ) notation, solving recurrences
  • machine models and general computability
  • algebra: linear algebra (including eigenvalues and eigenvectors), basic facts about polynomials over the real and complex numbers and the integers mod p.
  • probability: sample spaces, random variables, expectation and variance, independence, conditional probability and expectation.

Texts

You are required to read the course notes posted on the web site. These will sometimes contain more detail than what was presented in lecture.

Optional Textbooks

  • The Design and Analysis of Algorithms, by Dexter Kozen.
  • Algorithm Design, by Jon Kleinberg and Éva Tardos.

Homework, Project, and Exams

In the first half of the semester there will be problem sets roughly every two weeks. The problem sets will generally be handed out on a Friday and will be due on the Friday two weeks hence.

Students may work on homework in groups of up to four people. Collaboration is encouraged. Each group may turn in a single solution set that applies to all members of the group. However, students are asked to understand each of their group's solutions well enough to give an impromptu white-board presentation of the solution if asked.

Acknowledge all sources, including others in the class from whom you obtained ideas and any Internet sources.

In the second half of the semester, students will be asked to complete a project, which could involve reading and summarizing research papers, implementing and evaluating algorithms from the lectures or readings, undertaking original research in algorithms, or a combination of the above. Students may work on projects in groups of up to four people.

There will a take-home midterm exam. It will be an open book and notes, closed Internet, take-home exam. Student will work on exams individually. The take-home exam will be in late October or early November, exact dates TBA.

Late Homework Policy

    Please make every effort to submit your homework solutions in a timely fashion. Late submissions will be subject to a grade penalty equivalent to 20 percent of the value of the assignment.

    Solution sets will typically be posted three days after the deadline of an assignment, and late submissions will not be accepted after the solution set has been posted.

    Extensions will be granted, by permission of the instructor, in case of illness or other acceptable excuses.

Grading

Your course grade will be based on the homework, project, and exams. Weighting will be roughly 50% homework, 20% project, and 30% exams.

Grading criteria: For the most part, the homework will ask you to design and analyze algorithms for various problems. (There will not be any programming assignments.) A complete answer consists of a clear description of an algorithm (an English description is fine), followed by an analysis of its running time and a proof that it works correctly. You should try to make your algorithms as efficient as possible. Compared to CS 4820, the grading in CS 6820 places greater emphasis on writing correct and complete proofs.

Regrade requests must be made within one week of the time that the course staff announces the assignment or exam is graded. If you believe your solution to a question was correct and it was marked incorrect then you should enter a regrade request into CMS, including an explanation of the grading error. Instructions for requesting regrades on CMS can be found in the CMS User Documentation: follow the “Help” link in the left frame, then select the subtopic “Assignment Pages”.

Academic Integrity

The utmost level of academic integrity is expected of all students. Academic integrity is rarely an issue in graduate courses, but unfortunately it does arise from time to time, so we want to be clear.

Under no circumstances may you submit work done with or by someone else under your own name or share detailed proofs with anyone else except your partner(s). However, general questions regarding proof techniques or the requirements of the assignment are permissible.

You must cite all sources, including Internet sources. You must acknowledge by name anyone whom you consulted. You may not give nor receive assistance from anyone else during an exam. You may not give any hints or post any material that might be part of a solution publicly on Piazza. If your question necessarily includes such material, post privately.

If you are unsure about what is permissible and what is not, please ask.

Academic Integrity Resources:

CMS

We are using the course management system CMS for managing assignments, exams, and grades. Everyone who preregistered for the course should be entered by the first day of classes, but if you did not preregister, you may be missing. Please login and check whether you exist. There will be a list of courses you are registered for, and CS 6820 should be one of them. If not, please send your full name and Cornell netId to the Course Administrator so that you can be registered.

You can check your grades, submit homework, and request regrades in CMS. Please check your grades regularly to make sure we are recording things properly. The system also provides some grading statistics. There is a help page with instructions.

Please do not repost course materials released on CMS publicly. These materials are intellectual property and meant for participants in the course. They are not free to the public.

Piazza

We will be using Piazza as an online discussion forum. You will need to register as a student in the course by visiting https://piazza.com/cornell/fall2017/cs6820.

You are encouraged to post any questions you might have about the course material. The course staff monitor Piazza closely and we aim to give a quick response. If you know the answer to a question, you are encouraged to post it (but please avoid giving away any hints on the homework or posting any part of a solution--this is considered a violation of academic integrity).

By default, your posts are visible to the course staff and other students, and you should prefer this mode so that others can benefit from your question and the answer. However, you can post privately so that only the course staff can see your question, and you should do so if your post might reveal information about a solution to a homework problem. You can also post anonymously if you wish. If you post privately, we reserve the right to make your question public if we think the class will benefit.

Piazza is the most effective way to communicate with the staff and is the preferred mode of interaction. Please reserve email for urgent or confidential matters. Free-ranging technical discussions are especially encouraged. Broadcast messages from the course staff to students will be sent using Piazza and all course announcements will be posted there, so check in often.

Special Needs

We provide appropriate academic accommodations for students with special needs and/or disabilities. Requests for academic accommodations are to be made during the first three weeks of the semester and must be accompanied by official documentation. Please register with Student Disability Services in 420 CCC to document your eligibility.

This schedule is provisional. All dates for lectures and unreleased assignments and exams are subject to change.
Lecture Date Topic Readings Other notes
1 23 Aug Matchings I:
Maximum bipartite matching
Notes on matchings
2 25 Aug Matchings II:
Begin maximum non-bipartite matching
Notes on matchings
3 28 Aug Matchings III:
Finish maximum non-bipartite matching
Notes on matchings
4 30 Aug Matchings IV:
Hopcroft-Karp algorithm
Notes on matchings
5 1 Sep Matchings V:
Begin minimum-cost bipartite matching
Notes on matchings Assignment 1 released.
4 Sep No class Labor Day
6 6 Sep Matchings VI:
Finish min-cost bipartite matching. Start online matching.
Notes on online matching algorithms
7 8 Sep Matchings VII:
Finish online matching.
Notes on online matching algorithms
8 11 Sep Flow I:
Ford-Fulkerson algorithm, Max-flow min-cut theorem
Notes on flow algorithms
9 13 Sep Flow II:
Edmonds-Karp and Dinitz
Notes on flow algorithms
10 15 Sep Flow III:
Combinatorial applications
Notes on flow algorithms
11 18 Sep LP I:
Introduction
Notes on LP
by Éva Tardos
12 20 Sep LP II:
Simplex algorithm.
Simplex method notes
Assignment 1 due at 18:00.
Assignment 2 released.
13 22 Sep LP III:
LP duality
Simplex method notes