CS 188, Fall 2005
Introduction to Artificial Intelligence
Instructor Stuart Russell
727 Soda Hall,
russell AT cs.berkeley.edu;
(510) 642 4964
Office hours Mon 10-12, Tues 4.30-5.30 in 727 Soda Hall (exccept last Tues of each month).
- John DeNero, denero AT eecs.berkeley.edu, 492 Soda Hall, 643-4204
Office Hours Mon 4-5 in 551 Soda, Th 11-12 in 711 Soda. Section page.
- Blaine Nelson, nelsonb AT eecs.berkeley.edu, 443 Soda Hall, 642-8248
Office Hours Wed 3-4 and 5-6, Fri 11-12 in 751 Soda.
- Qian Ying Tang, qiantang@eecs, 290 Cory, 643-7676
Office Hours Wed 4-6 in 711 Soda.
Lecture TuTh 12.30-2, 10 Evans
Discussion sections (Will meet in Week 1 to provide an overview of LISP)
101, Tu 4-5pm, 105 Latimer (John DeNero)
103, Wed 10-11am, 6 Evans (Blaine Nelson)
104, Wed 12-1pm, 4 Evans (John DeNero)
105, Wed 1-2pm, 87 Evans (Qian Tang)
106, Wed 2-3pm, 87 Evans (Qian Tang)
108, Wed 4-5pm, 31 Evans (Blaine Nelson)
Final Exam Monday Dec 19th, 12:30-3:30pm, 145 Dwinelle.
Enrollment in the Course
Course Requirements and Grading
Detailed Syllabus, Readings, Due Dates
Computer Accounts and Course Software
The prerequisites for the course are as follows:
The main programming language used in the course will be Common Lisp.
Programming experience in Lisp or one of its dialects (such as Scheme,
used in 61A) is strongly recommended. Familiarity with the basic ideas
of data structures and complexity (as covered in 61A or 61B) is also
useful. Calculus will come in handy in one or two places.
Propositional logic and probability theory, as covered in CS 70, are
important prerequisites but they will be thoroughly reviewed in this
course. As usual, ask me if you're not sure about whether to take the
- 61A or (61B and consent of instructor);
- 70 or Math 55.
Enrollment in the Course
You can find out about enrollment limits, etc., from
the Online Schedule of Classes or the TeleBears course page.
I expect that all qualified
students will be able to take the course.
Please remember that the instructor and TAs have no
control over who gets in. If you are not yet enrolled
as of the first day of lecture and still
want to be considered for participation in the course,
you should attend class and file an appeal form by the end of the first week of classes.
are available from the CS Office on the 3rd floor. (Michael-David
Sasson, 379 Soda, msasson@cs might be able to advise you on the status
of your appeal, but remember that he's quite busy.)
Here are the policies
that govern admission into classes, and here are some
frequently asked questions about admission.
Course Requirements and Grading
Late policy: NO LATE HOMEWORKS WILL BE ACCEPTED, with the following exception:
Over the semester, you have a total of 5 FREE
LATE DAYS to cover for emergencies.
If you wish to use one or more of these, indicate it clearly on your homework.
Assignments are to be turned in by midnight on the due date.
- Midterm (20%)
- Final (40%)
- Assignments (40% total) -- one simple set of LISP exercises (1%), 3 written assignments (5% each),
3 project assignments (8% each). The written assignments are to be done
individually, the project assignments in pairs.
Grading policy: the class is not graded on a curve.
Grade is based on total percentage as follows:
[90 -- 100]%
[85 -- 90)%
[80 -- 85)%
[75 -- 80)%
[70 -- 75)%
[65 -- 70)%
[60 -- 65)%
[55 -- 60)%
[50 -- 55)%
[45 -- 50)%
[40 -- 45)%
[35 -- 40)%
[0 -- 35)%
These boundaries are sharp, i.e., no rounding up.
Some assignments and exam questions may offer extra credit;
good performance on extra credit questions may result
in an improved grade, at the instructor's discretion.
Many people find it hard to get less than 35%.
If necessary, you can also get an F by skipping
the midterm or the final.
- Stuart Russell and Peter Norvig, Artificial Intelligence: A
Modern Approach, SECOND EDITION, Prentice Hall, 2003 (Required)
The first edition (red cover) is not usable for
the course as it is now taught.
- Paul Graham, ANSI
Common Lisp, Prentice Hall, 1996 (Recommended)
- Notes on Lisp;
especially useful if you know Scheme but not Lisp.
- Tutorial on how to use Lisp,
emacs, and the AIMA code.
FAQ has lots of useful information on Lisp.
- Another useful bookmark is the online version of Common
Lisp, the Language, 2nd Edition, by Guy Steele -- this has the full text
of the complete reference manual for Common Lisp. The differences from ANSI Common Lisp are minor.
Assignments are due by midnight on the day indicated.
should be turned in using the submit program
from an instructional (named or class) account, as described here.
may be placed in the homework box in 283 Soda, or they may be turned
in online using submit.
The written assignments are to be done
individually, the project assignments in pairs (except for Assignment 0).
Discussion of assignments among students is permitted and encouraged, but solutions
and programs may not be copied. I would recommend NOT mixing discussion
with writing up of solutions or code. See the
EECS Department Policy on Academic Dishonesty
and Kris Pister's policy for further explanation and examples.
It is a good idea to start your programming assignments as soon as you can; computers
have a tendency to go down the night before an assignment is due. There
is evidence from past courses that students who start working well
before the due date take about one third the
time to complete their work compared to students who wait until the last
minute. In general, it will be worth your while to spend more time away
from the workstation thinking about programs than struggling with them
- Assignment 0, due 9/8, 1% of grade. Solution 0
- Assignment 1, due 9/20, 5% of grade. Solution 1
- Assignment 2, due 10/9, 8% of grade. Solution 2
- Assignment 3, due 10/16, 5% of grade plus 1% bonus. Solution 3
- Assignment 4, due 11/4, 5% of grade. Solution 4
- Assignment 5 part 1, due 11/14, 3.2% of grade
- Assignment 5 part 2, due 11/28, 4.8% of grade (+ up to 2% extra credit).
- Assignment 6 part 1, due 12/5, 4% of grade
- Assignment 6 part 2, due 12/16, up to 5% extra credit.
Old midterms (postscript)
- Fall 91, Fall 91 solutions
- Fall 92, Fall 92 solutions
- Spring 93 (first), Spring 93 (first) solutions
- Spring 93 (second), Spring 93 (second) solutions
- Fall 93 (first), Fall 93 (first) solutions
- Fall 93 (second), Fall 93 (second) solutions
- Fall 95
- Spring 96, Spring 96 solutions
- Fall 97, Fall 97 solutions
- Fall 99, Fall 99 solutions
- Spring 02, Spring 02 solutions
- Fall 02, Fall 02 solutions
- Spring 04, Spring 04 solutions
- Spring 05, Spring 05 solutions
- Fall 05, Fall 05 solutions
Old finals (postscript) (some incomplete; some missing, not available)
You will have access to department UNIX workstations for this course.
If you already have a "named" account or are enrolled in another
EECS course this semester that provides named accounts, you can use
that account for this class. Otherwise, you will get a "class" account
specifically for CS 188 -- see
for New Instructional Users as well as the departmental
Please use your account responsibly and be considerate of your fellow
students. You will end up spending less time (and have a more pleasant
experience) if you do not wait until the night before the assignment due date
to fight for computer cycles.
We will use LISP. The amount of programming required is not large,
and we don't expect you to be an expert in LISP, but we do expect that
you've worked with Scheme in CS61A, and that you can more or less pick
up the differences between the two (which will be reviewed by the TAs
in the beginning of the semester, and will also be the subject of
Assignment 0). You will have to work with some code we have written,
so please get up to speed on LISP quickly.
The particular implementation of LISP we will use is called Allegro
Common LISP (ACL or alisp), from Franz, Inc. There is copious, if awkwardly organized,
ACL is available on the
Solaris servers (e.g., star.cs, nova.cs, solar.cs) but apparently not on the
Solaris X86 PCs in 277 Soda.
You can use other machines too, and the source code should work
in most versions of Common LISP, but
remember that compiled code runs only on the architecture for which it
You run ACL by executing the command
(but consult the official instructional
LISP help page for updates, etc.)
If you like, you can do the assignments on your own machine. Franz
Inc. offers free trial
downloads of Allegro CL 7.0 for Windows
and Linux. The trial edition is indefinitely renewable and includes a
The project assignments will build on the AIMA code that
accompanies the textbook. Currently there are two versions of this code.
- The version available to the general public
is mainly geared to the first edition of the book, but has a lot of
useful documentation. This code is NOT compatible with the code we
will be using in class.
- The version for use in this class, which matches the second edition
and, when complete, will become the official public version.
There will be several ways to access the code:
In all cases where you are using your own copy of the code,
remember to change *aima-root* in aima.lisp, using the right directory name separator
(e.g., \\ for Windows machines).
- You can browse the source code here.
- On an instructional machine, you can access the code directly on the instructional machines at ~cs188/code-2e-188.
You can load ~cs188/code-2e-188/aima.lisp into Lisp and use the class code as is, or you can
copy the whole directory to your own account.
- If you want to use
the code on other machines (e.g., home PCs under Windows or Linux),
you will probably want the source-only
I recommend working through the
Notes on Lisp and the
tutorial on how to use lisp, emacs, and the AIMA code; it takes
only a few minutes.
The class newsgroup is ucb.class.cs188.
Messages can be read and posted from your Internet browser (e.g., Mozilla).
When you first subscribe, the browser may ask you for the "NNTP
server"; the UCB server is agate.berkeley.edu, which is accessible
from any UCB machine. You can also log into
http://inst.eecs.berkeley.edu/webnews/ with an instructional ID
and password. If you try to read the newsgroup from some other
server than agate (e.g., your ISP's NNTP server), you'll find that
your posts don't make it to Berkeley's server. Send messages to
firstname.lastname@example.org to get them posted.
The class newsgroup is suitable for asking general questions about
what the homework questions mean, how the course software works,
etc. Do not ask or answer specific questions about homework solutions,
e.g., "What's the right answer for number 2?" One of the course TAs
will be checking the newsgroup fairly regularly, but for "official"
answers to important questions you might want to email your own TA
directly, AFTER you have checked to see if the question has already
been answered on the newsgroup!