Computer Science 15-100 (Sections T & U), Spring 2008
Homework 11:
Term Project
Due: Fri 25-Apr-2008 at
10am (online submission) and at recitation (physical copy)
(no late submissions accepted <--
really!)
- Be sure to include your name, your Andrew ID, and your section (T or
U) clearly on the top of each file in your assignment.
- Name your program Hw11.java
- If your program requires additional files (sounds, graphics, etc),
submit them all in a single zip file: Hw11.zip
- Use well-named variables, proper indenting, reasonable commenting,
etc. Do not use magic numbers!
- Provide complete (but concise) test methods where appropriate!
- Submit printed solutions in class. Your
printed solutions must be identical copies of your emailed solutions!
Term Project
Your task is to design and implement a Java program of your choosing.
It may be graphical, text-based, or even file-based. It may be a game, or
a math or science application, or a baseball statistics package, or a
productivity application (think Word or Excel, only very "lite" versions), or a
shell script, or anything else you choose. This is a wide open assignment,
and you are expected to be creative in your approach to it. Note, though,
that this is a solo assignment -- you may not work with anyone else.
Also: you may use non-standard Java libraries (like an OpenGL
implementation for 3d graphics, or jfugue for audio), but you must obtain
explicit instructor approval in this case before starting your project.
Plus: you may not reuse any code you have previously written, for this
course or otherwise. All your code for this project must be original code
written by you explicitly for this project.
And: while you have very broad liberties regarding both what you
do and how you do it, your project must demonstrate these
required concepts:
- Custom classes of your invention (with accessors, mutators, and multiple
constructors)
- The Java Collection Framework (not all of it, but at least one
of ArrayList, HashSet, HashMap, Stack, Queue, PriorityQueue, etc)
- Arrays
- A sorting algorithm that you implement (and not just Arrays.sort)
- Binary search
- An implementation of at least one interface (such as Comparable,
Comparator, MouseListener, etc)
Most projects will allow for these concepts to be included naturally, but if
they must be shoe-horned in, so be it. You must include these concepts
somewhere in your project.
You have two weeks (well, 13 days) to finish this assignment. You are
expected to invest at least 10 hours into this project, and it is further
expected that your project will clearly reflect the quantity and quality of
design and craftsmanship that goes along with that much time on this task.
What to submit
- Your project.
Either the file Hw11.java or the file Hw11.zip, as noted above.
- A Design Document
Actually, this will be placed in a header in the file Hw11.java.
Include a paragraph or two (in a block comment) describing the problem you
are solving and the general approach your code takes to solve it.
After reading this, another programmer (or a CA!) should be able to make
sense out of the classes you designed and the most important methods they
contain.
- Required Concepts
Just after the design document, also in the header if Hw11.java, provide
an itemized list of where we can find each of the required concepts from the
list above (custom classes, JCF, arrays, ...). Be brief: just
list the class and method where we can find one example of each concept.
- A timesheet
Keep track of the time you spend on the project, and include this in a
comment just after the required concepts list at the head of the file
Hw11.java. There is no specific time requirement, and more time will
not necessarily equate to a higher grade. Again, though, it is
expected that you should invest at least 10 hours to obtain a satisfactory
grade.
How will you be graded?
- Well-Chosen Problem [10 pts]
Projects should show a level of sophistication in keeping with your
hard-won programming prowess. They should be neither too simplistic
nor too complex. They should also be interesting, though we
will take a broad view of this.
- Design [10 pts]
Your design should include well-chosen classes, methods, data
structures, and algorithms, explained in a clear design document as noted
above.
- Robust Operational Program [10 pts]
Your program should work. It should compile and run. It
should not crash or hang, even in the face of undesired input.
- User Interface [10 pts]
To the extent that it is appropriate for your particular project, you
should have a polished user interface.
- Required Concepts [20 pts]
Your code must demonstrate each of the required concepts from above, and
then in a well-designed manner.
- Style [10 pts]
Your code must abide by all the style guidelines we have discussed in
this course.
- Test Code [10 pts]
Your code must include complete (but concise) test methods where
appropriate!
- Effort [20 pts]
Once again: you are expected to invest at least 10 hours into this
project, and it is further expected that your project will clearly reflect
the quantity and quality of design and craftsmanship that goes along with
that much time on this task.
- Bonus [0 to 20+ pts]
For extraordinary work, we may award bonus points. Please
discuss more ambitious bonus attempts with the instructor prior to investing
too much time into them!
This is meant to be fun. Enjoy (and work hard)!!!
Carpe diem!