CSCI/PHIL 8650 - Logic and Logic Programming

Instructor: Donald Nute

Spring 2003

This class will include two related but distinct components. In our classes on Mondays from 10:10 until 12:00, we will study the logic underlying logic programming and we will work exercises and prove theorems about logic. In our other two weekly classes from 10:10 until 11:00 on Wednesdays and Fridays, we will study logic programming, particularly the programming in Prolog, and work on short programming exercises. The text for the logic portion of the course will be notes that I will hand out in class during the semester. There will be notes on set theory, first-order logic, clausal logic, and (time permitting) defeasible logic. The text for the logic programming portion of the course, will be Covington, Nute, and Vellino, Logic Programming in Depth, Part II.

The students are supposed to take on much more responsibility for what goes on in a seminar than in a regular course. In this seminar, we will devote about half of each class period to working exercises. You are expected to come to class prepared to present solutions to the exercises that have been assigned for that class and to explain the solutions to the rest of the class. Each exercise will be assigned a difficulty level as a number of points ranging from 1 to 4. For each exercise that you correctly present to the class, you will be awarded the difficulty points for that exercise. If you present an exercise and your solution is not correct (except perhaps for small details that we can easily clean up during your presentation,) then you will not receive the points for that exercise and another student will have an opportunity to repair your solution or to present a different solution. After each exercise is completed in class, I will inform the student who presented a correct solution to the exercise that she or he has been awarded the points for that exercise. You will accumulate points toward your final grade up to a maximum of 20 points.

There will be an exam about February 21, another about March 28, a final exam at 8:00 on May 5, and group term projects. Each will be worth 20 points toward your final grade. Exams will be taken in class. Problems on the exams will be similar to, and may include, exercises worked in class. Term projects are explained further below.

Your final grade will be determined by the sum of your exercise points, exam points, and project points. A total of 90 points will guarantee an A, 80 a B, and 70 a C. I reserve the right to lower any or all of these grade thresholds if I think it is appropriate, but do not count on it!

Of course, I expect academic honesty and I will take action against any person who gives or accepts help during a test. You may discuss exercises with each other, but you will only get points for exercises you can correctly present in class.

**Term Projects**

Each of you will prioritize list of four projects from the list below by January 24. Based on your preferences, I will put together teams of approximately three students each to work on the preferred projects. I will give you further information about each project in class

- Build a Windows implementation of xshell (Nute, Covington, and Vellino, Prolog Programming in Depth) and develop a proof-of-concept expert system in it.
- Build a program that can check proofs in a natural deduction system for sentential logic (Copi and Cohen, Introduction to Symbolic Logic) for correctness, including a user interface for entering the proof.
- Build a program that can propagate markers through an inheritance net (Copi and Nute, Methods for Critical Thinking) correctly, including an interface for building inheritance nets and displaying them graphically.
- Implement the most recent version of defeasible logic (Nute, "Apparent Obligation", in Nute (ed.), Defeasible Deontic Logic) in Prolog.
- Build an agent that can play the castle game in V-World successfully.
- Build an agent that can learn ontology in V-World
- Build a V-World game for human players, complete with AIs that interact with the player in a challenging way.

Projects will be presented in class during the last week of class. All software and a written report must be submitted to me by the last day of class. Each student will also submit to me by the final exam an evaluation of his or her group. This will include a description of what each member of the group contributed to the software, the written report, and the presentation. I will provide further details about these evaluations later in the semester.