Computer Science 15-110 (Lecture 4), Spring 2010
Homework 12-14 (Term Project)
Due: Fri 30-Apr-2010 at 10pm (no late submissions accepted).
Hw12-14 Submission Coordinator: Both your "Mentor CA" and
koz
This project is non-collaborative (so you must work alone), but with special
rules, so read the following carefully.
Also: submit your project as an attached zip file to an email sent to both
your "Mentor CA" and to koz. You should cc yourself in that email, too,
and verify that you received the project you intended to submit!
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.
In fact, you may use anything (any code, any graphics, any sounds,
anything at all) so long as you very clearly cite precisely where it came from
and, if possible, who created it. You will only be graded on the portions
of your project that you created entirely on your own, but you are welcome to
use other materials as appropriate. Again, just be certain to make it
abundantly clear what is yours and what is not.
Note: you may reuse code you have previously written for this course or otherwise,
but you must cite yourself in this case and such code will not count towards
your project grade (it is the same as using code from any other source). All
your code for this project must be original code written by you explicitly for
this project.
You have just over two weeks 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. Naturally,
many of you will exceed the 10-hour bar, but this is a minimum requirement for
passing the term project.
What to submit
- The Project Zip File
Submit a single zip file named hw12-<andrewId>.zip containing all the
files described below.
- Project Source Files and Support Files
Include all your project's .java files, along with all other files
(.jpg, .midi, etc) that are required to build and run your project.
- [Optional] Project Jar File
Also include in your top-level project directory a jar file named
hw12-<andrewId>.jar, containing a runnable version of your project.
Note: this semester, the jar file is optional but strongly
encouraged. To create a jar file, follow the steps
here. As
the hint in that document says, "Don't forget that trailing dot!"
- Design Documents
In your top-level project directory, include a directory named "design",
and in that directory place all your design documents. At a minimum,
this must include a paragraph or two 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.
Also, you should discuss your user interface (assuming you have one, as most
of you will), explaining not just what your program looks like but
why it does so. For example, many of you started your projects by
studying similar programs on the web -- you should list those here and
explain what was good and bad about those programs and how they influenced
your design. You should also include any other supporting design
documents you might have, such as storyboards or any other materials you
made in the course of designing your project.
- A timesheet
In your top-level project directory, include a file named "timesheet.txt".
In this file, keep track of the time you spend on the project. 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 (as appropriate),
methods, data structures, and algorithms, explained in a clear design
document as noted above.
- Robust Operational Program [25 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 [25 pts]
To the extent that it is appropriate for your particular project, you
should have a polished user interface.
- Style [10 pts]
Your code must abide by all the style guidelines we have discussed in
this course. It must also 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 10+ 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!
Additional Grading Issues:
- Mentor CA
Each of you has been assigned a "Mentor CA" for your term project.
While every staff member is happy to help you at any time, it is expected
that your Mentor CA will provide extra guidance during the course of your
term project. Also, your Mentor CA will be grading your term project.
You are encouraged to discuss your grade with your Mentor CA during the
course of the term project, so you know where you stand and what additional
work may be required to improve your grade.
- Double Credit
As it is, this assignment is worth multiple hw's. However, if you invest over 20 hours into the
assignment, then the assignment weight will be doubled again, but only if this actually helps your grade (that is,
only if your term project score exceeds your previous hw+lab average).
You do not have to sign up for this option -- it will be automatically
computed for anyone for which it applies.
- Receiving Your Grade
During the 4-day period after the term
project due date (up to the following Tuesday night), each of you should
meet with your Mentor CA for 10 minutes to present your term project and
discuss your grade. Sign-ups for these
time slots will be handled by email by each Mentor CA.
Note that 10 minutes is not much time, and we'll really need to stick to
the schedule, so you should show up at least 5 minutes early, and you
should bring your own computer and have your project running and ready for
your presentation prior to meeting your Mentor CA! Expect to spend no
more than four minutes presenting, discussing your overall design
and any clever features that you have created, leaving several minutes for
your Mentor CA to ask questions! Also, if you do not sign up for
in-person grading, or you miss your reservation, then your project will be
graded without your presentation, and you will receive your numeric grade
via email. Finally, as with all grades in this course, students should
feel free to consult with me if they wish, though we have worked hard to
ensure consistency in grading across our entire staff, and as such I would
change a Mentor CA's grade only in extreme cases.
- Term Project Fair
This is mostly for fun, so you all may share the great fruits of your
excellent efforts, but it is also a competition: the top projects from each
Mentor CA will advance to a term project fair and competition. We'll invite a highly-esteemed guest judge, perhaps serve some
salty snack and sugary beverage, and be dazzled by these top projects.
We'll also choose an overall winner, with some suitable prize thus awarded!
This is meant to be fun. Enjoy (and work hard)!!!
Carpe diem!