intriguing graphic logo Fall 1998 Course Announcement
22C:193 Logic Programming

Instructor: Arthur C. Fleck
Time/place: 1:30 pm MWF / 214 MLH
Primary text: K. R. Apt, From Logic Programming to Prolog, Prentice-Hall, 1997.

Course overview

The ultimate goal of logic programming is to allow us to specify only the requirements for a correct solution to a problem -- a program specification -- and then (mechanically) infer a solution from this information. So far logic programming has achieved this ultimate goal imperfectly, but it continues to evolve toward this end. And for many problems, logic programming already provides an especially direct progression from a conceptual solution to a computer program. It is a unique paradigm suitable for many non-numeric applications, and has connections with a variety of areas of computer science including automatic theorem proving, deductive database, and various AI applications such as natural language processing, expert systems, and knowledge representation. The principal focus of this course will be on the semantics and pragmatics of Prolog programming, including analysis of its aptness for logic programming. Additional topics will be the Life language and its object orientation to logic programming, and constraint satisfaction as an extension to logic programming as imbodied in the language CLP(R).

General background from the formal prerequisites 22C:21 and 22C:23 will be assumed. There will be no prior knowledge of logic programming required, necessary background for course topics will be developed. It will be assumed that the student has experience with several programming languages, and especially that recursion is a familiar concept. Please note that undergraduate majors can select this course as one of the two advanced CS courses required for the B.S. degree.

The course will involve both conceptual and project work. The projects will be of modest size and will use Prolog (mostly), CLP(R), Life, and possibly other logic languages for which implementations can be obtained. A tentative listing below indicates the range of topics. It will not be possible to provide a complete treatment of all these topics, so some will be touched on only briefly.

Tentative topic list

There are a wide variety of sites on the Web that contain useful information on logic programming and related topics. Here are a few starting points: