CS 188, Fall 2005
Introduction to Artificial Intelligence


11/28/05: Assignment 6 Part 2 cancelled - see newsgroup/email
11/28/05: Assignment 6 Part 1 posted, due 12/5
11/14/05: Assignment 5 Part 2 posted, due 11/28
11/10/05: Assignment 4 solutions posted

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

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
Reading List
Detailed Syllabus, Readings, Due Dates
Lecture Slides
Old exams
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 course.

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. Appeal forms 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 answers to 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.

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.

Reading list


Assignments are due by midnight on the day indicated.

Programming assignments should be turned in using the submit program from an instructional (named or class) account, as described here.

Written assignments 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 on-line.

Old midterms (postscript)

Old finals (postscript) (some incomplete; some missing, not available)

Computing Facilities

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
Information for New Instructional Users as well as the departmental policies.

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, documentation available.

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 was compiled. 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 compiler.

Course Software

The project assignments will build on the AIMA code that accompanies the textbook. Currently there are two versions of this code.

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.

Class newsgroup

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 ucb-class-cs188@agate.berkeley.edu 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!