Course Policies

Caveat emptor: this document is subject to change.


There will be two in-class midterms and a final during the finals period. There will also be a collection of online quizzes. Some of the HWs will require oral presentation and others will be written.
Quizzes (online)10%
Midterm exams (in class)30%
Final exam30%
Historically, the average grade in this class has been a B. Given the class' quality of work this may increase or decrease.


  • Everyone is expected to go to their recitation section. Remember, in most of the recitations, there are in-recitation quizzes, which are worth points.
  • Recitations are a chance to engage in more discussion than is usually possible in a large lecture, with a focus on the process of solving algorithmic problems. Recitations will occasionally contain new material as well, on which you may be tested.


  • There will be two midterms and one final exam
  • Each midterm will be offered in class
  • The final exam will be during the finals period for the semester


  • There will a quiz online most weeks.
  • You will be tested on the material from the previous 2-3 lectures.
  • Quizzes are designed to be easy, assuming you are keeping up with the lectures.


There will be written homeworks and oral presentations.

Written HWs

  • All written homeworks should be submitted electronically via autolab. Due dates are generally on Thursdays, 11:59PM.
  • All written homework must be typeset and submitted electronically via Autolab. LaTeX (see Miktex for Windows machines) is a good typesetting system for documents with lots of math; you probably know it from taking 15-251.
  • Each individual student has four (4) mercy days over the course of the semester to extend the deadline for written homeworks.
  • At most two (2) late days may be taken on a single written assignment. After two days, no submissions may be made.
  • You may work in groups of 2-3. However, each person should hand-in their own writeup. That is, collaboration should be limited to talking about the problems, so that your writeup is written entirely by you and not copied from your partner. You should wait a reasonable period of time between collaborating and writing up your solutions. In addition, list all members of your group on your written HWs.
  • If you use any reference or webpage or a solution from any other class (including past iterations of 451), you must cite it.

Homework's Purpose

Algorithms is a pivotal course in computer science undergrad studies. The course's goal is to give you the basic principles in analyzing and designing of algorithms. It is not an easy course (not that other courses taught in CMU are easy!). It will require a significant amount of work on your part to follow what is taught in class. This is why we give weekly homework assignments. They are designed to give you a better understanding of the material taught in class. We stress that the homework is meant for you. We devote a fairly large amount of time for designing, writing, grading and explaining the homework, so that you can test yourselves and see how well you understand and implement the course's material.

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. Carefully.
  3. Spend at least one hour thinking about each problem by yourselves. This is the vital part of understanding the course's material. You will get stuck, that's ok. When you do, here are some suggestions to help you get past it.
    • Come up with a dummy example, over a small number of item, and try to solve it. 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 a graph? a 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.
  4. Only after you gave the problem a serious amount of thinking, try to collaborate, ask on Piazza, or come to the TAs for guidance.
  5. Write down the solution, by yourselves. Re-read what you've wrote. Make sure the solution is exact, and answers specifically what you've been asked about. It should be clear, but it need not necessarily be long.

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. Adamchik as early as possible.

Academic Integrity

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