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.
Documentation for Java 1.6 is located at: Java 1.6 SE API
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)
- Binary tree (balanced or unbalanced)
- Red-black tree
- Other tree structures
- Hash map
- 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.
- 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.
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.
Hand in your code on the Courses server in your private subdirectory.
Give your wiki page the label: cs231f12project8