This year's project is to develop a software tool that visually demonstrates a scientific or engineering concept of your own choosing. Imagine that this concept pertains to an important discovery or invention of yours and that you want to sell your idea to potential investors in your new company. The software should be capable of clearly communicating the underlying principles to someone who is not an expert in your field. Try to be as original as you can in your approach to designing the software; it is not necessary for the concept itself to be new. The term concept should be interpreted broadly to include things like:
- engineering behavior
- an algorithm
- a law of physics
- a technique for intelligently navigating the web
- a biological or natural phenomenon
You will most likely need to build some simulation capabilities into your software. While it is important to make your simulation look reasonably realistic, we suggest that you do not spend an excessive amount of time on the accuracy of the simulation since your goal is to maximize audience impact.
Please note that the project counts for 25% of the overall grade in this course. This means that the project should be a fairly substantial effort, with a duration of roughly 3 weeks. The good news is that you already have many of the pieces needed to develop your project. You may use any of the examples given in the lectures and homework as a starting point, or you might conceivably choose to add new functionality to existing software (such as a research code.) If you do decide to build on software that has already been developed by someone else, please be sure to clearly identify which part of the software has been written by you. The use of automatic code generation tools is strongly discouraged. The litmus test is that you should be able to explain how every single line of code in your program works, if asked to do so.
The intention is that the projects will be small group efforts i.e. 3 people or less. Our reasons for not wanting larger groups is that first, there is relatively little time for proper group coordination and second, it is often difficult to decompose the problem in such a way that the workload distribution is truly even. Your project should be appropriate for the size of your group. We encourage you to be ambitious, but also to be aware of resource and time constraints. In planning group projects, we suggest that you break the project down into well defined tasks so that each individual has a clear role in the project. Be sure to plan properly for the integration of the various components of your project.
If you prefer to do an individual project instead, this is quite acceptable. We expect that a person's level of effort will be independent of group size for the most part, so individual projects will typically be smaller in scope.
We hope that you will find the project a useful learning exercise. Please feel free to stop by and discuss your individual project ideas at any time.
Due date: Lecture #16
This should be a short description (anywhere from two sentences to a paragraph) of what you plan to do. The goal of the proposal is to help you crystallize your ideas into a concrete plan of action. You may find that your ideas change as you become more deeply immersed in the project. This is perfectly acceptable. The bottom line is that we want to make sure you work on something that is of reasonable scope for a three week project and that it has a good chance of completion. The project proposal is for your own benefit - it will not be graded!
Project Presentation and Report
Project presentations will be held on P1, P2 and P3.
Project reports can be handed in anytime before 5pm on one day after P3.
Project presentations will be held during the last three lectures. This is where you will demonstrate your software to prospective investors (i.e. the rest of the class). As a guide to the length of your group's presentation, please plan 3 minutes to change over and to introduce the project + 3 minutes per person.
Thus a three person group will have 12 minutes to present and an individual will have 6 minutes to present. There will be a sign up sheet for presentations and we will do our best to accommodate preferences for specific dates and times. We understand that there is a weeks difference between the start and the end of the presentations. However, please sign up early - you will be able to continue to work on your project until the last day of classes.
We would also like to have a short project report (we suggest about 5 web pages per person) to accompany your software. These could be the web pages that you use in your presentation. A suggested format for your report is as follows:
- Problem statement. Provide some background on the concept that you are trying to explain.
- Technical approach. Explain how you went about developing a simulation to demonstrate the concept.
- Software design. This section should be used to discuss the structure of your program. Please be sure to include a diagram to illustrate the class hierarchy of all classes that you have written. This should be complete, but not overcomplete i.e. there is no need to include a complete hierarchy of core Java® classes.
- Results. Explain what your software does. This may include screen shots of your software in action.
- Future enhancements. What improvements would you make in the commercial version of your software if your company succeeded in getting off the ground?