ECS 120 – Theory of Computation – Fall 2012 – Phil Rogaway

You are responsible for all the information on this webpage.

Course homepage

The course webpage, www.cs.ucdavis.edu/~rogaway/12/fall12/, is a single click from my personal homepage, www.cs.ucdavis.edu/~rogaway/. It is not on SmartSite. Please visit the course webpage regularly: I will assume that any announcements I put there are seen within 24 hours.

Staff

Meeting times

Grading and comments on the problem sets

The expected breakdown is There will probably be three quizzes and nine problem sets. There will be no makeups for quizzes. If you are ill for a single quiz, please provide medical documentation and I will use the other two quizzes to determine your quiz grade. You cannot get a passing grade in the class without getting 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 may not not have adequate resources to grade all the problems on the problem sets then only some problems will be graded.

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 Thursdays at 10:10 am. Turn in your homework at the appropriately-labeled box in 2131 Kemper. Late homeworks will not be 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.

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.

Your writeups should be clear, terse, and neat. Aim for elegance. Obsess. I encourage you to typeset your solutions. I encourage 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 includes 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 course text is by Michael Sipser, Introduction to the Theory of Computation, 3rd edition, 2012. The book, like many academic texts, is unconscionably expensive (the list price is $196, and the actual price is also too high). It’s a very good book, but you are welcome to use a prior edition, or even an alternative theory-of-computation book (the material is highly standardized). We will cover most of what’s in Chapters 0–5 and 7.

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.

Video recording

I am trying to arrange that our class be video recorded; this way, if you didn’t understand something in lecture, or if you miss a lecture, you’ll get another shot at it. While there will be no attempt to capture the audience on video, incidental, occassional, or accidental capture of students on camera are hard to avoid. If you are concerened about that, please try to sit somewhere where the camera won’t pick you up. If you’re still worried about being picked up on camera, please feel free to come talk to me about it.

Collaboration

I discourage collaborating on homeworks. Learning the material in this subject is a struggle for which, for most serious students, homework collaboration probably hurts more than it helps. When I have asked theoretical computer scientists if they ever collaborated on theory or algorithms homeworks when they were undergraduates, they always answer no. (Well, of course you can explain such a finding in a variety of ways.)

All that said, I do not prohibit collaboration on homeworks, and some students sincerely believe that they learn better with it. If you do collaborate on homwork problems, the manner in which you collaborate will have a big impact on how much you get out of the homeworks (which, in turn, will likely have a big impact on how you do on exams). First, think about the problems and try to solve them on your own. If, after giving a problem some real though, you just can’t get it, then you might discuss it with other students, with me, or with your TA.

Academic misconduct

If you discuss problems with anyone, acknowledge him/her/them in your writeup. Also acknowledge any books which you consulted other than your own. Write up problems entirely on your own (even if you discuss a problem with someone else).

Some homework questions will have been used in prior years, either by me or by other professors. You absolutely 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. Anyone who produces a writeup that appears to have been influenced by an old problem-set solution will be referred to Judicial Affairs.

If you are having personal or academic problems which are motivating you towards academic misconduct, please come and talk to me, instead. I’m not an ogre. (Then again, most ogres say that.)

Some hints

Some students claim this is the hardest ECS class they have to take. 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 it is about learning any 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 nailed as possible. The homework points aren’t that much, but 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?