Princeton University
Computer Science Department

Computer Science 402
Artificial Intelligence

Rob Schapire

Fall 2004

General Information | Schedule & Readings | Assignments | Whiteboard

Final exam information

Course Summary

This course will provide a basic introduction to the core concepts and techniques of modern artificial intelligence research and practice.  Likely topics will include:

Administrative Information


TTh, 11-12:20, 102 CS Building


Rob Schapire: 407 CS Building, x8-7726, schapire@cs
Office hours: by appointment (via email), or just stop by.


Zafer Barutcuoglu: 216 CS Building, x8-5389, zbarutcu@
TA office hours: Monday 3-4 and Tuesday 2-3 (or by appointment).

Undergraduate Coordinator: 

Tina McCoy: 410 CS Building, x8-1746, tmmccoy@cs



COS 217 and 226.


Artificial Intelligence: A Modern Approach
by Stuart J. Russell and Peter Norvig
Second edition
Prentice Hall, 2003

(Be sure to get the second edition as the changes from the first edition were fairly substantial.)


Because it is the easiest and most appropriate language, programming in this course will be done in Java.  If you do not already know Java, you will need to learn it in the first couple weeks of the course (the first homework with programming will not be assigned until around Sept. 22).  For someone who has completed the class prerequisites, this should not be too difficult.  Java is a beautiful and widely used language that is well worth knowing in its own right.

There are a number of good books on Java.  I highly recommend:

Java in a Nutshell
by David Flanagan
Fourth edition
O'Reilly, 2002

Although optional, this book has been ordered at the U-Store.  The Princeton library also makes the entire book available online here.

In addition, substantial Java online documentation and tutorials are available from

One of the advantages of Java is that it comes with the standard Java Platform that includes packages for i/o, string manipulation, various data structures, etc.  You are free to make use of any of these.

To get started using Java, see the COS126 "Hello, World" assignment which describes the mechanics of using Java locally.

If there is interest, Zafer will lead a Java help session (time and place TBD).

Grading and workload

Regular homework assignments will be given roughly once every week or two, and will be a mix of written exercises and programming.  There will be a final exam but no midterms.  In principle, anything covered in lecture or in the assigned readings is "fair game" for the final.  However, realistically, you can expect that the emphasis will be placed on those same topics that were emphasized in lecture.

The final exam will be worth either 35% or 25% of your grade, which ever leads to a higher individual grade (with homeworks making up the remaining 65% or 75% of your grade). Said differently, if you do better on the final than you do on the homeworks, then the final will be worth 35%. On the other hand, if you do worse on the final than you do on the homeworks, then the final will be worth only 25%.  In all cases, failure to complete any significant component of the course may result in a grade of D or F, regardless of performance on the other components.

Final grades may also be adjusted slightly upward for regular and positive class participation.

See the Assignments page for important information on the late policy and collaboration policy.


As soon as possible, please join the course mailing list by visiting and following the instructions for subscribing.  This list will be used by the course staff for general announcements, such as last minute corrections to the homeworks, changes in due date, etc.

We also have set up a discussion board on whiteboard which can be used by students for discussing course material, general-interest questions about the homeworks, etc.  Zafer will attempt to monitor and respond to questions on this discussion board.  However, if you have an urgent question, or one that is specific to your own work, you will probably want to contact me or Zafer directly.

In exceptional cases, if there is something that you think the class urgently needs to be aware of (such as a serious problem with some of the code that was provided on a homework), you can post directly to the entire class list by sending mail to cos402 at