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

General Information

Meetings: MWF 9:05am–9:55am, Uris Hall G01 map
Instructor:

Course Email: cs4820fa2025@gmail.com
Please use this address for all course-related communication instead of my personal email. Messages sent here will be seen by me, the head TAs, and the course administrator. This ensures faster responses.

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 proofwriting and asymptotic runtime 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 Eva 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 basic coding. 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.

Grading

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

Ed

We will be using Ed as an online discussion forum. Ed 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 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.

Everyone who preregistered for the course will be signed up automatically by the start of the course. If you have never used Ed before, or if you did not preregister for the course, visit the Ed CS 4820 page to sign up.

Ed is the most effective way to communicate with course staff. Please avoid email if Ed will do. Broadcast messages from the course staff to students will be sent using Ed 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 will be posted on Canvas. Most homework assignments will be due on Thursday at 11:59pm.

Late Submissions

Homeworks are normally due on Thursdays at 11:59pm. You have 2 late days for each homework, which allow you to submit up to 48 hours after the deadline (typically until Saturday 11:59pm) without penalty. Late days are built in to give you flexibility for unforeseen circumstances such as illness, interviews, or conflicting deadlines. If a homework has a different deadline, it will be clearly announced, but the same 2-day late policy will apply. Extensions beyond this policy will not be granted.

Typesetting

We will 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. See typesetting resources for 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.

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 discuss with your peers in the course to brainstorm ideas for how to get through homework. However, your solution must be written up completely on your own; you are not allowed to share digital or written notes or images of your work in any form with each other. Just like in research, your work must also include acknowledgements of all students with whom 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

The homework you submit must represent your own work. Do not submit solutions you do not understand — you should be able to explain any solution you hand in, in your own words and without referring to your write-up. If you cannot explain your submitted work, this may be treated as evidence of an Academic Integrity violation.

You are encouraged to primarily use course materials when developing your solutions. If you consult other written sources (including Generative AI tools), you must cite each source clearly in your submission. Do not seek help from people outside the class, except your classmates and the course staff.

Note: Exams are closed book, closed Internet, and closed Generative AI. For that reason, we strongly recommend you use such tools sparingly — as aids for learning — rather than as integral parts of your homework solutions.

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, or Canvas, are intellectual property belonging to the author. Students are not permitted to buy or sell any course materials 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 be severely penalized. 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.

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.

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.