Date: Wed, 20 Nov 1996 23:18:10 GMT
Server: NCSA/1.5
Content-type: text/html
Fall 1995 Course Announcement
Fall 1995 Course Announcement
22C:193 Logic Programming
Instructor: Arthur C. Fleck
Time/place: 9:30 am MWF / 113 MLH
Text: Sterling & Shapiro, The Art of Prolog, 2nd ed., MIT Press, 1994.
Course overview
The goal of logic programming is to allow us to specify what properties a
correct solution to a problem must possess, and then automatically deduce
the solution without further "programming". 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,
and its aptness for logic programming.
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 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.
Tenative topic list
- Overview of Prolog and the philosophy of logic programming
- Substitutions & unification
- Horn clause logic
- proof theory - resolution
- model theory semantics
- computability
- Prolog semantics
- procedural semantics
- WAM(Warren's Abstract Machine) code
- Logic programming vs. Prolog programming
- arithmetic & 'is'
- occur-check
- cut
- assert/retract
- higher-order features(e.g., call, findall)
- negation, CWA, & NAF
- difference lists
- Logic grammars
- translation to Prolog clauses
- programming language and natural language analysis
- Unifying functional & logic programming
- equational logic
- rewriting systems
- narrowing
For further Web information on logic programming see the
WWW logic programming page.