Syllabus for Foundations of AI CS 2710 and ISSP 2160

Kurt VanLehn

Fall, 2000

1 Objectives of the course

This course is a  graduate-level AI core courses required by the Intelligent Systems Program (ISP) of its graduate students. It is also the recomended course for preparation for the AI prelim in the Computer Science department.  At the end of this course, you will have sufficient background to tackled specialized AI courses (e.g., Machine Learning, Natural Language Processing), to read the primary literature and to begin your research.

2 Prerequisites

No previous training in AI is required.  However, students should know how to program in Lisp and Prolog. Three of the programming assignments will be in Lisp and one will be in Prolog. Students who are not fluent in Lisp should work through the first 3 chapters of Peter Norvig's Paradigms of AI programming: Case studies in Common Lisp or an equivalent text. Students who are not fluent in Prolog should work through the first 8 chapters of Clocksin and Mellish's Programming in Prolog or an equivalent text.  This material will not be discussed in class, so students should be experienced in learning programming languages on their own.  In particular, they should know that you don't learn the language by just reading a book.  You have to do the programming assignments as you go, and that can take hours.  In short, if you do not know these languages, you will have to spend probably and extra 50 to 100 hours learning them on your own during the first few weeks of the semester.  If you decide to do this, then it would be wise to contact other students who are also learning the language and meet regularly for moral support and to check each other's code.  As graduate students, you undoubtedly have the discipline to educate yourselves, particularly when the subject matter is just another programming language, of which you probably know several by now.  Alternatively, you can take CS1573 "AI Programming" in the Spring, then take this course next fall.  CS1573 teaches Lisp and Prolog, as well as some elementary AI.

Students must also have undergraduate-level knowledge of theoretical computer science. For instance, big-O notation, correctness, undecidability and intractability must be familiar concepts.

3 Texts

The only textbook for the course is Artificial Intelligence: A modern approach, by Stuart Russell and Peter Norvig. Students should already own reference books on Lisp and Prolog. The standard reference materials for Lisp (Common Lisp: The language by G.L. Steele) and for Prolog (Programming in Prolog by Clocksin and Mellish) are on reserve in the Computer Science Library (in Alumni Hall).

4 Programming environments

Students will be responsible for finding their own Lisp and Prolog programming environments and obtaining the appropriate helper code that comes with the textbook.  To obtain the latter from the textbook’s home page, students should copy code for the first 6 subsections (directories) of the code archive (labeled Utilities, Agents, Search, Planning and Uncertainty on http://www.cs.berkeley.edu/~russell/code/doc/overview.html).  For Windows and Linex users, CDs have been burned with public domain software including two kinds of Lisp, a Prolog, several text editors and a copy of the books code.  The CDs will be handed out on the first day of class.

5 Other details

The class meets on Tuesdays and Thursdays from 5:45 to 7:05 in Alumni Hall Rm 234.

I am usually available immediately after class for office hours. Otherwise, just call me first to see if I am in (624-7458), then stop by. My office is room 823 in the LRDC building. I read email once a day unless I am unusually busy.

6 Course requirements and grading

The course grades will be based on a final exam, a two midterm exams, 8 written assignments and 4 programming assignments. This is a graduate level course, and you are expected to turn in graduate-level performance even if you are not a graduate student. In particular, lack of fluency in Lisp and Prolog is not an acceptable excuse for poor performance on the homework assignments. If you do not feel comfortable turning out 300 or 400 lines of Lisp or Prolog code in a week, then you should consider taking CS1573.

Answers to the written homework will be handed out on the day it is due and discussed in class, so you must hand in the homework at the beginning of class or get a zero for the assignment. If you cannot attend class that day, you should contact me and arrange to hand the assignment in early. If you email your assignment, I must receive it before class begins. In fairness to the students who complete their assignments on time, no homework will be accepted after the solutions have been handed out.

However, it seems that almost everyone has at least one emergency that causes them to miss doing an assignment. Rather than make exceptions to the above rules on an adhoc basis, I will not count your lowest grade on the written assignments. That is, of the 8 written assignments, I will only count your grades on 7. Thus, if you cannot complete an assignment and hand it in on time, then you will get a zero on that assignment but it will not hurt you (unless you also get a zero on other assignments as well).

However, there are only 4 programming assignments, so it would not be good use this policy on those. Thus, you must hand in every programming assignment, but I will accept one programming assignment late. That is, if you cannot complete a programming assignment by the class when it is due, then bring it to the next class. As long as you do this only once, it will not hurt your grade. If you try to hand in a second assignment late, I will not accept it and you will get a zero on that assignment. Because some people might hand in an assignment late, we will not go over the programming assignments until the class meeting after they are due. At that time, every assignment will have been turned in, so it is safe to discuss solutions in class.

7 Schedule, lecture notes and assignments

See Lecture notes
 

Suggestions for next year's class