Syllabus


General Information


Instructor


Dr. Franz J. Kurfess, Cal Poly Computer Science Department (http://www.csc.calpoly.edu/~fkurfess/)

Office Hours

My office hours are tentatively scheduled for Tue/Thu 2:10-3:00 pm, and Wed 2:10-5:00 pm. My office is in building 14, room 218.

Class Times


• Lecture: TuTh 3:10PM - 4:30PM in 14-257
• Lab: TuTh 4:40PM - 6:00PM in 14-257

Course Description

"In-depth treatment of knowledge representation, utilization and acquisition in a programming environment. Emphasis on the use of domain-specific knowledge to obtain expert performance in programs." [from the Cal Poly Catalog 2007-09]. Prerequisites: CSC 480 (Artificial Intelligence)

Goals and Objectives

The goal of the course is to understand important problems, challenges, concepts and techniques from the field of Knowledge-Based Systems. In order to achieve this, students learn how to analyze, design, and implement programs and systems of varying complexities. The core aspect of these systems is their ability to deal with knowledge in various forms. This includes the acquisition of knowledge from human experts, computer-based knowledge repositories, or via learning techniques from raw data such as delivered by sensors or data bases. Knowledge also has to be stored in an internal format that is suitable for computer-based storage and processing, while still being accessible to human inspection. Then knowledge needs to be processed, where one important activity is the generation of new knowledge from existing pieces. Based on the new and existing knowledge, decisions must be made for the system, or agents involved with or served by it, to perform some actions. For many systems, an explanation or verification of their suggestions in a format understandable by developers, domain experts or regular users can be important.

Textbooks


I am restructuring the contents of the course to include more recent developments in the area of Knowledge-Based Systems, in particular the use of ontologies and related methods that have become popular in connection with the Semantic Web. The slides I’m using for the lecture will be available through this Web page; see the links from the topic entries in the schedule.
To my knowledge, there are no textbooks available that cover the course topics well. The books below provide background for the main topics in the class. There is a column in the course schedule which indicates the chapters in the books that correspond to a topic discussed in class. I will also indicate other resources that provide relevant information.

Semantic Web



Expert Systems

In the past, when the emphasis of the course was on expert systems, I have used the textbooks listed below. Some of them seem to have been updated to reflect more recent developments.
  • Rajendra A. Akerkar and Priti S. Sajja, Knowledge-Based Systems; Jones & Bartlett Publishers, 1st Edition, 2009 [Amazon].
  • J. Giarratano and G. Riley: Expert Systems -- Principles and Programming, 4th Edition,Thomson/PWS Publishing Company, 2004 [Amazon].
  • Ernest Friedman-Hill: Jess in Action, Manning Publications, 2003 [Amazon]. This is the reference book for Jess, a CLIPS-compatible, rule-based programming environment in Java.
  • A. Gonzalez and D. Dankel: The Engineering of Knowledge-Based Systems. Second Edition, Prentice Hall, 2004 [Amazon].
  • Peter Jackson: Introduction to Expert Systems. Addison Wesley Longman, 1999. ISBN 0-201-87686-8 [Amazon].
  • C. Nikolopoulos, "Expert Systems" Marcel Dekker Inc. 1997. ISBN 0 8247 9927 5 [Amazon].

Artificial Intelligence

A very nice overview of the literature on expert systems is at the Web site of the American Association of Artificial Intelligence (AAAI), http://www.aaai.org/AITopics/pmwiki/pmwiki.php/AITopics/ExpertSystems. It contains links to many online articles and resources on knowledge-based systems.

Protégé, Jess, and CLIPS


For some assignments, lab exercises, and the term project, we will use the Protégé ontology environment, and the CLIPS or Jess expert system shells.
Protégé (http://protege.stanford.edu/) is an ontology development environment made available by Stanford University’s Center for Biomedical Informatics Research. It is widely used in academic and real-world environments for knowledge solutions in a wide variety of domains. It is based on Java, and can be used in combination with other technologies relevant for knowledge-based systems. The Protégé Website has a nice collection of background material such as tutorials, papers and technical reports, and presentations; see http://protege.stanford.edu/doc/users.html. A Protégé tutorial intended for students in this class is at https://wiki.csc.calpoly.edu/OntologyTutorial/wiki/IntroductionToOntologiesWithProtege.
CLIPS is a shell developed at NASA, and has been in use for quite a while. Jess was inspired by CLIPS, and uses the same rule format and inference mechanism, but it is implemented in and integrated with Java. Both are available for download via the Web, and are installed on the lab systems (although not necessarily the most recent versions). Jess is subject to some licensing restrictions, and you may have to use a limited evaluation version if you want to install it on your own system. Some textbooks also contain chapters on CLIPS, e.g. Gonzalez & Dankel,or Giarratano & Riley. Ernest Friedman-Hill, the developer of Jess, is the author of "Jess in Action," with an introduction to Jess and a number of examples. CLIPS and related material is available for download from the Web sites below (some of the links unfortunately have become obsolete).
The Jess Home Page contains a lot of material, and also links to related documents.
The Institute for Information Technology of the National Research Council Canada developed Fuzyy Logic extensions for CLIPS and Jess.

Grading Policy


  • Project: 30%
  • Assignments: 30%
  • Presentation/Term Paper, Quizzes: 30%
  • Participation: 10%
The list above gives an overview of the calculation of the grades. I reserve the right, however, to change the formula used. Please note that the project consists of several parts which will be evaluated separately. The project will also be done in teams, and the performance of the team as a whole will be graded unless there is a clear disparity in the contribution of the individual team members. Should this be the case, I may ask for additional information about individual contributions.