Artificial Intelligence

Fall 2005


Instructor: Jeremy Gottlieb
E-mail: jgottlieb@carthage.edu
Phone: x5943
Office: Lentz 307


Final Project

For your final project, you can select one of two options:

  1. Write an intelligent program to accomplish some task. The task should be sufficiently complex and interesting that the program is not trivial, but it does not need to be overly complicated. Good programs would be an expert system in some domain, a problem-solving program, or some sort of agent (not a wumpus agent). Along with the program, you should turn in a write-up of what the program is supposed to do and the theoretical underpinnings of why you wrote the program the way you did.
  2. Pick an AI topic we have not talked about in great detail. Write a research paper about it. This paper should be 10 or more pages long.
Regardless of which option you choose, everyone will give a 10-15 presentation about their project during the final exam period (3:45-5:45pm on Thursday, December 15).

Assignment list

Along with the three programs listed below, you had the following assignments to complete:

  1. Pick a knowledge domain, such as family relationships. Write a simple knowledge base in Prolog. Your knowledge base should include at least a couple Prolog relations and demonstrate that you grasp the basics of Prolog.
  2. Write a 2-3 page analysis of how a Prolog-based Wumpus agent would differ from your original searching wumpus agent.
  3. Write a power function in Prolog.

Program 3

The Wumpus world (in CLIPS)

Write a wumpus agent in CLIPS. The above file provides you with a CLIPS version of the Easy Map from your previous wumpus program. It expects your agent to indicate it's actions by asserting a fact to working memory of the for (action move <dir>) or (action fire <dir>) where <dir> is either n, s, e, or w.

As your agent moves, the map will add knowledge to working memory about whether a given cell is either breezy or smelly. It is up to your agent to add knowledge about whether cells are safe, visited, have a pit, have the wumpus, or whatever other knowledge you think your agent needs.

This file contains some useful CLIPS stuff you might want to use. It should not substitue for going through the examples, including my wumpus.clp file above.


Program 2

The Easy Map

Write an agent that can successfully play Hunt the Wumpus.

The code you need is here. It is in a ZIP archive. The archive contains the files for the cell and map classes, as well as a main function. It also includes two sample maps for you to test your agent on.

I made a slight tweak to how your agent interacts with the map. The AgentCellInfo() function returns a cell, which you can then use to determine which directions have paths leading from the cell. However, information about breezes and growls is dependent on the surrounding cells. Thus, you should also pass the map as a parameter to your agent, and I've supplied you with two inspector functions: hasBreeze() and hasGrowl(). These are part of the map class (so you call them from the instance of the map you pass to your agent), and simply return true or false if the cell the Agent is currently in has a breeze or a growl.

Good luck.


Program 1

Write a program that reads in a list of integers from a file and stores them, unsorted, in a binary tree. Your program should print out the tree in some easy-to-read format. The program should then ask the user for an integer. Finally, it should perform both a depth-first-search and a breadth-first-search for the integer entered, printing out the nodes it visits along the way.


This site will be perpetually under construction, so bear with me.

Last updated: 3:30pm, 9/14/05