Students should be familiar with uninformed search algorithms
(depth-first and breadth-first methods), discrete probability (random variables,
expectation, simple counting), propositional logic (boolean algebra), basic
algorithms and data structures, basic computational complexity, and basic
calculus. Students should also be aware that course assignments will require
the use of the Java programming language.

The work for this course will consist of three
take-home project assignments and two exams: a quiz and
a final. The projects
will count for 60% of the grade (20% each), and the exams, 40% (15%
for the quiz and 25% for the final).

Late Policy
for Projects: 10% off for each calendar day late. No credit if
more than 5 days late.

We want to strongly encourage collaboration as a way
for students to come to understand the material better. Project 1 is
an individual assignment, but you may do Project 2 and Project 3 in
groups of two, turning in a single write-up. You do not have to
partner with the same person for both of the projects and you can
choose to do either or both of them on your own.

If you are looking for a partner for an assignment, email
the class list asking if anyone is available. You are also quite welcome
to discuss the assignments as much as you'd like between groups. The ultimate
requirement is this: Don't put your name on anything you don't understand.
There will, of course, be no collaboration allowed on the exams.