next up previous

CSE 5361 Spring 1999

Class Project

Proposal Due: April 20, 1999
Project Due: May 13, 1999

For the class project, you will design and implement the best-performing wumpus-world agent possible. As part of this task, you must design and implement an object-oriented class library in C++ for one or more of the AI techniques listed below and use them within your agent. Although the primary goal is an awesome agent, a secondary goal is good object-oriented design. In regards to changes in the wumpus simulator, there will still be only one wumpus, but it can move. You may also want to include vision and/or natural language capabilities to take advantage of the bitmap image and natural language hint percepts.

Some resources are listed below with the individual techniques, but a good general resource for AI software is the CMU AI Repository at

This project would involve the implementation of a class library for a planner (partial or total order). The planner class would be instantiated with a set of operators, initial state and goal state, and then called (with a search limit) to look for a plan, which can then be used to achieve the goal state in the wumpus world. Possible resources include the C++ planner with the aisrch2 library, Billy Harris's C++ planner (contact him at, or a purported C++ version of the UCPOP4 planner (see for details).

This project would involve the implementation of a class library for a decision-theoretic agent as described in Chapter 17 of Russell and Norvig. First, you will need to implement a belief-network inference mechanism. The decision-theory class would be instantiated with an action model and a sensor model (i.e., belief network) and possible actions. The decision-theory class would utilize a state class that defines the state and its utility. Given evidence from the percepts, the decision-theory class would compute the action maximizing expected utility. Possible resources include the IDEAL influence diagram system (see and the JavaBayes system (see$\sim$javabayes).

This project would involve the implementation of a class library of one or more learning methods as described in Chapters 18-21 of Russell and Norvig. The details of the instantiations depend on the learning method used, but typically, some initial examples are given, and the learning method would return a rule to be used to guide the wumpus-world agent. For example, you could learn to improve your performance based on past experiences (action-percept examples), learn the utilities of states from rewards, or learn to predict the movement of the wumpus. There are lots of resources on the web for learning algorithms in C and C++. For starters, follow the pointer to David Aha's page on$\sim$holder/ml.html.

Natural Language:
This project would involve the implementation of a class library for a natural language parser as described in Chapters 22 and 23 of Russell and Norvig. The parser class would be instantiated with an augmented grammar and would be used to translate English sentences into logical statements. The parser class can be used to translate the natural language hints that are part of the wumpus-world simulator's percept. Possible resources include the natural language parser in the aisrch2 library or interfacing to Prolog.

This project would involve the implementation of a class library containing methods for object recognition in binary images as described in Chapter 24 of Russell and Norvig and supplemental material to be distributed in class. The vision class would be instantiated with a description of objects to look for and would be used to determine which objects were present in a given image. The vision class can be used to identify a wumpus, pit or gold in an adjacent room by processing and image percept available from the wumpus-world simulator.

Project Details and Grading

On or before the above proposal due date, you should email a proposal of your class project. The project proposal should indicate which of the above areas you plan to work on and a more-detailed description of the functionality of your class library and agent. I set the due date for the proposal at April 20 so that you will have seen some lecture material on all the areas, but I encourage you to submit your proposal as soon as possible to get my okay and begin work.

In addition to the well-documented C++ code of your class library and agent implementations, you should also provide an electronic document (LaTex, MS Word, HTML, PostScript) describing the interface to your class library, how it works, how you use it in your agent, and how well the agent performs on a variety of worlds in the wumpus-world simulator. You are welcome to utilize any code available for this course or elsewhere. Your code should compile and execute under Gnu C++ on the gamma machine. Also, your code should generate output demonstrating the functionality of your project. Projects will be graded based on their level of difficulty, correctness, readability, efficiency, and performance in the wumpus world.

next up previous