Artificial Intelligence (CS 04.450)
Spring 2007
Rowan University

Semester Project

Select an area of artificial intelligence that interests you, and write a program to solve a problem in that area. The project you choose should be limited enough that you can write the program in one semester. You may write the program in any language, to run on any computer; the only restriction is that the program must run on either a computer at the university or a computer that can be brought to the university, so that the program can be demonstrated at the end of the semester.

You may work in a team of up to 3 people on your project.

Suggested topics include:

Since some of these topics will be covered late in the semester, you will need to read ahead in the textbook when choosing a topic and designing a solution.

10 points extra credit on the project will be awarded to anyone who presents his or her AI project at the 2007 STEM symposium .

There are four deadlines for the project:

All projects must be demonstrated for the instructor during the last 3 weeks of the semester. A sign-up sheet will be made available in April.

The proposal, the project draft, and the final project will all be graded based on their quality. A late proposal or a sloppy project draft will pull your project grade down even if the final project is good.

Grading guidelines

  1. Distribution of points

    The total project grade will be computed using the following percentages:

    Project proposal: 10%
    Project draft: 10%
    Final project program: 60%
    Final project paper: 10%
    Final project in-class presentation: 10%
  2. Program style

    All programs should exhibit good style. Each variable name should suggest the meaning of the variable. Proper indentation should be used throughout. The program should begin with a comment stating the programmer's name, the date, the course the program was written for, and the problem that the program solves. Each subroutine (function, procedure, or predicate, depending on the language) should begin with a comment explaining what that subroutine does. Any complicated algorithms or data structures in the program should be commented, as should any portion of the code that is unclear. A project will not receive an A if it is written in a poor style, even if the program solves its problem correctly.

  3. User interface

    My only requirement for the user interface is that it should be clear for the user to understand and should provide reasonable error-checking. (The program should not crash merely because the user inputs an illegal game move, for example.) Prompts should be clear, and instructions should be provided where appropriate.

    Your program may have either a command-line user interface or a graphical user interface. Do not invest too much time in making a fancy user interface, however, unless the rest of your program works correctly. A game-playing program that plays well and uses alpha-beta pruning but has a simple command-line interface can receive an A; a game-playing program that plays poorly and does not use alpha-beta pruning but has a fancy graphical user interface will not receive an A. (And similarly for other kinds of projects.)

  4. Quality of solution

    This will vary depending on the exact problem, but here are some sample guidelines. In the descriptions below, "excellent" describes the quality that I expect from a program that receives an "A".

    An excellent game program (for a zero-sum game of perfect information) should use minimax and alpha-beta pruning, and it should have a heuristic function that enables it to play well.

    An excellent rule-based natural language program should contain at least 30-40 grammar rules (not counting lexical rules like noun --> [cat]), and it should take some interesting action based on the input (such as create a semantic net, construct a database query, or construct a UNIX shell command). An excellent ATN-based natural language program should contain networks for at least 30-40 different kinds of phrases.

    An excellent genetic algorithm project should incorporate mutation and crossover, each with associated probabilities, and candidates for reproduction should be chosen based on a fitness function. The project should report the results of several different runs of the program, with different settings for mutation and crossover probabilities, with an evaluation of which settings worked best for your problem.


Nancy Tinkham
Computer Science Department, Rowan University

Valid HTML 4.0!