Princeton University
Computer Science Department

Computer Science 302
Introduction to Artificial Intelligence

Rob Schapire

Fall 2003

General Information | Schedule & Readings | Assignments | Announcements | 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


MW, 11-12:20, 105 CS Building


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


Miro Dudik: 413 CS Building, x8-1797, mdudik@cs
Note that Miro holds his Monday evening office hours at Cafe Vivian (in the Frist campus center).

Matt Hibbs: 001A CS Building, x8-6862, mhibbs@cs

TA office hours: Monday 7:30-8:30pm; Tuesday 4-6pm; Thursday 9:45-10:45am.

Note: Only the TA in charge of the next due homework has office hours.  For instance, until Oct. 7, the due date for HW#2, only Miro will be holding office hours.

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. 24).  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 many data structures, i/o, string manipulation, etc.  You are free to make use of any of these.

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

Matt Hibbs will lead a Java tutorial on Friday, Sept. 19 at 3-4pm in 105 CS building (our regular classroom).

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.  Grades will be based roughly 65% on homeworks and 35% on the final.  Final grades may also be adjusted slightly upward for regular class participation.

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


Please check this website regularly for course announcements.  The course newsgroup is pu.cs.302.  And as soon as possible, please join the course mailing list which is administered using majordomo.  To do so, send email to with the message "subscribe cs302".  Mail to the entire class can be sent to cs302@cs, although in most cases, posting to the newsgroup will be preferred.  Mail to me and both TA's can be sent to cs302-help@cs.

In general, if you have a question/comment that will be helpful to other students, then you should post it to the newsgroup; if you have a question/comment that is specific to your work, or if you must reveal portions of your work to adequately express your question/comment, then you should send us e-mail.