Correction to PS6: As was brought up in class, capability number 5 is already included in the simple-bot.
Office Hours: Friday from 2-3pm.
Reminder: In-class exam on December 13 starts at 1:30 (not 1:40).
An example exam is here.
PS5 Feedback:
Average score: ~79; Median: 85; High: 95; Low of submitted assignments: 60
Grading comments:
Most people did pretty well on task 1 and task 2. Points were
typically lost for either
not explaining their approach (how does select choose
a 'difficult' goal) or not
comparing their results to Bratko's. Task 3 was
more of a mixed bag - people
generally tended to get it mostly working, with
a few bugs left. I tried to
be generous with the partial credit if I thought
they had the right idea.
(I broke it down as 30 pts
for task 1, 40 for task 2, and 30 for task 3)
The quality of the writeups also varied considerably. Some
folks
clearly put a lot of time
into explaining what they did and clearly presenting
their results. For other
people, it was obviously a last-minute afterthought.
A common problem/annoyance
was presenting the results of their tests as
many pages of Prolog output,
rather than summarizing the data in a table.
Since this assignment is
more open-ended than task 4, I put more weight on
their explaining what they
did and why, and less on issues like syntax.
Also, there's a few students who have difficulty expressing
themselves
in English. I tried to
divine their intent where I could, and made notes if
a sentence was just too tough
to parse. I didn't typically take off for this
unless it was part of a
larger problem, such as a poorly organized explanation
of their heuristics, for
example.
REMINDER: For PS4 (and beyond), you must turn in hardcopy of your writeup, code, and testing. You should also email just your code.
Lectures: Mon/Wed, 1:30-3:00, 3427 EECS
Instructor: Edmund H. Durfee
office: 120 ATL
e-mail: durfee@umich.edu [asynchronous communication preferred]
fax: (313) 763-1260 [if you must]
office hrs: Right after class, and by appointment.
This course can be used to satisfy the following degree requirements:
· AI kernel requirement for CSE master's students (but it will NOT replace 492 for the purpose of PhD qualification).
Knowledge-based systems (also called just knowledge systems) are sophisticated AI programs that solve complex problems. These programs have found considerable use in industry, and are finding exciting new applications in cyberspace (e.g., as intelligent agents). Knowledge-based systems are particularly suited to these kinds of applications because they help users define and modify knowledge for tasks in a way that users are comfortable with, and then use this knowledge based on complex inference techniques.
The goal of this class is provide students with an understanding of the principles and system-building experience needed to create a knowledge system by introducing the student to programming languages and techniques that promote a knowledge-based, or declarative, approach to software development. Although a rigorous characterization of what this means is elusive (though we will attempt to accomplish this in the course), what it amounts to practically is emphasis on programming constructs that facilitate:
Historically, researchers in the field of Artificial Intelligence have identified these properties as important for development of "intelligent" (whatever that means) programs, and thus have developed languages embodying them. We will explore this "knowledged-based" programming methodology through substantial exercises in three "AI" languages:
Successful students will complete the course with a working knowledge in each of these languages, and more importantly, with a broader perspective on programming itself.
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Norvig (see also here).
PROLOG Programming for Artificial Intelligence by Bratko.
2(a).
if you don't have a .emacs file, start one now
2(b).
put the following in your '.emacs' file:
(setq
inferior-lisp-program "cl")
run
emacs, (re-run it if you used emacs to make that inclusion)
M-x
run-lisp
type ':help' at the prompt for help, in general, allegro responds to things starting with a colon, the listener responds to everything else.