Logic Programming


The purpose of the course project is to give each team of students a chance to exercise and demonstrate their understanding of Logic Programming by building a substantial logic program, describing the program in a brief report, and presenting the project in a short presentation in class at the end of the quarter.

The course staff will evaluate projects on the basis of several factors - (1) inherent interest of the application (25%), (2) difficulty of the problem (25%), and (3) appropriate use of logic programming techniques (50%). Inherent interest is subjective. If the inherent interest of a project is not obvious to the staff, we may ask other students to evaluate. Difficulty includes the amount of effort that must be expended to produce the program and the complexity of the program itself. A program that can be built in a couple of hours would not receive a high score, and a project that is all data and no rules would not receive a high score. Appropriate use of logic programming is most important. Using poor logic programming techniques, using logic programming where traditional programming would work as well or better, and failing to use logic programming techniques where appropriate would all lead to low scores.

Each team of students should select a topic of its own. The topic may be a larger or more complex version of a class assignment (e.g. solving the full scheduling problem, building a game playing website, implementing a complex academic program sheet, building a natural language system), or it could be an entirely new topic (e.g. creating a new application of worksheets or solving a challenging constraint satisfaction problem).

Note that it is okay for more than one team to work on the same project, but each team should build its own solution. That said, it is okay, even desirable, for multiple teams to work together on different parts of a common project (though each part will be evaluated on its own merits).

We strongly suggest that each team start thinking about projects early on, but we also suggest that teams not commit to projects too early. The deadline for final project choices is the end of the unit on Dynamics (week 7). We will be glad to provide feedback on project ideas up to this time. And, of course, we will be happy to discuss the implementation thereafter.

Deliverables for each project include (1) a 15 minute video presentation, (2) a brief written report describing the project and any issues involved in its implementation, and (3) the executable code and documentation (sufficient to allow us to review the implementation and experiment with the running code). The report and final code should be submitted no later than the last day of class at 11:59 pm.

Click here to see a directory of project reports, project videos, and/or project code submitted in previous years.