Frequently Asked Questions

Here are some answers to the commonly asked questions. Please have a read through these, you may find the answer to your question here.

Enrollment and Waitlists

  1. I am on the waitlist. What can I do to get in? What are my chances of getting in?

    There is a cap on the number of students that can be enrolled, usually dictated by the size of the lecture room, and the number and size of the recitation sections. In past years, the waitlists usually clear a couple of weeks into the course as undecided students slowly make their choices. So our best recommendation is: sit tight, come to lectures and recitations and wait for the waitlists to be cleared (or for more information from the course staff).

    Other common reasons why you cannot get into the course: you have a scheduling conflict, or you are enrolled for too many units. In this case we cannot help, you will have to resolve these issues yourself.

  2. Can I go to a recitation section other than the one I've registered for?

    Ideally, you should be registered for the section you attend. This makes sure no one section is overloaded, and the TAs can keep track of attendance and other logistical issues (like how many handouts to bring along). However, we are happy to make exceptions if needed. If you need to attend another recitation for a scheduling reason some week, please email your usual section TAs and the TAs of the section you plan to attend.

Performance in the Course

  1. I am struggling in the course: what can I do to catch up?

    We're sorry to hear that. A little struggle is natural while you learn new ideas, of course, and students usually get better as the course progresses and you get more used to the ideas and to the problem-solving process. Here are some approaches that students have found useful. (Several of these are the obvious solutions, but still worth repeating.)

    • Attend lectures and recitations. Read over the lecture notes and recitation handout (posted on this website) before you go to recitation. In the margins, write down your questions, answers, thoughts, clarifications, whatever helps.
    • Read over the lecture notes and recitation handouts at the end of the day, and make sure you still remember and understand the ideas. If you don't, or are unsure about some concepts, discuss them with your friends, your TAs, or the instructors.
    • Form a study group. It's more fun to learn with (and from) friends. Of course, some of the HW problems are to be done individually, but you can use your study group to discuss the group problems, the lectures and recitations, and solve other problems. Or just to clarify your understanding.
    • Start the HW early. Read the problems, think about them. Try small examples. The problems we give to you are usually closely related to ideas we've covered in lecture and recitation, so think about how those ideas apply. See here for other HW tips. If the problem seems incorrect or ambiguous, check Piazza for clarifications from the staff or other students.
    • Come to office hours. Please be prepared to answer the question: "What did you try? Where did you get stuck?". Just articulating the answer may help you pinpoint the hurdle, and hence get unstuck ASAP.
    • Practice solving problems. E.g., the problems in the recitation handouts, the homework problems, and the extra review and practice exam problems which are released before the midterms and final.
    • If you're still feel out of your depth, talk to us, and also your academic advisor. They may be able to suggest ways to help, and offer solutions that are tailored to you.
  2. I am enjoying the course: what can I do to learn more?

    That's great! You may enjoy solving problems from the books we've recommended, or from other sources on the Internet. You may want to check out Professor Sleator's Competition Programming and Problem Solving course. Or take graduate courses like A Theorist's Toolkit, Advanced Algorithms, or Professor Woodruff's Algorithms for Big Data. You may also want to try your hand at research, maybe over the summer break!

Textbooks

  1. Is there a required textbook?

    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 and not mandate a textbook. Of course you are welcome to use a textbook as supplementary reading (note however that if a problem from the homework appears in a textbook, you are not allowed to look up the solution to the problem just because it is in the book! That would be cheating).
  2. Is there a recommended textbook?

    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. The fourth edition was released recently (which unfortunately changed a lot of Chapter / Section numbers).
    • 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, and pleasant to read. Highly recommended!.
    • 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 for free.
    • Algorithm Design by J. Kleinberg and E. Tardos. A popular textbook from Cornell. A bit expensive but good topic coverage.