General Information | Course Description | Grading | Ed Discussions | Homework | Course Conduct | Accommodations

General Information

Lectures: MWF 9:05am–9:55am, Uris 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 the course 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. 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. 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 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 Java.

Grading

Your grade will based on weekly homework, two prelims, one final exam, and participation. Each of these components will be given a weight in the following ranges:

Passing 4820: If the score computed above exceeds 45%, you are guaranteed a passing grade.

Ed Discussions

We will be using Ed Discussions as an online discussion forum. Ed Discussions allows for open discussions of all course-related questions. You are encouraged to post any questions you might have about the course material. The course staff monitor Ed Discussions closely and you will usually get a quick response. If you know the answer to a question, you are encouraged to post it. Posting questions or answers that are endorsed by TAs or instructors can improve your participation grade.

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.

Ed Discussions is the most effective way to communicate with course staff. Please avoid email if Ed Discussions will do. Ideally, email to the instructors should be reserved for sensitive communications. Broadcast messages from the course staff to students will be sent using Ed Discussions and all course announcements will be posted there and pinned, so check the pinned announcements often!

Homework

Homework is an important part of the course. We will have weekly homework assignments. All homework assignments (and solutions) will be posted on Ed. In general, homework assignments will be due on Thursday at 11:59pm.

Typesetting

We require problem sets to be typeset and submitted as a PDF. This requirement is for everyone's benefit. In general, we recommend that you first develop your solutions in draft form, and then write or type your solution in a concise way. Typesetting not only makes the last step essential (instead of handing in solution in draft form), it also makes it much easier for you to edit and improve your writeup, as well as easier for your TAs to read your proofs. It is up to you which tool you use. We recommend LaTeX, as it is the de facto typesetting standard used in Computer Science and other mathematical/scientific disciplines. That said, tools like the Equation Editor in Microsoft Word can be surprisingly effective as an alternative. See typesetting resources for a list of typesetting software and references.

For some proofs or writeups, it may be helpful to use a figure to explain your thinking more concisely. This is encouraged! Again, it is up to you how you want to include that in your writeup, whether it is a picture of a drawing in your notebook that you took with your phone or something you made digitally, as long as the figure was produced by you personally and is clear enough to see, it's a great idea to include it.

Late Submissions

We encourage on-time submission of homeworks, in order to stay on top of the course material. That said, we understand that this ideal is not always possible. We allow 6 late days to be used at your discretion across the semester. Late days will be subtracted in integral units (i.e. an assignment turned in 1 hour after the deadline will be charged 1 day). You may use at most 3 late days per assignment. Additional late days will not be given, except in extraordinary circumstances, or in line with an SDS accommodation.

Collaboration

In the real world of algorithms research, collaboration and conversation is an important part of how ideas get generated. So too in this course; we encourage you to collaborate with your peers in the course to brainstorm ideas for how to get through homework. You may talk with any students about the problems, but you must limit the set of significant collaborators (i.e. collaborations that go beyond high-level ideas, involving writing or drawing diagrams together) to at most two other students. While you may collaborate to solve the problems, your solutions must be written up completely on your own. You are not allowed to share digital/written notes or images of your work in any form with each other (including your significant collaborators). This includes problems that involve writing a piece of code: the code you submit must be your own, not copied from your homework partner. Just like in research, your work must also include acknowledgements of all with whom students who you collaborated. Both the physical or digital distribution of information about solutions and the failure to acknowledge collaborators are serious violations of academic integrity.

Admissible Resources

When completing homework, we discourage the use of external sources, including but not limited to Generative AI. Do not solicit help from people outside of the class (beyond classmates and course staff). Do not submit solutions that you do not understand: you should be able to explain your solution, in your own words (without referencing your write-up). If you choose to consult written sources beyond the course material and textbook, you must list each of these sources in your submission.

Note: Exams will be closed book, closed internet, closed generative AI. As such, the staff recommends you use these tools sparingly, as a resource for learning, not as an integral part of solving homeworks.

Generative AI: We discourage the use of generative AI tools (e.g. GPT and Bard) for solving homework problems. If you choose to query generative AI tools while working on your homework, you must submit the transcript of your entire session. Your submission will be compared to your AI session. Copying solutions (from AI or the internet) is a violation of academic integrity. If you feel the resources available to you are insufficient, talk to course staff or ask questions on Ed Discussions.

Advice for Success

Algorithms assignments can often require creative insights and complex proofs beyond what previous courses have required. Here are a few tips for succeeding in your writeups:

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 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 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.