CSC 481 - Artificial Intelligence
Spring 2004
Programming Project
Due 4/19


Each student will implement an artificial intelligence algorithm. You will be expected to turn in a proposal on or before February 16.  You will also provide progress reports on specified dates. The final project will be due on April 19, and a demo of the project will be done for the class or for Dr. DiPippo.

Project Choices:
Throughout the semester we will be covering many algorithms that provide a level of artificial intelligence to computer programs. You can choose any algorithm that you wish to implement. The environment in which you implement your algorithm will likely be a crucial part of your choice of project. You have the option of building your own AI environment, or using one of several previously built environments. Here are some suggestions for building your implementation:

  1. AIMA Environments. The authors of our textbook have developed an extensive set of programs in the various programming languages. This software is provided at http://aima.cs.berkeley.edu/code.html. The installation procedures are all included. The code provides several useful environments, discussed in the text, in which interesting AI algorithms can be implemented. Using this code may require an initial learning curve, but the code is relatively well-tested and once you learn how to use it, the job of implementing the algorithm will be somewhat straightforward.
  2. Wumpus World. Various version of Wumpus World simulators are available on the web. You can use one of these simulators to provide you with the foundation for the environment. Then you can implement one or more AI algorithms within the environment.
  3. Other AI environment. You can do some searching of your own for interesting, previously built AI environments that you can use for your implementation. For example, there is a large group of AI researchers that have worked on a project called RoboCup. This is an ongoing project to use a soccer environment to test and implement new AI and agent-based algorithms. There may be some useful environments available for you to use for your project.
  4. Your own environment. Implement your own environment, either a toy environment or a more real-world environment (with certain restrictions). This choice gives you the freedom to do your own programming, but it puts more burden on you to build the environment as well as the algorithm implementation.
Remember that the algorithm that you choose to implement is the most important part of this project. Do not get bogged down with details of the user interface, although it should provide a clear demonstration of what you have implemented, and how it works.

Suggested Algorithms:
You may choose any artificial intelligence algorithm that interests you. Use your textbook as a starting point, but if you find something interesting outside the text, you are welcome to use it.  Below is a short list of possible algorithms to choose from.
 

  • Search algorithms
  • AI game playing algorithms
  • Multi-agent communication algorithms
  • Planning algorithms
  • Learning algorithms
  • Natural language processing algorithms

If you are looking for some ideas, there are many exercises in the textbook that require implementing an algorithm in one of the toy worlds described in the book. Look for the computer icon next to the exercises in the textbook.

Proposal:
You will turn in a proposal of what you plan to implement by 2/16. Your proposal should include at least the following information:

  1. Objective:  Two or three sentences describing the objective of your proposed project.
  2. Methodology:  This will include a description of how you will go about reaching your objective.  An outline of the algorithm and a description of the environment in which you plan to build it will be expected here.
  3. References:  Include in your proposal at least 2 references or sources of material you will use for your project.  These can include your textbook, but you should also include at least one other source from which you have or plan to get information for this project.
Please submit your proposal to Dr. DiPippo on the due date (2/16).  I will give you feedback on your proposal within a few days to give you direction on how to start your project.

Progress Reports:
On March 15, and April 5, you will provide a progress report of your work. This report should indicate how much of the proposed work you have completed up to that time. The progress report should include at least:

  1. A discussion of the envirnoment in which you are working - how much have you learned from it? What issues are you encountering with it?
  2. A dicussion of how far you have gotten in the implementation of the algorithm - How difficult/easy is it to implement within the chosen environment? What issues have you encountered in the implementation?
Also include any updates that you have made to the problem that you are solving. For example, if you have found that the work that you originally proposed to do is either too ambitious, or not appropriate, indicate any changes of direction that you have chosen to take.

**NEW** - Additional Information about April 5 Progress Report

For the second progress report, due 4/5, along with the above, you will be expected to report on what you have left to do to finish the project. That is, list the specific tasks that are remaining, and describe how you will go about completing them. By this time in the project, you should be far enough along to know exactly what needs to be done to finish.

Final Project:
For your final project, you should turn in, in hard copy as well as email submission to Dr. DiPippo:

  1. Written Report. This should include a full description of the algorithm (pseudocode might be helpful here), and a description of the environment that you chose to use for your implementation and exactly what the algorithm does in the environment. Also include any assumptions or restrictions you had to make for your implementation. For instance, if you had to make any simplifying assumptions about the kind of data your algorithm could handle.
  2. Source Code. This should include full source code of your implementation and any changes that you may have made to an existing environment that you used.
  3. Lessons Learned. For example, having done it, what would you do differently if you had to do it again. Also, did you learn anything interesting about the AI environment in which your implemented your code?
  4. List of references. This should include any outside sources you used to do this project. You should include the text book if you used an algorithm from there, as well as any papers, or web sites that you found helpful in doing your implementation.
You will also be expected to provide a demonstration of the code to Dr. DiPippo after the due date of the project and before the last day of classes. A sign-up sheet for demonstratoins will be made available when the projects are due.

Please also see the AI Links and Other Interesting Links provided on the CSC 481 web site for possible sources of information for this project.