Final project

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


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 2pm on Monday, December 12. During the officially scheduled CSCI 151 final exam slot from 2-5pm, each group will give a 10 minute presentation/demo of their project.


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?


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?



Lab Name Assigned Due
1     Java with Codingbat     Mon 8/29     Mon 9/5 1pm
2     Prisoners’ Dilemma     Tue 9/6     Tue 9/13 5pm
3     Vectors     Mon 9/12     Mon 9/19 4pm
4     Vector and Dictionary     Tue 9/20     Mon 10/3 1pm
5     Stacks     Mon 9/26     Mon 10/3 1pm
6     RPN calculator     Mon 10/3     Mon 10/10 1pm
7     Sortimator     Mon 10/10     Mon 10/17 1pm
8     Generic Stacks and Queues     Mon 10/17     Mon 10/24 1pm
9     Text Editor     Mon 10/24     Mon 10/31 1pm
10     Binary search trees     Mon 10/31     Mon 11/14 1pm
11     Ice cream store     Mon 11/7     Mon 11/14 1pm
12     Text prediction     Mon 11/14     Mon 11/21 1pm
13     Hash table tic-tac-toe     Mon 11/21     Mon 11/28 1pm