Princeton University
Computer Science Department

Computer Science 402
Artificial Intelligence

Rob Schapire

Fall 2007

General Information | Schedule & Readings | Assignments | moodle

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, Friend 006 (note the room change, and disregard any other room assignments posted by the registrar)


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


Joe Calandrino:  103c CS Building, x8-0419, jcalandr@cs
Office hours: Tuesday 3-4pm, or by appointment.

Indraneel Mukherjee:  103c CS Building, x8-0419, imukherj@cs
Office hours: Monday 7-8pm, or by appointment.

Yun Zhang: 223 CS Building, x8-0254, yunzhang@
Office hours: Wednesday 11am-12pm, or by appointment.

Undergraduate Coordinator: 

Donna O'Leary:  410 CS Building, x8-1746, doleary@cs



COS 226, or permission of instructor.

Although there are no formal math prerequisites, students should have taken enough math as to feel comfortable with the mathematical treatment that will be given of much of the material.  Calculus and linear algebra certainly should be sufficient, as should be COS 340 or 341 or a course on probability and statistics.  Come see me if you are unsure.


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.)

Copies of this book are on reserve at the Engineering Library.


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.  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, including Java in a Nutshell (available online here or from the university library) as well as the books in the official Sun Java Series, such as The Java Programming Language (fourth edition) by Ken Arnold, James Gosling and David Holmes.  This last book has been ordered at the bookstore and is also available online here or from the university library.  Although highly recommended, it is only optional and is not required for this course.  Additional 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 (and encouraged) 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.  For this course, you must use Java Standard Edition 5.0 (a.k.a. version 1.5.0).

Since there was not sufficient interest, there will not be a tutorial given on Java by one of the TA's.  However, if you need help getting started with Java, you should contact the TA's directly who can provide one-on-one help, and can take you through the material that would have been covered in such a tutorial.

Grading and workload

Regular homework assignments will be given roughly once every two weeks, 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, or slightly downward for conspicuous absence from lecture.

You can track how well you are doing using moodle.  As a rough guide, if the total number of points you get on your homeworks falls close to or below 65% of the total points possible, then you may be heading for a final grade of D or F, and you should certainly seek assistance.

See the Assignments page for important information on the late policy and collaboration policy, and for information about how the homeworks are graded.


Auditors are welcome, and are encouraged to take part in class discussions.  If you wish to receive official "credit" for auditing this course, you must attend the vast majority of the lectures; this requirement may in exceptional circumstances be waived if you complete a substantial fraction of the course work instead.

Getting help

The TA's and I are here to help, so don't hesitate to contact us or come see us if you are having trouble.  Because they can be challenging, it is very important that you start the homeworks early, not only so that you have enough time to finish them, but also so that you can get help if you have questions or difficulties.  You should not assume that someone will be available to help you at the very last minute (especially on weekends or at night).

Most of the homeworks have two parts: programming and written exercises.  For each homework, each of these two parts is assigned separately to one of the three TA's, as listed on the assignments page.  The TA in charge is responsible for all aspects of that part of the homework (including grading it), so questions that are specific to a particular homework (whether before or after it has been turned in or graded) should be directed to the TA in charge.  General questions regarding material covered in class or the readings can be directed to any one of the TA's.  If you cannot make it to office hours, you can set up an appointment via email.

Like the TA's, I am also available to answer questions on anything (although some matters, such as grading of particular homeworks, should be directed first to the TA in charge).  Although I do not have fixed office hours, I encourage students to come see me.  You can send me email to set up an appointment, or just stop by.


As soon as possible, please join the course mailing list by visiting and following the instructions for subscribing.  When signing up for the mailing list, please provide your name, especially if you are using a non-Princeton email address.  To prevent spam, email addresses that cannot be identified as legitimate will be removed from the list.

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.  This list can also be used by students for discussing course material, general-interest questions about the homeworks, etc.  The TA's will attempt to monitor and respond to questions on this list.  Of course, if your question is specific to your own work, you will probably want to contact me or the TA's directly.

You can post to the list by sending mail to  (Note that you can only post to the list using the email address you used to subscribe to it.)