General Information | Course Description | Course Material Copyright | Course Conduct | Accommodations

General Information

Lectures: MWF 9:05am–9:55am, Ives Hall G01, map
Instructors:

Course Description

This course develops techniques used in the design and analysis of algorithms, with an emphasis on problems arising in computing applications. Example applications are drawn from systems and networks, artificial intelligence, computer vision, data mining, and computational biology. This course covers four major algorithm design techniques (greedy algorithms, divide and conquer, dynamic programming, and network flow), computability theory focusing on undecidability, computational complexity focusing on NP-completeness, and algorithmic techniques for intractable problems, including identification of structured special cases, approximation algorithms, and local search heuristics. This course continues to build on work in previous courses on proof writing and asymptotic running time analysis of algorithms.

Learning Objectives

On completing this course, students should be able to:

Course Material

Algorithm Design The textbook for the course is Algorithm Design by Jon Kleinberg and Éva Tardos (available at Cornell Store). Although this book was designed for this course, there will be topics covered in lecture that are not in the text and there will be topics in the text that are not covered in lecture. You are responsible for topics covered in lecture and for any assigned reading in the text.

The following books are also useful references.

Prerequisites

The prerequisites for CS 4820 are, either having an A– or better in both CS 2800 and CS 2110, or having successfully completed all three of CS 2800, CS 2110, and CS 3110. Students in CS 5820 should have completed coursework in their undergraduate program covering the same topics. We assume that everyone is familiar with the material in CS 2110, CS 3110, and CS 2800, and we will use it as necessary in CS 4820/5820. This includes elementary data structures, probability (conditional probability, expectation, variance), sorting, and basic terminology involving graphs (including the concepts of depth-first search and breadth-first search), and coding in Python or Java. Some of these are reviewed in the text. The lectures and homework involve the analysis of algorithms at a fairly mathematical level. We expect everyone to be comfortable reading and writing proofs at the level of CS 2800. Some homeworks include programming exercises that involve writing code in Python or Java.

Course Material Copyright

Course materials posted on this website, Ed Discussions, or Gradescope, are intellectual property belonging to the author. Students are not permitted to post course materials on the web, share them on any online platform, buy, sell, or distribute them outside of Cornell without the express permission of the instructor. Such unauthorized behavior constitutes academic misconduct.

Course Conduct

We understand that our members represent a rich variety of backgrounds and perspectives. Cornell University is committed to providing an atmosphere for learning that respects diversity. We expect students to communicate in a respectful manner with the instructors, course staff, and fellow students, in a way the honors the unique experiences, values, and beliefs represented by different members of our community.

Academic Integrity

Any violation of academic integrity will incur severe penalities. You are allowed to collaborate on the homework to the extent of formulating ideas as a group. However, you are expected to write up (and understand) the homework on your own, and you should acknowledge the names of the students with whom you collaborated.

From Cornell's code of academic integrity:

Absolute integrity is expected of every Cornell student in all academic undertakings. Integrity entails a firm adherence to a set of values, and the values most essential to an academic community are grounded on the concept of honesty with respect to the intellectual efforts of oneself and others. Academic integrity is expected not only in formal coursework situations, but in all University relationships and interactions connected to the educational process, including the use of University resources. […]

A Cornell student's submission of work for academic credit indicates that the work is the student's own. All outside assistance should be acknowledged, and the student's academic position truthfully reported at all times. In addition, Cornell students have a right to expect academic integrity from each of their peers.

Inclusiveness

We are committed to making CS 4820/5820 an inclusive learning environment, where every student can learn the material and enjoy the class, in line with the department's Values of Inclusion. You belong here and deserve to be treated with respect, by your classmates and the course staff. If you experience or witness anything in 4820/5820 that goes against these values, please contact the instructors, so that we can work with you to address the issue.

Accommodations

This course complies with the Cornell University policy and equal access laws to ensure that students with disabilities can still participate fully in this course. Requests for academic accommodations should be made during the first three weeks of the semester, except for unusual circumstances, so arrangements can be made as soon as possible. Students are encouraged to register with Student Disability Services, as we may require verification of eligibility to provide appropriate accommodations.