ECS 120 – Theory of Computation – Spring 2013 – Phillip Rogaway

You are responsible for all information on this webpage.

Homepage

The course webpage is a single click from my homepage, www.cs.ucdavis.edu/~rogaway/. It is not on smartsite. Please visit the page regularly: I will assume that any announcements I put there will be read within 24 hours.

Staff

Meetings

Manners

Grading

The expected breakdown is I expect there to be four quizzes, each 15-30 mins (these take the place of my usual midterm or midterm plus a couple quizzes). If you are ill for a single quiz, please provide medical documentation and I’ll use the other three quizzes to determine your quiz grade. To get a passing grade in the class you must get a passing grade on the final. In assigning grades I may deviate from the stated numerical percentages if I see a compelling reason to do so. We no longer have adequate instructional resources to grade all the problems on all the problem sets, so I expect that only a random problem or two will be graded from each problem set. Sorry; I know that’s not ideal.

If you believe a homework problem was misgraded, please return it to the TA, with a note, within one week of when the problem set is returned. If you think that a quiz or the midterm was misgraded, please return it to the instructor, with a note, within one week of when the exam was returned.

Homeworks are due on Fridays at 10:30 am. Turn in your homework at the appropriately-labeled box in 2131 Kemper. As a convenience to you, I will also accept homeworks that are placed on the table in the front of the classroom before lecture begins. Beware that once I start lecturing, at 11:00 sharp, I gather these up and don’t accept additional homeworks. Late homeworks are not accepted.

Much of what one learns in this course comes from trying to solve the homework problems, so please work hard on them. I intend for you to find some of the problems challenging. If you’re keeping up with the course and are reasonably creative, you should be able to solve most or all of the problems within a few hours. But a few of the problems you might not be able to get. Don’t let this discourage you. Doing a conscientious job on the homeworks is the best preparation for the exams, and it is essential for mastery of the material.

In preparing homework solutions, you absolutely may not consult old problem-set solutions, either the instructor’s or another student’s, either of this course or someone else’s course.

I slightly adjusted the homework/final percentages during week-1: deciding that homeworks were slightly underweighted, I went from (15% homework, 45% final) to (20% homework, 40% final).

Oddly, many students are more willing to spend long hours hacking in front of a machine than to spend them peacefully thinking beneath an old oak tree. Give the other mindset a try, I suggest.

Your writeups should be clear, terse, and neat. Obsess and aim for elegance. I encourage you to typeset your solutions. Top students, including anyone bound for graduate school, to use LaTeX, a typesetting program especially good for mathematical material. The elegance you should strive for does include pretty typesetting. As with an English paper, please do not turn in a first draft: you need to refine your writeup a time or two, making it shorter, simpler, and cleaner.

For additional information, see my note on grading.

Text

The official course text is by Michael Sipser, Introduction to the Theory of Computation, 3rd edition, 2012. We will cover most of what’s in Chapters 0–5 and 7.

The book, like many academic texts, is unconscionably expensive (the list price is about $216; the actual price is about $170). That said, it appears that one can buy a used copy and sell it back for about $36 less than you paid for it; thought of as a rental, the price seems much more equitable.

Siper’s book is good, but you are welcome to use a prior edition, or even an alternative theory-of-computation book (the material is highly standardized).

Prerequisites

ECS 20 is a “serious” prerequisite in the sense that you will not do well in this course if you do not have a level of mathematical maturity consistent with having taken, and understood, ECS 20. In particular, you need to be able to understand and create proofs. If you are a CS major who has trouble with math, consider taking some or all of your math electives before taking this class.

Collaboration

For this particular class, I discourage collaboration on homeworks. I beleive that learning the material in this subject is a struggle for which lots of time working with others probably will not help. When I have asked theoretical computer scientists if they collaborated on theory or algorithms homeworks when they were undergraduates, they answer is invariably no. (Of course you can explain that in a variety of ways.)

The above said, I do not prohibit collaboration on homeworks, and some students sincerely believe that they learn better with it. No doubt some of them are right. If you do collaborate, the manner in which you do so may have a profound impact on how well you understood the homeworks (which will likely have a profound impact on how you do on exams). First, think about the problems. Figure out precisely what they mean and try to solve them on your own. If, after giving a problem some real thought, you still can’t get it, then you might wish to discuss it with other students, with me, or with the TA. That’s my suggestion.

Academic misconduct

If you discuss problems with anyone, acknowledge him/her/them in your writeup. (You’re not penalized in any way for doing this; it’s just a matter of politeness and academic integrity.) Also acknowledge any books that you consulted other than your own. Write up problems entirely on your own if you worked a problem out with someone else.

Some homework questions will have been used in prior years, either by me or by other professors. You may not consult old problem-set solutions for this class, nor those of any related classes. Not “official” solutions dug up from the web, and not those from another student in a prior term.

I make it a policy to refer all academic misconduct matters to Student Judicial Affairs (SJA). If you are having personal or academic problems motivating you towards academic misconduct, please come and talk to me instead. I’m not an ogre. (Then again, most ogres say that.)

Hints

I’ve heard some students claim this to be the hardest class they take at UCD. So let us give you a few hints explaining what I am after and how to do well.

First, I really want you to think. Don’t try to solve the problems by doing some sort of “pattern matching.” It might sound like the quickest way to get there, but it just doesn’t work. This course is about learning a certain sort of problem-solving skill more than about learning some specific material. Keeping this in mind may help put things into better perspective.

Even more than with other courses, you must not get behind. The class keeps building on what has come before. Don’t lose the thread. If you get seriously behind you will probably find it impossible to get back on track.

Be selective in note-taking. Actually, I would suggest that you take no notes at all: the book is good, and I think it works best to sit back, listen, think, and follow. If you feel you must have notes, you might team up with others and take turns.

If you get involved in a study group, don’t let it degenerate into an attempt to get as many homework problems aren’t worth that much of the grade, and their purpose is to guide you to learning how to do this stuff. If you don’t learn the material in the homeworks, you won’t be able to do the exams. You’ll probably learn more struggling on your own.

Parting thoughts

This is one of my favorite courses in the CS/CSE curricula. We get to forget all those silly machines and get at the question of what is computation. What could be more interesting or fun?