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 http://www.cs.olemiss.edu/~hcc/
and his email address is cunningham AT cs DOT olemiss
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."
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
- Ivan Bratko.
Prolog Programming for Artificial Intelligence, third edition,
- 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 http://www.swi-prolog.org/.
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
- Various journal and conference articles, research reports, Web
documents, and book excerpts as appropriate.
The course is expected to cover most of the following topics. Of
course, this list is subject to refinement as the semester progresses.
- Introduction to Prolog
- Prolog syntax and semantics
- Lists and operations
- Programming techniques
- Controlling backtracking
- Built-in predicates
- Programming style
- Data structures
- Search strategies
- Knowledge representation and expert systems
- Rule-based programming
- Advanced features, techniques, and applications.
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
Appropriate Use Policy, the M Book, and any other
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
- You may discuss ideas for homework and
programming assignments with your classmates. However, you
cannot collaborate on writing the solution or the
program code. That is, you can talk about the problems and
ideas for solving them, but you cannot write things down with anyone
else. You are, of course, prohibited from copying or seeing another
student's written solution, and you are not allowed to show your work
to anyone else. Similarly, you are not allowed to copy text or
program code from a book or a page on the Web unless explicitly
authorized to do so by the instructor.
- You should accept help with care. If you work
too closely with another student, you might mislead yourself into
believing that you understand the concepts and techniques better than
you actually do. Don't forget that the instructor has office hours
and can probably give you hints or suggestions to get you started.
- You should give help with care. Do not help
anyone too much. When you have solved a problem, it is tempting to
just tell other students how you solved it. Instead, try to allow
them to come to the solution on their own. Maybe give them a hint to
help them get "over a hump." Remember that helping someone too much
will hurt them in the long term if they can't work through problems on
the exams by themselves. So avoid the temptation to do so. If you
can't help other students without giving away the whole solution,
direct them to see the instructor (who may or may not have a way to
"edge" them toward the solution).
- You are not obligated to help anyone. If you
feel uncomfortable helping another student for any reason, please
direct them to see the instructor.
- Except as described above, all work in this class is
covered by the School of Engineering's Honor Code statement on
plagiarism. It is plagiarism "to knowingly deceive, copy,
paraphrase, or otherwise misrepresent your work in a manner
inconsistent with professional conduct".
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
- Students taking the course for undergraduate credit may have
slightly different assignments in some cases.
- All students are expected to study the relevant portions of the
textbook and handouts in conjunction with our class discussions (i.e.,
before coming to class). Explicit reading assignments will
not always be given.
- Approximately seven homework assignments are planned for the
semester. Some of the assignments may be called "projects" and have
more credit than the "regular" assignments.
- Unless otherwise stated in the assignment description, an
assignment is to be carried out by each individual student without
inappropriate collaboration with others. See the section on
- In preparing and submitting homework assignments make sure that:
- your name, the course number or name, the assignment identifier,
and individual exercises are clearly indicated in the file or on the
paper. (If it is a group assignment, give the group identifier and
the names of all members.)
- for any handwritten portions, you write legibly on only one side
of the paper in a black or blue pen or dark pencil. Do NOT use red or
green ink! Some of the assignments may require that materials be
generated with a word processor and/or other tools.
- your pages are stapled together in the upper left corner when
viewed from the front.
- Several programs will be assigned during the semester. We will
use the logic programming language Prolog or a rule-based language.
For these exercises, you will need to submit appropriate design
documentation, a listing of your program code, and appropriate printed
output from your program testing. Make sure that you clearly label
the assignment as described above.
You will also be asked to submit your program source code in
electronic form using Blackboard.
- As appropriate, there may be a few in-class assignments or quizzes
that count toward the assignment/project portion of the grade.
- The programs and other assignments given to students enrolled in
the course for graduate credit will often differ from the ones given
to undergraduates. In particular, the assignments will often include
components that are required for graduate students but optional for
- All students are expected to complete their homework assignments
by their due dates. If an assignment is submitted late, a
penalty of 10 percent of that assignment's grade will
be assessed for each day it is late. A homework
paper will not be accepted after graded papers have been
returned, after a solution has been distributed, or after the final
- There will be four examinations, including the final. The final
examination is optional and can replace one of the other examinations.
- The examination portion of the semester grade will be calculated
by averaging the three best examination grades.
- The three mid-term exams will be spaced more or less evenly
through the semester.
- The final examination will be given during the final
examination period. Please do not ask to take the final examination
earlier than the time set for the entire class.
- Each exam will cover all topics studied to that point.
- Each exam may consist of a combination of in-class and take-home
- If you cannot take an examination at the scheduled time because
of an illness or other special circumstances, please notify
Prof. Cunningham in advance. Without advance notification, it may not
be possible to give a make-up examination.
UP to CSCI 541 root document?
Copyright © 2008, H. Conrad Cunningham
Last modified: Thurs 17 Jan 2008.