Syllabus for Foundations of AI CS 2710 and ISSP 2160
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