ECS 20 – Discrete Math for Computer Science – Course Information – Fall 2008

Time and place

We will meet TR 9:00 - 10:20 in 202 Wellman.

There were two discussion sections.
Section 1 meets F 1:10-2:00 in 1342 Storer.
Section 2 meets F 3:10-4:00 in 1128 Hart.
You may attend whichever section you prefer (not necessarily the one you are officially enrolled in).


My name is Phil Rogaway.
My office is in 3009 Kemper.
I can also be reached at (but please use office hours for routine technical questions).
Please go to my homepage for my current office hours.

Teaching Assistants

There are two TAs assigned to the class:

Course webpage

The course web page contains important information: it is where your assignments are posted, as well as announcements. It is a click away from my homepage. Please check the page frequently.

Course newsgroup

Newsgroups ucd.class.ecs20
and ucd.class.ecs20.d exist and may be accessed from URL (or through your mail client or newsgroup reader). The first newsgroup is for me or one of the TAs to make announcements (it might not be used, as I tend to drop announcements on the course web page instead). On the .d newsgroup students may ask questions to be answered by me, the TAs, or by fellow students. Please don’t post your solution to a homework problem on a newsgroup.


The grading criteria this term is: There will be a single midterm, given on October 30. There will also be approximately four pop quizzes, each taking about 15 minutes. There is no making up a missed quiz, but I will drop the lowest score, so as to effectively ignore a single missed or lousy quiz. All exams are closed book, closed notes, no calculators. You must take final exam to get a passing grade in the class. I also attend to whether or not you have been turning in the homeworks.

It is possible that the TA will only grade a proper subset of the problems turned in.

If you believe that a problem was misgraded you may resubmit it for regarding. Make sure you understand the solution first. Regarding requests must be done within one week of when the material was returned to you. If something was just recorded wrong or summed wrong, please show me after class and I will fix it.


There are several objectives for this class: for you to learn some standard material in discrete math, particularly those concepts that arise frequently in computer science; to gain some mathematical maturity; to improve your skills with technical writing; and to improve your ability to think creatively in a rigorous domain. You will not succeed in this class by way of memorization or pattern matching; it just won’t work. Your goal is to really understand what we cover, not just kind of vaguely get it.


My impression is that the standard texts routinely used this course manage to be lousy and expensive, so here are my (rather experimental) picks:

  1. How to Prove It: A Structured Approach, 2nd edition, by Daniel Velleman, 2006.
    Doesn’t cover many course topics, but a nice, easy read for many of the basics. Emphasis is on improving your ability to write proofs. About $27.
  2. Schaum’s Outline of Discrete Mathematics, 3rd edition, by Seymour Lipschutz and Marc Lipson, 2007.
    Covers most of the topics of the class (still not everything), though tersely. I initially thought that just Velleman would do, but now I suspect that, for most students, this is not the case and you will want to have both books in hand. My late change of heart meant that I ordered this second book late, and so, correspondingly, it will arrive late at the campus bookstore. If you’d rather not wait, purchasing the book on-line will probably be faster. About $13.
I don’t expect to assign homework problem by reference to either book; I will explicitly write down each problem I assign.

There are about a zillion more discrete math texts. The most popular ones might be those by Rosen, Epp, and Johnsonbaugh—just in case you feel that you’ll do better having a more traditional text.

Student scribe notes

I have decided to try a new experiment this year: I am going to let the students take turns scribing notes for everyone. Here’s the protocol. At the beginning of each class I’ll ask for a volunteer scribe for the day. (If I forget to ask, please remind me.) You may volunteer as an individual or as a two-person team. The scribe should then email to me beautiful, well-written, mathematically correct notes by 8 pm on the same day as the lecture. Scribing notes will earn you, according to the quality of the notes, up to 3% extra credit. That is not a small amount—it is certainly enough to move a borderline student up a half-grade. But notes must be well done and arrive on-time to earn your 3%.

Notes may be in one of three formats: raw text (please ensure reasonable line breaks, say no more than 80 characters wide), Word (please use Times New Roman font), or LaTeX (see links on our course homepage). Raw text really is fine, but you may need a bit of “ASCII art” to mimic something on the board. Please name your file according to the lecture number: scribe1, scribe2, scribe3, etc, with the appropriate extension of .txt, .doc, or .tex. I will look over the notes you send me and post them to the course web page, probably the same evening. Please do not offer to take notes unless you have been understanding the material and are doing “B”-or-better work; I don’t want struggling students trying to scribe notes (you can’t write good notes without understanding what is going on).

Problem sets

Unless indicated otherwise, homeworks will be due at 4:30 pm every Monday. Turn in homeworks in 2131 Kemper. Sorry but no late homeworks will be accepted.

Much of what one learns in this course comes from trying to solve the homework problems, so work hard on them. I intend for you to find some of the problems challenging, and it simply may not be possible for you to solve everything. Doing a conscientious job on the homeworks is by far the best preparation for the exams, and it is essential for mastery of the material.

Your writeups should be clear, terse and neat. Aim for elegance. Typeset solutions are appreciated, and serious, grad-school bound students are encouraged to learn to use LaTeX. Understandability of the solution is as necessary as correctness. Don’t be surprised to lose points if you provide a "correct" solution with a poor writeup.

If you can’t solve a problem, indicate what you’ve tried and where the difficulty lies; know what you know and be clear about it.

Oddly, many students are happier to spend long hours hacking in front of a machine than peacefully thinking beneath a tree. Computer science is about thinking and problem solving, not about spending endless hours pounding some hapless program into a kind-of working state.


I permit but discourage collaboration on homeworks. This is not the usual perspective you will hear (and it definitely does not mean that I do not appreciate the value of working with partners or on larger teams), but I think that, for the material of this particular class (and also 120 and maybe 122A), solitary struggling on homeworks is needed for mastering the ideas. I think that my colleagues and I all enjoyed solitary struggling through our math and theory courses when we were students. Hopefully you will, too.

That said, many students insist that they learn best by collaborating, so you may. If you do, the manner in which you collaborate will have a profound impact on how much you get out of the homeworks (and this, in turn, will have a big impact on how you do on the exams). First, think about the problems and try to solve them on your own. If, after giving a problem some real thought, you just can not get anywhere with it, then you might wish to discuss it with other students, with me, or with the TA. In any case, you must individually write up all solutions. Many students try to get through the homeworks by forming study groups and jointly trying to solve the homeworks. Evaluate carefully if you are learning the desired problem solving skills better than if you were spending the same time trying to get it on your own. Your goal on the homeworks should not be to maximize your points, but to help you learn a certain set of material and skills.

Academic misconduct

If you discuss problems with anyone, you must acknowledge him/her/them on your homework, with the granularity of each problem. You must likewise acknowledge any books or web pages you have consulted other than your texts.

Please write up problems entirely on your own (even if you discuss a problem with someone else). Don’t look at other peoples’ solutions.

Some homework questions will have been used in prior years. You may not consult any old problem set solutions from this or any other class.

Instances of potential academic misconduct will be referred to Judicial Affairs.


If you have a problem or academic advising question you want to discuss, please feel welcome to come chat. I am forever too busy, have a terrible memory for names, and essentially cannot recognize human faces at all. Honest. Yet it doesn’t mean that I don’t care about my students.

Closing remark

This class will provide your first small glimpse of theoretical computer science. I hope you like what you see.

Kind regards,
Phil Rogaway

Instructor’s homepage