Assignments & Grading

There will be two midterms: one during week five and one during week ten, and a final during the finals period. There will also be eight homework assignments. The homework assignments will consist of some written assignments that you will complete by yourself and some oral presentation assignments that you will do in groups of three. Each homework assignment may also have a programming task that will require you to implement an efficient algorithm.

8 Homeworks 40%
Recitation Attendance 5%
Midterm exams 30%
Final exam 25%

There are no predetermined letter grade cutoffs. These are determined at the end of the semester based on everyone's performance.

Overall letter grades will be curved at the end of the class. Master's students (15-651) will accordingly receive standard plus and minus grades.


There will be written homeworks and oral presentations, described below.

Written HWs

  • Most written HWs will have 3-4 problems. These will mostly be proof-based problems involving the design, analysis, or use of algorithms, but may also include programming questions requiring implementation.
  • All written work you submit must be entirely your own. You should not discuss the problems except with course staff, nor reference materials outside of those provided by this course in F23 and its prerequisites. Referencing other material is cheating.
  • The written problems on these homeworks should be submitted on Gradescope by 11:59PM on the due date. Homework may be submitted up to two days late, with a 10% deduction for each late day. Homework may not be submitted more than two days late. Each student has 2 grace days, which will remove the first 2 of these 10% deductions that they receive.
  • Written homework must be typeset and worded clearly. LaTeX is recommended (guide and HW template).
  • Based on TA availability, we will grade either some or all of the questions.

Oral HWs

  • Each oral homework will have 3 regular written-style problems.
  • You may work in groups of up to three to solve the regular problems, and will be asked to present your solutions in these groups in 60-minute time slots between the Wednesday and Friday following their release.
  • Grades will typically be assigned to the entire group for their presentation, but may individually differ.

Programming Problems

  • The solutions to programming problems will be submitted via Autolab. It will be judged on correctness and running time. The languages accepted are Java, C, C++, OCaml, SML, Rust, and Python.
  • Note that we may ask you to implement a theoretically efficient algorithm to solve the problem, and we reserve the right to manually deduct points from solutions that exhibit slow worse-case behaviour but successfuly use clever heuristics to pass all of our test cases within the time limit. More details will appear on Piazza.
  • For tips and further instructions on the programming problems, see here
  • Our submission system will run plagiarism-detection software on the submissions. All code submitted must be entirely your own, even in cases when the course staff allows you to discuss with groups. You should not refer to any online references aside from language documentation.
  • You also get 2 grace days for the programming problems, which are distinct from the written homework grace days. (The rest of the late penalty policy is the same: 10% off per day, maximum 2 days late.)

Solving the Homework

Ideally, this is how you should approach the homework.
  1. Read the material taught in class, and make sure you understand all the definitions, algorithms, theorems and proofs.
  2. Read the homework problem. Carefully.
  3. If you get stuck, here are some suggestions to get past it:
    • Come up with a small example, and see how you would solve that. This is particularly helpful when you're trying to follow an algorithm, or when devising a counter example.
    • Which algorithms / techniques / heuristics taught in class are applicable to the problem at hand? When do they fail and for what reason?
    • Reduce the problem to a problem taught in class. Can the problem be represented as tree? a graph? a flow network? maybe to a less general instance of the problem itself (a graph with negative weight to a graph with unique, non-negative weights)?
    • The notion of sub-problem (divide-and-conquer, dynamic programming, induction) is a recurring theme in this class. Try to identify and solve the sub-problems of the problem at hand.
    • If you are still stuck, come to office hours. Sometimes just a brief meeting can get you pointed in the right direction (or help to back you up from a wrong path, to use a DFS analogy).
  4. When you write down your solution, re-read what you've written. Is the solution understandable? Does it answer specifically what you've been asked about? Your answers should be clear, and often they will be short.

