CSE 413 Winter 2001

Assignment 3 -- Java Project

Project proposal due Friday, Jan. 26, in class (but accepted without penalty until Monday, Jan. 29).
Java class design due Wednesday, Jan. 31.
Electronic turnin of final project due Tuesday, Feb. 6, by 10:00 pm.
Turnin receipt and project report due in class Wednesday, Feb. 7.

The Project

Write a cool java applet or standalone application, of your choosing. A written project proposal is due Friday, Jan. 26 (if at all possible), or Monday, Jan. 29.  The design of your Java classes is due Wednesday, Jan. 31.  We will try to give you quick feedback about these phases of the project, particularly if there appear to be any significant problems.  The final project is due Tuesday night, Feb. 6 (electronic); the turnin receipt and a short written report are due in class the next day.

You may do your project individually, or in groups of two. If you are in a group, turn in one proposal/ project with both of your names on it. Proportionately more work will be expected from groups than from individuals.

Your project must be written in Java. You may use any development environment you wish; however, your program must compile and run using Sun's reference Java system (JDK 1.3).  Your project should take advantage of features unique to the Java language or libraries, and should use classes and objects (particularly class hierarchies and derived classes) in some essential way. It may be either a standalone application, or an applet.

The code should be primarily your own. If you base your project on existing code (there are tons of applets out there), make sure you document this in your project report.  If you use existing code, or code generated by your development environment's "wizards", you are responsible for that code.  (Past experience has been that wizard-generated code is often more trouble than it's worth for this assignment.)

Project Turnin

Proposal and Class Design

The first thing you should submit is a project proposal, due Friday, Jan. 26 if possible.  This should be a relatively complete description of the project, but it does not need to be overly long. The purpose of this proposal is to give you quick feedback about whether your plan is appropriate (not too trivial, but not impossibly ambitious either).  It may be helpful to distinguish core features of your project from additional features you would like to add if there is sufficient time.

By Wednesday, Jan. 31, you should turn in a description of the major Java classes required for your project. This is a chance for you to really think about design, separately from implementation.  We suggest you try using CRC cards (see ch. 3 of the textbook) to work out the design.  You can turn in these cards, or other diagrams or reports to document your design.  You don't need to have any actual code working at this time (although you may want to run some prototype code to test ideas).  Your design should describe the classes you will write, what methods and data members each class will contain, and what the class interfaces will be like, including method parameter lists and visibility of members.  It's fine (and expected) for some details of your final project to deviate from this initial design, but you should aim for as close to a final design as possible.

Project and Report

The code for your project should be submitted by 10:00 pm, Tuesday, Feb. 6. This turnin form allows you to turn in either up to 25 files or a single jar file, which can contain as many files (including Java code, images, sounds, or whatever) as you need.   See the jar file help page if you do not know how to create a jar file.

The turnin receipt is due in class the next day.  Along with the turnin receipt, you should also submit a report describing your final project. Describe how, if at all, it differs from your proposal. Outline the system design and explain your major design decisions. Did you encounter any unexpected surprises or need to redesign a significant part as you implemented the project?  Be sure to mention any existing or "wizard"-generated code that you used.  If you worked with a partner, describe briefly who did what.  Your report does not need to be particularly long, but it should be complete enough for us to evaluate the work you did.

Project Demos

We will attempt to take over one of the instructional labs for a demo fest sometime after the projects are due. This is always a lot of fun - CSE 413 students have traditionally come up with some amazing projects.  More details on this later.

Project Ideas

Here are a few suggestions for projects -- you can also do something quite different if you want.

Another possibility would be to create a object-oriented version of one of your favorite projects from another class.  You might want to browse old course webs to get some ideas.  Maybe you can rewrite your favorite GP142 program in Java?  Keep in mind however, that a substantial part of this project is the design.  Thus whatever you choose must involve significant design effort (i.e. you cannot just re-write a C program in java).  Also be sure to credit any sources you are starting from.

Your project does not need to have a fancy graphical user interface.  Interesting algorithms, simulations, and so forth are fine, but it must exploit object-oriented programming and Java in some essential way.