Princeton University
Computer Science Department

Computer Science 402
Artificial Intelligence

Rob Schapire

Fall 2010

General Information | Schedule & Readings | Assignmentsblackboard

Final exam information

Course summary

This course will provide a basic introduction to the core principles, algorithms and techniques of modern artificial intelligence research and practice.  Main topics will include:

Staff, lectures, office hours


TTh, 11-12:20, CS Building, room 104 (large auditorium).


Rob Schapire:  407 CS Building, x8-7726, schapire@cs
Office hours: by appointment.  To schedule an appointment, visit, or send me email if no convenient times are available.


Sina Jafarpour:  417 CS Building, sina@cs
Office hours: Monday  5:30-6:30pm.

Alex Lorbert:  F310  E-Quad, alorbert@
Office hours: Tuesday  9:30-10:30am.

Yuhui Luo:  F210 E-Quad, yuhuiluo@
Office hours: Monday  1:30-2:30pm

Gungor Polatkan:  431 CS Building, polatkan@
Office hours: Thursday  5-6pm

Hao Xu:  F310 E-Quad, haoxu@
Office hours: Wednesday  1-2pm


COS 226, or permission of instructor.

Although there are no formal math prerequisites, students should have taken enough math 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
Third edition
Prentice Hall, 2010

Important:  Officially, we will be using the third edition of this book.  Although this edition is strongly recommended since it is more complete and more up to date, you may choose to use the second edition instead which I have been told is much cheaper.  I will post on the website readings and homework assignments that are appropriate for both editions.

As I am sure you know, you can probably get a better price for the book by shopping around on the web.

Copies of this book are (or soon will be) 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 of 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) and The Java Programming Language (fourth edition) by Ken Arnold, James Gosling and David Holmes (available online here or from the university library).  Additional Java online documentation and tutorials are available here.

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

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.  This means that all homeworks must be completed and turned in, even if late.

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 blackboard (log on using your OIT login and password), bearing in mind that these posted grades do not include late penalties or extra credit.  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.

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 or two of the TA's, as listed on the assignments page.  The TA's in charge are 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 them.  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's in charge).  Although I do not have fixed office hours, I encourage students to come see me.  To schedule an appointment, visit, or send me email if no convenient times are available.

When sending email to any of us, please include "cos402" in the subject line (to help avoid difficulties with spam filters).


An email list is maintained by the university for all students who are registered for the course.  This list will be used by the course staff for important general announcements, such as last minute corrections to the homeworks, changes in due date, etc.  To avoid missing these announcements, it is imperative that you be registered for the course.

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 posted to the list.  Of course, if your question is specific to your own work, you will probably want to contact me or the TA's directly, and you should always avoid giving away the solution to a problem or programming assignment in a general posting.

You can post to the list either using blackboard, or by sending email to COS402_F2010@Princeton.EDU from your regular Princeton email account.