Computer Science 15-110, Lecture 9 (Sections M-Q), Fall 2009
Homework 10 - 13 (Term Project)
Due:  Fri 4-Dec-2009 at 10pm (email copy to your instructor and to your CA)
(no late submissions accepted).


Read all the usual terms from hw9.  They all apply here.  In particular, you must work alone on this project!


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 (without explicit permission from your instructor), for this course or otherwise.  All your code for this project must be original code written by you explicitly for this project.

You have more than 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

  1. The Project Zip File
    Submit a single zip file named hw10-<andrewId>.zip containing all the files described below.
     
  2. 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.
     
  3. Project Jar File
    Also include in your top-level project directory a jar file named hw10-<andrewId>.jar, containing a runnable version of your project.
     
  4. 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.
     
  5. 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?

  1. 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.
     
  2. 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.
     
  3. 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.
     
  4. User Interface [25 pts]
    To the extent that it is appropriate for your particular project, you should have a polished user interface.
     
     
  5. 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!
      
  6. 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.
     
  7. 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:

This is meant to be fun.  Enjoy (and work hard)!!!


Carpe diem!