CS-2510 Final Project

Out: November 14th

Presentation Due: December 1st/5th/7th during lecture

Deliverables Due: December 9th @ 10:00 pm




Description:

The purpose of this final project is to put all that you've learned in the two Fundamentals courses into practice by designing a creative, original piece of interactive software written in the Java programming language.

Your project should involve the design and implementation of a complex application including interaction (mouse, keyboard, animation, etc...) and visualization.

I realize that not every enjoys games, so there are three possible project focuses. If you have another idea, and you're not sure if it falls into a category then just ask and I'll give suggestions/comments.

Your options are:

  1. A Game:

    Pretty self explanatory, but I expect the game to be reasonably complex, on the level of Tetris as implemented in Fund. I Fall or full Asteroids as implemented in Fund. I Spring.

    If your game implementation itself is not sufficiently "complex", there are ways of adding to the value. In particular, you may improve the animation and/or add computerized music. The latter of which can be implemented using the MIDI sound library, and the corresponding SoundWorld, which are included in JavaWorld.

  2. Algorithm Animation:

    For those that are less creatively inclined, you can choose to implement an interactive visualization of an algorithm (e.g., sorting, graph-traversal, binary search, etc.).

    Obviously this is not the same as implementing the algorithm since you will need to visualize each step, which changes adds to the representation (you are now representing steps of steps in the algorithm).

  3. Interactive Music:

    For those that are creatively inclined, but not into games, you can choose to implement an interactive program that allows the user to explore some aspect of music using the MIDI sound library, and the corresponding SoundWorld, which are included in JavaWorld.

    Something like a sound recording program, drum machine, or other visual musical program that allows users to interact and explore.

If you have ideas and want to be sure they are acceptable and/or would like comments/suggestions, I would be happy to discuss them with you. But make sure to do it early, not right before the project is due.




Presentation:

On the last three days of lecture, project teams will present their projects using the projector in class. This will include a demonstration (running the program, describing features), a description of the program design/decisions/organization, and an overview of the source code and details of the implementation.

These will take about 10-15 minutes each. Although students are not strictly required to attend class on the day they are not presenting, they are encouraged to come and see what others have done. As we approach the date groups will sign up for time slots.




Deliverables:

In addition to presenting your project to me (demonstration, design, implementation), your submission will also consist of three project deliverables.

  1. Design Document: A document in TXT or PDF format that describes the design of your program, choices involved, how you approached the implementation, etc.

    Think of it as a developer's guide that will help me understand the code as I read through/navigate your source files.

  2. User-Guide Document: A document in TXT or PDF format that describes how (once I run your program) to make the magic happen. It should include instructions and other descriptions from the standpoint of a user/client of your program.

  3. Source Code and Files: A compressed archive in Zip or Tar/GZ format that contains the source files and extra files (README, image files, etc...) necessary to run/understand your program. Do not include ".class" files, preference files, etc...

    Your archive must include a text README file that describes what libraries (i.e., Jars) are needed and any other setup in order for me to build/run your project.

    The source code itself should consist of a root directory named for your program, and inside it should be three directories: src, doc, test. The src directory should contain your .java files. The doc directory should contain a JavaDoc tree which was generated from your source files. The test directory should contain files with JUnit tests for your classes and methods. Finally, any images and included files should be in an img directory.

    proj/
        src/   - Source files
        doc/   - JavaDocs
        test/  - Test files
        img/   - Included images, etc. (optional)
        README - Description of the package
    
    




Submission:

The three files (Design Doc, User Guide, and Source archive) will be submitted through the homework hand-in normally. They must be in by the deadline; no extensions will be accepted.




Grading:

I will grade your project based on your presentation, design, implementation, and testing. Your grade for the project will count as three homework grades.