CSci 541: Expert Systems and Logic Programming
Spring Semester 2008


The spring semester 2008 class meets in 235 Weir Hall at 2:30 p.m. to 3:45 p.m. on Tuesdays and Thursdays.

The class is taught by Prof. Conrad Cunningham, whose office is in 203 Weir Hall. The official office hours for this class are Wednesday from 1:00 p.m. until 3:00 p.m. and by appointment at other times.

Prof. Cunningham's voice telephone number is (662) 915-5358 and fax number is (662) 915-5623. His WWW home page is and his email address is cunningham AT cs DOT olemiss DOT edu.

The WWW home page for this class is .

The final examination for this class is scheduled for Thursday, 8 May, at 4:00 a.m.

Student Disabilities Services Statement

"It is the responsibility of any student with a disability who requests a reasonable accommodation to contact the Office of Disability Services (915-7128). Contact will then be made by that office through the student to the instructor of this class. The instructor will then be happy to work with the student so that a reasonable accommodation of any disability can be made."

Course Objectives

Upon completion of the course, the students should (1) know the concepts and terminology of the logic programming paradigm, (2) be able to solve problems by writing programs in Prolog, and (3) be able to represent knowledge in a suitable form for use with Prolog and typical rule-based expert systems shells.

Course Description from the Catalog

Expert systems and knowledge engineering. Computer systems to emulate human expertise. Rule-based and other knowledge representation techniques. Knowledge engineering as a model for expert systems development; logic programming for expert systems implementation.


CSci 211 and Math 301 or graduate standing.

Anyone who does not have a mature understanding of programming in an imperative language (e.g., Java, C/C++, or Pascal), of basic algorithms and data structures (e.g., sorting, searching, lists, stacks, and trees), and of basic discrete mathematics (e.g., sets, relations, functions, induction, and simple algebraic concepts) should contact the instructor before enrolling in the course. Successful completion of CSci 111, 112, and 211 and Math 301 should give sufficient background.

Source Materials

Ivan Bratko. Prolog Programming for Artificial Intelligence, third edition, Addison-Wesley, 2001.

Prolog. The main language used in programming for the "logic programming" portion of the course will be Prolog, in particular the SWI-Prolog implementation. Windows, Linux, and Mac versions (and source code) are freely available on the SWI-Prolog website at

In addition to the XPCE tools that are included in the package, there are also links on the SWI-Prolog website to other development tools such as an emacs Prolog mode and the SWI-Prolog Editor for Windows.

Rule-based programming. Some of the lectures and assignments will address expert systems using a rule-based language such as JESS or JBoss Rules. Students will be given information on this later.

The SWI-Prolog documentation is part of the release package. A Web version is also online at the SWI-Prolog web site. Local copies of the PDFs are linked to the lecture notes page. These are quite long documents!

Students will be given information about the rule-based language documentation later.

Various journal and conference articles, research reports, Web documents, and book excerpts as appropriate.

Course Topics

The course is expected to cover most of the following topics. Of course, this list is subject to refinement as the semester progresses.

  1. Introduction to Prolog
  2. Prolog syntax and semantics
  3. Lists and operations
  4. Programming techniques
  5. Controlling backtracking
  6. Input/Output
  7. Built-in predicates
  8. Programming style
  9. Data structures
  10. Search strategies
  11. Knowledge representation and expert systems
  12. Rule-based programming
  13. Advanced features, techniques, and applications.

Professional Conduct

As a student in CSci 541, you are expected to conduct yourself in a professional manner according to the Honor Code of the School of Engineering, the Information Technology Appropriate Use Policy, the M Book, and any other relevant policies.

Limited Collaboration Policy. Unless otherwise indicated, any homework assignment or programming exercise given in this class will be an individual assignment. The work you submit is to reflect the knowledge, understanding, and skill that you have attained as an individual. However, the instructor does want to encourage the development of a community of scholars who are actively engaged in discussion of the ideas related to this course. With this in mind, you are allowed to discuss solutions of the homework and programming problems with other students if done so according to the following guidelines:


The grading scale for this class is A [90..100], B [80..90), C [70..80), D [60..70), and F [0..60).

60 percent of the semester grade will come from the exam average and 40 percent from the homework assignment/project average.

Assignments and Projects


UP to CSCI 541 root document?

Copyright © 2008, H. Conrad Cunningham
Last modified: Thurs 17 Jan 2008.