CPE 102 Program 7 - Anything!
Assignment Preparation
Your final project will be a team based project. The entire team will share the same grade unless there are exceptional circumstances.
Teams should be of two unless I have given explicit permission.
After you gather your team and have an idea about what you want your project to be, talk with me about it. I can tell you if it will be a good project. We will usually change some parts of it before you start.
I need to approve your project before you start working on it.
The Task
The task for this assignment is simple: create an application (program) using Java.
Requirements
Your program will have to follow the following requirements:
- Follow the class' style guideline.
- You program will have to have more than one class with appropriate use of interfaces and abstract classes when necessary.
- Some sort of I/O.
- Your code must have complete (every public method and class) javadoc documentation.
- The amount of code will vary on a team-to-team basis. The more complex your program, the less code you will be required to write.
Deliverables
Design Writeup
You are expected to deliver a writeup about the design of your application. Your writeup should contain adequate information on the following:
- Purpose - What does your program do?
- Inheritance Structure - How are your classes/interfaces related to each other? (A diagram would be adequate.)
- Data Structures - What data structures are you using and why did you pick them? E.g. why did you pick an ArrayList instead of a LinkedList?
- Control flow - How does control flow through your program?
- I/O - How does your program take input or give output?
- UI - How does your program interact with the user? (If at all.)
- Craftiness - Did you do anything particularly slick or interesting?
Code
Before your project demonstration, you will have to turn in a copy of your code. This can be via handin, or via email. If you turn it in via handin, send me an email so I know it is there.
Javadocs
At least one of your team members must host the javadocs for your program on their school homepage (users.csc.calpoly.edu/~username).
Project Demonstration
You will need to demonstrate your project to me.
You will be required to schedule a demo to take place no latter than March 18th (finals week).
Break Code
If I cannot break your code during the demonstration, you can get extra credit.
Ideas
- Games - Many students like to make games because they can be simple and fun. Games come in many shapes and sizes, and many do not require a GUI (Graphical User Interface). Think back to the hangman game that we made in lecture. It was small, simple, and was pretty fun.
- Useful Tools - Making command-line tools can be pretty straightforward. Consider the "date" program (run this on your own machine or one of the school servers), all it does is print out the current date. Think about something in your daily life that you may be able to automate.
- Clone - Remake your favorite program! It is said that "imitation is the sincerest form of flattery".
- Double Dipping - I encourage efficiency. You may have a project in another class that can be written in Java and would work well. But if it is too boring, I may veto it.
Submission Instructions
You will be required to schedule a demo to take place no latter than March 18th (finals week). I may not pursue you if you forget to schedule one. A missed demo can be catastrophic to your grade.
You must submit a copy of your code (even if it is incomplete) via email at least one day prior to your demo. (Handin is fine too, but you need to send me an email telling me it is there.)
If any changes are made to your code after your demo, I will expect an updated version no later than 11:59PM on the Friday of finals week.