Programmer's Choice
The purpose of this week's lab is to let you design your own simulation, now that you have some familiarity with creating simulations, creating graphical visualizations, and responding to user input.
Here are the links to the API's for the most recent versions of Java:
Problem Description
You can choose one of three options for this week's project.
- Choose a data structure from the list below and create a visual demonstration of how it works using the simulation framework we have developed. Your demonstration should include all elements of the functionality of the data structure, including adding and removing elements. The visual demonstration should incorporate user interaction.
- Develop a novel simulation, or significantly extend a prior simulation. The simulation must make use of one of the data structures from the list below. Incorporate some form of user interaction in the simulation, even if it is as simple as run/stop buttons.
- Create a simple game that makes use of a data structure from the list below. Obviously, this needs to incorporate user interaction. The game does not have to be fun, but it helps.
Data structure list:
- Dynamic Array List (grows as needed)
- Heap
- Binary tree (balanced or unbalanced)
- Other tree structures
- Hash map
- Graph
Tasks
- Design your simulation. Make this a wiki design document that describes the various classes you plan to use and how they interact. You may want to provide method headers for the more important methods (i.e. not simple accessors or mutators). This will be the first half of your writeup.
- Implement the data structure you chose from the list above. If your chosen project uses more than one type of data structure, you have to implement only one of them yourself. You can use the Java standard implementations for the rest.
- Implement your project, including some level of interaction.
- Demonstrate your project to the prof when you are done, or close to it.
Extensions
- Implement more than one data structure.
- Make a fancier interface than a few buttons.
- Do some testing of your data structure and demonstrate its big O() properties for tasks like adding and removing elements.
- For simulations, demonstrate the effect of changing certain parameters on the system. Make graphs or movies.
- Just make it really, really, cool.
Handin
The first part of your writeup should be your design document.
The second part of your writeup should be a summary of the results of your implementation, noting any changes from the original design you decided to make. Include a description of any extensions.
Be sure to include a list of people you worked with, including TAs, and professors. Include in that list anyone whose code you may have seen, such as those of friends who have taken the course in a previous semester.
To hand in code, put it in your folder on the Courses fileserver. Create a directory for each project inside the private folder inside your username folder.
Give your wiki page the label: cs231f14project8