# CSCI 151 Final Project

You will complete a final project for CSCI 151 which gives you more practice with data structures and with large software projects.

## Requirements

The topic of the project is open-ended; the only requirements are:

• The project must be of significant complexity, making use of multiple classes working together.

• You must make nontrivial use of at least two data structures we have discussed this semester (list, stack, queue, binary (search) tree, priority queue, hash table, graph). You are encouraged to use the versions of these data structures included in java.util (though you may also reimplement them or use a version developed in lab if you wish).

• You may work with a partner if you wish.

The project is due at 5pm on Tuesday, May 7. During the officially scheduled CSCI 151 final exam slot from 8:30-11:30am, each group will give a 10 minute presentation/demo of their project.

The requirements for the presentation:

• It should be 10-15 minutes (no longer than 15 minutes).

• I recommend the following structure for your presentation:
• Overview/purpose of the project (1 minute)
• Project demo (7 minutes)
• DO NOT OPEN ECLIPSE other than to demo your code. It is very tempting to simply open a window full of code and walk through it explaining what your code does. DO NOT succumb to this temptation! It makes for extremely dull presentations that are impossible to follow.

• If you want to explain some section of code that is particularly interesting, you should put the code on a slide. Be sure that the slide contains only the code you want to talk about, and that the code is big enough to be readable from the back of the room (of course, this naturally limits the amount of code you can put on one slide).

## Topics

I realize that it can be overwhelming trying to come up with an appropriate project when the requirements are so open-ended. I suggest trying to connect the project to some other topic you are interested in. Please come and discuss with me—I am happy to help brainstorm project ideas, or to figure out how to take your idea and fashion it into an appropriately-sized project.

## What to turn in

You should turn in:

• Your code as a zip or tar file.

• A document describing your project:

• What is the goal/purpose of your project?
• How does one use it? (i.e. tell me how to run and try out your project.)
• What are the interesting features?
• What challenges or triumphs did you encounter along the way?

## Evaluation

The projects will be evaluated according to the following criteria. Each will count for 25% of the total grade.

• Presentation. The presentation should be clear, compelling, not overly long, and use appropriate visual aids (e.g. slides, chalkboard, a project demo…).

• Effort/complexity. Does the project represent an appropriate amount of effort? Is it sufficiently complex? Does it use multiple data structures appropriately?

• Documentation. The project should be well-documented, with plenty of comments explaining the code, and a thorough description in the accompanying document.

• Correctness. Does the project work as advertised? Is it relatively bug-free? Does it gracefully handle all inputs?