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
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.
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
I am struggling in the course: what can I do to catch
up?
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. 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. In particular, make sure you are attempting all of the
practice problems before looking at the solutions. You can not memorize your
way through this course by rote learning answers, you need to learn
how to solve the problems yourself and just use solutions to
check your answers.
- 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.
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
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).
Is there a recommended textbook?
If you would like to have a textbook as supplementary material, 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.