CSE 413 Winter 2002

Assignment 4 -- Java Project

Project proposal due Friday, Feb. 1, in class.
Java class design due Wednesday, Feb. 6.
Electronic turnin of final project due Tuesday, Feb. 12, by 10:00 pm.
Project report due in class Wednesday, Feb. 13.

The Project

Write a cool java applet or standalone application, of your choosing. A written project proposal is due Friday, Feb. 1.  The design of your Java classes is due Wednesday, Feb. 6.  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. 12 (electronic); a short written report is 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 Java programs and 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, Feb. 1.  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 can help if you distinguish core features of your project from additional features you would like to add if there is sufficient time.

By Wednesday, Feb. 6, you should turn in a design describing the major Java classes required for your project. This is a chance for you to really think about design, separately from implementation.  You should turn in a set of CRC cards for the classes you have designed, along with a short written summary (this need be nothing more than a revised project proposal that summarizes the implementation).  You don't need to have any actual code working at this time, although you may want to create some prototype code to test ideas as you design.  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 to create a design that will be close to the final one.

Project and Report

The code for your project should be submitted by 10:00 pm, Tuesday, Feb. 12. This turnin form allows you to turn in up to 20 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.  You can also bundle your files into a zip archive and turn that in.  You do not need to print the turnin receipt - we will examine your code online - but it might be a good idea to print a copy of the receipt for your records.

A report describing your final project is due in class the next day.  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.  The 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 course.  You might want to browse old course webs to get some ideas.  Maybe you can rewrite your favorite CSE143 program in Java?  Keep in mind however, that a substantial part of this project is the design, so it must involve significant design effort (i.e. you cannot just re-write a C or 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.