[FrontPage] [TitleIndex] [WordIndex

This is a two week assignment. (Project will not meet on Nov 2 -- an Olin Wednesday -- but you should definitely vote!)

Your mission is to build a Prolog application. Some suggestions are given here, but if there's something else that you'd much rather do, that's probably fine, too. (If you want to do something of your own choosing, you must select it by Friday Oct 29 and have it approved by las. Basically, the approval criteria are: Can you finish it in the 10-12 hours alotted? Do you have a staged development plan (i.e., can you build a small piece, test it, build some more, etc., keeping it working the whole time)?

Project ideas:

  1. Make substantial extensions to the fox and ducks adventure game (WrittenAssignment4) or build your own adventure game.

  2. Pull out the course catalog from the Star Center and build an Olin degree audit program. (Any reasonable approximation or subset will be deemed a valiant attempt!)

  3. (Clocksin and Mellish) Write a program that can understand simple English sentences with the following structure:
    • _ is a _ .
    • A _ is a _ .
    • Is _ a _ ?
    You can write these as Prolog lists or you can learn to use the Prolog parsing mechanism. Your program should give an appropriate response (yes, no, ok, unknown) on the basis of the sentences previously given. For example:
        Pat is a student.
        ok
        A student is a person.
        ok
        Is Pat a person?
        yes
        Is Chris a person?
        unknown
    Each sentence should be translated into a Prolog clause, which is then asserted or executed as appropriate. Thus, the translations of the preceding examples are:
        student( pat ).
        student( X ) :- person( X ).
        ?- person( pat ).
        ?- person( chris ).
    You may read the input as a list, use grammar rules, etc. Bonus: Consider how you would read RDF.
  4. Using the grammar found in the Tucker and Noonan handout or some other Prolog grammar as a base, expand until you can parse and/or generate a reasonable fragment of English. Variants: Try another natural language. Or try a programming language.
  5. Build a lisp interpreter in Prolog. It is fine to use Prolog list syntax. (This is non-trivial, but it's also not impossible in the time given. If you try it, begin with the sequence from the lisp interpreter from ProjectAssignment3, i.e., expressions first, then scale slowly.)


2013-07-17 10:43