EECS 543: Knowledge-Based Systems, Fall 2000

New Announcements

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.




Lecture Transcripts

Lecture Schedule

General Information

Lectures: Mon/Wed, 1:30-3:00, 3427 EECS

Instructor: Edmund H. Durfee

office: 120 ATL

e-mail: [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:

  1. Common Lisp (including its object-oriented extension, CLOS)
  2. Prolog
  3. SOAR (a problem solving architecture based on production rules)

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.

On-line Material:

Lisp resources:

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.

·         Digitool's list of Internet MCL resources

Some Prolog Programming Resources

Some Soar Resources