Bonus Problems

  • The homework assignments may occasionally contain bonus problems. If you complete one of these problems, your scores on that problem will replace your lowest homework problem score (unless it is itself your lowest score).
  • Partial credit will only be awarded to bonus problems for substantially correct answers.


  • There will be two midterms and one final exam.
  • The formats will be given closer to the date. See the schedule for the exam dates.


  • Recitations represent a significant portion of your exposure to problems and problem-solving techniques in this class. You may be tested on the techniques presented here as well as material taught in the case that the lecture is unable to cover all of a week's content.
  • Recitation handouts will be released on Friday. We highly recommend that you look over these in advance and consider how you might solve the problems, as this will give you far better practice for the homework and exams than if you're first exposed to them in recitation, where due to time constraints we have to go over the solutions shortly afterwards. Solutions to the recitations will be uploaded to Box on Monday evening. These make great references for how to write up proofs of different styles for your homework.
  • We encourage that you remain in your consistent recitation, but if you have a conflict in some week you may attend another recitation that works better for you. If there are room capacity issues we will ask those not officially assigned to a given recitation to leave.


  • We will offer office hours as specified on the course calendar. These are the best places to ask conceptual questions and get help when you're stuck on a homework problem. Since not every TA is familiar with every available programming language and debugging is quite time-intensive, this will provide relatively less help with programming anomalies. All office hours will be in person. Students not present in the room will be removed from the queue.
  • We will use Piazza for online discussions and course announcements. It is the best place to ask logistical and debugging questions but will provide relatively less help with problem solving. Please ask public questions unless your question requires revealing details of your homework solutions.
  • We will use Gradescope to collect written homework submissions and facilitate regrade requests.
  • We will use Canvas to collect combined student grades from all sources.
  • We will use Panopto to post lecture recordings for students who miss lecture or want to revisit it.
  • We will use Box to host solutions to past recitations and homework for your perusal.


  • Several of the topics we teach, particularly the more advanced ones, are not covered in the standard Algorithms textbooks. Hence we will provide lecture notes covering all the material in this course.
  • Optionally, if you prefer learning from a textbook, we recommend you try one or more of the following. Note that none of them cover every single topic in this course.
    • Introduction to Algorithms, by Cormen, Leiserson, Rivest, and Stein (hereafter referred to as "CLRS"). It's big, it's fairly expensive, but it is the gold standard of algorithms books with a lot of material. Based on the Algorithms course at MIT.
    • Algorithms, by Dasgupta, Papadimitriou, and Vazirani (herafter referred to as "DPV"). Smaller, cheaper, more informal. A relatively new book based on Algorithms courses at UC Berkeley and UCSD. A preliminary (incomplete) version is available here.
    • Algorithms by Jeff Erikson. You can find it for free as a PDF online, or for approximately $30 in print. This one is great value for money.
    • Algorithm Design by J. Kleinberg and E. Tardos
  • Specific readings in CLRS and DPV will be listed on the course schedule in case you want to read ahead.

Your Health & Well-being

  • We want you to learn cool new things in the course, things that will be useful for your life and career. And we want you to have fun learning this material! Part of making sure you have the right experience involves taking care of yourself. Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress.

    If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. Counseling and Psychological Services (CaPS) is here to help: call 412-268-2922 and visit Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.

Accommodations for Students with Disabilities:

  • If you have a disability and are registered with the Office of Disability Resources, we encourage you to use their online system to notify us of your accommodations and also send an email to Dhruti Kuchibhotla (srisaidk) on our course staff to discuss your needs as early in the semester as possible. We will work with you to ensure that accommodations are provided as appropriate. If you suspect that you may have a disability and would benefit from accommodations but are not yet registered with the Office of Disability Resources, we encourage you to contact them at

Other Policies

Lateness and Absence

  • Make-ups for the exams and the final must be arranged at least one week in advance, barring extreme situations. Make sure to document any health problems you might have. If you need special accommodations, please contact Prof. Sleator or Prof. Anderson as early as possible.

Academic Integrity

  • Collaboration is healthy in the circumstances in which it is explicitly permitted, but plagiarism and cheating are serious academic offenses with serious consequences. Searching online for homework solutions or even similar problems, algorithmic ideas, or code (including of standard algorithms and datastructures) are all classified as cheating, as is getting advice from anyone not in your group (on group problems) or on course staff or looking at anyone's written solutions (even those of your group members). The above is not an exhaustive list of academic integrity violations, and if you are ever uncertain about what is allowed you should ask the course staff. If you cheat in the class we will penalize you and report you to the university. Issues will be handled in accordance with the University Policy on Academic Integrity. Please also see the the Carnegie Mellon Code on Academic Integrity.

Finally, feel free to contact any member of the course staff to clarify these policies.