|
David Scot Taylor 212 MacQuarrie Hall Assistant Professor Dept. of Computer Science San Jose State University Phone: (408) 924-5124 (email works better) Email: taylor "at" cs.sjsu.edu My office hours for Spring 2009 : Tue/Thur 8:20-9:00, (the last 10 minutes in MH222), 11:50-12:30, 14:45-15:30, or by appointment.I will also have office hours on Friday, 5/15, from 11 a.m. until noon. |
Prerequisite Courses
The official course prerequisites are CS154 or CS155 or their
equivalents, though CS154 will not be so closely related. CS255 would
be best of all. An A or A+ in CS146 with instructor's permission may
also suffice, please see me. I expect that you understand asymptotic
notation and analysis, algorithm analysis, and have some familiarity
with algorithm design.
Textbooks and References
The required textbook is:
Probability and Computing : Randomized Algorithms and Probabilistic
Analysis
Michael Mitzenmacher and Eli Upfal
Cambridge University Press, 2005, 0-521-83540-2.
You can find a link to errata at the author's homepage: http://www.eecs.harvard.edu/~michaelm/. The first printing has 5 pages of errata, so this is worth printing out.
A handy (but not required) book for background material is:
Introduction to Algorithms, 2nd Edition
Cormen, Leiserson, Rivest, and Stein
ISBN: 0-262-03293-7 MIT Press, 2001
(The 1st Edition is just as good for background information.)
The most widely used book on the topic is:
Randomized Algorithms
Rajeev Motwani and Prabhakar Raghavan
Cambridge University Press, 1995, ISBN: 0-521-47465-5.
It is a very good book, but a bit difficult. I am trying the
Mitzenmacher/Upfal book for the first time, it is supposed to be more
approachable.
Additionally, it may be helpful to have some book to use as a probability reference.
Course Objectives
Course Requirements and Grading
Besides the given course textbooks and me, all sources used to help in the homework (other texts, other people) must be referenced properly. If you discuss the problems with any person not enrolled in the class, you should explain who that person is. Failure to properly reference is considered cheating. Many of the problems themselves have references listed, which you may use (but not plagiarize), but please reference them and do not use web-sites (other than to find the references) to help you with your homework. I realize that there are worthwhile sites on the web, but I have sometimes found that students get into trouble, "borrowing" a bit too much from other sites. So, please do not use other web-sites as references. (If you think that you have good reason to, please discuss it with me first.)
Quizes: On some days, I may give an unannounced quiz on the homework material due that day. This would generally be done at the start of class. In terms of grading, the quiz would count as homework.
After computing weighted averages, I assign grades by looking for natural gaps. Thus, adding a few points to one homework assignment or test will generally not change your letter grade.
I reserve the right to improve a student's grade by up to 1/3 grade due to class participation.
Topics
The material we will cover in this course is not set in stone. I have
used this textbook once before, but in the past have generally
concentrated on provable randomized algorithm much more than
heuristics. The initial plan is to cover most of the first 7
chapters, but we may drop some of those topics in order to cover
other, more applied techniques. (The topics already mentioned on day
one (Markov Chains, Hidden Markov Models, Genetic Algorithms, Hash
Functions, Monte Carlo Simulations, and Simulated Annealling) could
already be enough to fill a semester, but we will still start with the
theoretical underpinnings of randomized algorithms.) Generally, the
less students speak up, the faster I go, and the less they understand,
which leads me to...
Class Participation
Class participation and feedback are very important to keep the
course interesting. If I am covering material too slowly or
quickly, or if I am not clearly explaining things, you must let me
know. I prefer an interactive learning environment. If you
disagree with something I say, speak up. Argue with me in front of
the class. It will make the class better, and right or wrong,
constructive interaction will not not hurt your grade. If you are
correct, clearly my mistake should be corrected. If you are
incorrect, probably I have not explained something clearly anyway, and
at least half of the class is confused by it. Point it out right then
and there.