Who to contact, and when:
 First make sure the answer to your question isn't already on the course website (e.g., when is the exam, when are office hours, etc)

We have a Piazza page. The access code is in
Trunk.
Piazza is mainly meant to be a forum for students to get in touch with each other, and to ask questions that others would benefit from seeing. If you have a question that does not affect other students, or if you want a faster response by an instructor, please use email instead. Do not post questions like "I tried to solve homework X like this but I'm not sure it's correct".

Technical problems about submitting homework, accessing grades, etc:
contact Greg.

Grading concerns: first contact the TA who graded the problem, then if unresolved contact Greg.

Questions about course administration, or course content: contact Greg.
 Contact Prof. Blumer only if you need his help specifically or if Greg is not reachable.
 Major illness or other issue? Feel free to contact Greg, but you are expected to contact Health Services and/or your dean.
Textbook: Introduction to Algorithms, 3rd edition, by Cormen, Leiserson, Rivest and Stein.
This is commonly just referred to as ``CLRS".
More info at MIT press.
Note: the book is massive. We will not cover everything. See "Topics" below.
Prerequisites: COMP 15 and COMP/MATH 61 (in other words, basic data structures and discrete math)
If you have not passed both of these courses and are enrolled in comp160, you must contact Greg.
Topics:
This is an introduction to the design and analysis of algorithms, which involves discussing a few basic data structures as well. Many topics could fit in such a course, and not all intro courses go over exactly the same material.
We will place all emphasis on theory instead of programming.
To see what is taught in this course, please visit the
Reading page.
Grading
 Three inclass exams, each worth 15%: on October 5, October 26, November 16.
 Final exam, December 15. This exam will be 3 hours long (we will extend the regular N+ exam block schedule by an hour, so instead of 79pm it will most likely be 69pm).
 Part 1, devoted to the last quarter of the course, i.e., graphs. Worth 15%.
 Part 2, covering all material in the course. Worth 20%.
 20 homework units, grouped into about 10 assignments (see schedule page). Total value 20%.
If you fail to submit 6 or more units without justification, your final grade will drop by a letter. If you fail to submit 9 or more units, you will not pass the course.
Furthermore, submitting an answer that shows almost no effort will also count towards this rule.
The late penalty policy is explained below.
If you have a serious reason for not submitting homework or not taking an exam, you should notify your Dean and/or Health Services, and of course you may CC us as well.
We cannot arrange a makeup exam if you have a predictable conflict that could be reasonably avoided. Check the exam schedule before making travel arrangements.
Important note: do not assume that the numerical score you receive on homework or exams directly corresponds to a particular letter grade. Your score is just a number that lets us figure out who is doing better or worse than average. Don't panic if you think you scored low. An evaluation of your performance will be given after the first exam: you will see a plot of exam scores and a letter grade estimate. You will also receive updates about average homework performance.
Homework scores usually average around 85%. Exam scores are typically low; the median is usually around 60%, and an 80% is excellent.
How to submit homework

Homework assignments and solutions will be posted in
Trunk, in the Resources folder.

To submit your answers, use the Assignments folder in Trunk. That's also where you'll find a graded copy and your score, ideally one week after the submission date.
 Note that if you are 024 hours late there is a 25% penalty. If you are 2448 hours late there is a 50% penalty. After that you do not get credit.
 It would be helpful if your file name is informative, like: hwXpYfirstnamelastname.pdf for homework number X, problem Y.
Tips for doing well in this course, if you find it challenging:

Come to class! However, don't expect that all you need to do is show up and simply soak in information. Lectures should serve as an introduction to material, which you should further study on your own later.
If you find that the inclass pace is too fast, consider reading some basic material beforehand.

(Applies to Greg's lectures) Taking extensive notes in class works well for some people, but keep in mind that all class notes displayed are already available to you.
Consider bringing a printout of the condensed notes to class. Then you can mark your own observations, clarifications and questions quickly, and spend more time paying attention.

Use the full version of the course notes when studying, not the condensed version. Try to anticipate what is coming next. Try to reprove things. Derive on your own, rather than verifying what is written. When you simply verify what's there, it is easy to overestimate what you've understood.

Don't cram. The most common reason students don't do well on the exams in this course is that they think they can learn the material for an exam in two days.

Spend time on this course regularly. It is a core course in the CS department. If we had programming assignments, you would be spending as much time on this as in comp40. Spend an equivalent amount of time exploring and mastering the theoretical concepts you're presented with. Many students underestimate how much time is required to truly understand some of these topics.

Use all resources available: class notes, the summary PDF document at the top of the Reading page, the videos, the book, the web. Do practice problems from the book, starting with the more basic ones. In many cases you can make your own practice problems (e.g. draw an arbitrary graph and find shortest paths).

As much as possible, don't memorize. Instead, understand.

Pretend that you will have to teach the material that you're reading, to 100 people.

Try to do the homework on your own. If you are entirely stuck, get only basic hints from your classmates and TAs, but don't rush to do this if you've only spent an hour or two on a problem. If you have no idea how to approach a problem, then you probably need to study the basics a bit more: take the time to review the material from the corresponding lectures, and solve some easier exercises on your own. Then think about what tools you have just learned about, and whether they might help. If none of this works, then get some hints.

When stuck solving homework problems, see how you'd handle a madeup example. Think about whether your example is oversimplified, whether you've made unnecessary assumptions, and whether your solution is generalizable (if applicable). Also, sometimes it's a good idea to add extra assumptions, thus making the problem easier to solve, and gradually remove the assumptions.

Read the homework solutions even if you got a good score. Sometimes graders don't notice subtle mistakes on homework submissions. Reading the solutions might help you avoid repeating such mistakes on an exam. Also, even if your ideas worked, the solutions might have a more efficient idea or description that will end up worth knowing about.

Don't hesitate to talk to the instructors and the TAs.
Students and instructors of this course are to respect the following:
Don't cheat:
 If you cheat on an exam, the standard penalty is a suspension and most likely an F in the course.
 It is not acceptable to copy solutions from any source. You may work on homework assignments with your classmates as long as this is mentioned on your submission. However if your solutions show signs of copying, there may be consequences.
 If, for whatever reason, your homework solutions end up matching my solutions in a noncoincidental way (e.g. word for word), this will count as cheating. The same holds for answers to exam questions that are not directly related to course notes. If the reasoning of this rule is not clear, please ask.