Last updated 2010 August 19
About the Course
The course introduces and explores programming concepts used in functional and knowledge-based
computing. It is intended to give the student a
programming background which will be useful for
further work in logic programming, expert systems, and
artificial intelligence.
The programming languages Lisp and Prolog will be considered in detail.
Lisp is a functional programming language based on the list structure. It is
widely used in artificial intelligence applications. Prolog is a declarative
programming language based on the concept of a logical assertion. It is widely
used for constructing knowledge-based and expert systems.
Upon successful completion the course you should be able to do the following.
- Be fluent in decomposing algorithms into recursive sub-problems.
- Write functional programs in Lisp.
- Describe the lambda-calculus underpinning of Lisp.
- Write programs that use macros.
- Use pattern matching to represent and solve problems.
- Desribe how goals are found through backtracking (backward chaining).
- Build logical databases for knowledge-based problem-solving.
- Describe resolution theorem proof method that is the mathematical model of Prolog program execution.
- Use grammar rules to process natural language statements.
Textbooks
The course text books are the following. They may be purchased at bookstore.
- Robert Wilensky, Common LISPcraft, W.W.Norton & Company,
1986. ISBN 0-393-95544-3
- W.F. Clocksin, C.S. Melish, Programming in Prolog, Springer-Verlag,
5'th edition, 2004. ISBN 0-387-00678-8
The following are on two hour reserve in Steacie Library.
- Patrick Harrison, Common Lisp and Artificial Intelligence
QA 76.73 C28 H36 1990
- Robert Wilensky, Common LISPcraft
QA 76.73 C28 W55 1986
- W.F. Clocksin, C.S. Mellish, Programming in Prolog
QA 76.73 P76 C57 1987
- Robert Mueller, Symbolic Computing with Lisp and Prolog
QA 76.73 L23 M84 1988
Addional notes and class slides are available from
the resources page for the course.
Workload
The work load in this course, as in most computer science and engineering courses, is high. The course has a large unscheduled laboratory component to it which involves writing and testing Lisp and Prolog programs. You should be prepared
to devote 10 hours a week on average to the course; this includes class
time. With proper planning and discipline, you can spread most of the work
load fairly evenly throughout the course.
It is up to the you to read and study relevant material without explicit
instructions. You are expected to find the required readings in the references
and any other sources you can find. Part of the university experience is
to acquire a measure of self reliance. The instructor for the course can
only guide you as to what is useful to learn; the effort must come from
you. The course classes will not cover all the topics in detail. Instead,
the classes will cover the most important points and give you pointers
as to how the rest of the material can be studied.
Classes
The course consists of three class hours per week. In preparation
for classes you are expected to read the appropriate material - the class
schedule gives an approximate idea of when various topics and readings
will be deal with. In addition, exercises will be given which you should
do in preparation for future classes.
Class participation
You are encouraged to participate in class. Interviewers say that communications skills are a problem area for some of our graduate students. I encourage you to work on your communication skills in this class. Ask questions, Answer questions. Let me tell you from my own experience, once you have looked stupid enough times, it will no longer bother you. Believe me, I know. And, seriously, it is highly unlikely that your classmates will actually think you are stupid. It would be virtually impossible for a stupid person to make it this far through school. No, it is more likely that every person in the class is smart, not stupid. But no one knows everything, so we will all sometimes answer questions incorrectly, and we will all sometimes say something that is wrong. We may even ask a silly question; and we may even all laugh about it. That will be a growing experience in itself.
Reports
You will hand in for grading a set of reports. The specifications are given as announcements in the course forum. The
report page gives more information
about the style and content of reports.
The class schedule gives the due dates and times for the
reports.
The grading page describes the grading scheme used and the
algorithm for computing your final grade.
Tests and Examinations
There will be two in-class tests and a formal three hour examination
held during the examination period at the end of the term.
The class schedule gives the dates and times for the
tests and examination.
The grading page describes the grading scheme used and the
algorithm for computing your final grade.
The test questions will be based on all the course material: texts, readings,
classes, reports, exercises, and on-line notes and slides.