CSE 341 - Winter 2003 - Project

Overview

The project is meant to be fun and open-ended, as well as a good learning experience, so while we do provide guidelines on how you should work on it, there are very few restrictions on exactly what you work on. The project should ideally be done by a team of 2-4 students, although you can do a project on your own if you choose.

We expect that most students will do a Java project. However, if you want to do your project in another language, ask - probably something can be worked out. You are also welcome and encouraged to discuss possible project ideas in advance with the TAs and instructor.

Goals

These are the skills and experiences you should focus on in working on this project, roughly ordered with the most important first.

These goals are written with Java in mind -- if you are doing your project in another language, adapt them accordingly. For example, if you were working in Haskell, rather than object-oriented design, a goal would be gaining experience in developing a clean design for a pure functional language.

Requirements

Group Work

We recommend that you to work in groups of two to three, primarily for the reasons below. Let these goals guide how you work with each other to ensure you get the most out of this experience.

However, you can work alone if you choose, or in a group of four (might be hard to manage a group this large).

Since you will be doing demos of your projects during section time on Thursday March 13, we strongly recommend you team up with people in your section. All team members must be present for the demo, so if you don't team up within your section, at least make sure that everyone in the team can make it to at least one of the two section periods (8:30 and 9:30 am) on March 13.

Development

If you do use Java, we recommend (surprise) using the Eclipse environment. If you're working in a team, we recommend using cvs to coordinate the work among you -- Eric can set you up with an individual unix group and cvs repository.

Code quality is Job 1. As you code, keep in mind the same goals as you do when you work on your homework. In particular, pay close attention to OO design, as stated in Goals above.

You're welcome to make full use of standard libraries, and if you use any other code you find elsewhere, make sure to cite it appropriately (what you used, who wrote it, where you found it, and how you changed it, if at all). (Obviously, we expect a significant extension of any existing code.)

Your code should be submitted by the beginning of class on Wednesday March 12 (same day as the final report) via computer only.

Final Report

Not just what you did but why. Your final report should stand alone as a complete document and include the contents of your Project Proposal document and your Preliminary Design and Implementation Plan document, updated as necessary. In addition, you should identify one significant engineering decision that was difficult to resolve and discuss...

This report is due on Wed March 12 at the beginning of class, and should be submitted both on paper and via computer.

Demo and Interview

Be proud of what you've done. During section time on March 13, each team will be given about 10 min. to demo and discuss the project with the TAs. All team members should be prepared to discuss any part of the design and code. We will be meeting in the lab in Sieg 232.

Deadline Summary

Project Ideas

Not sure what to do? Below are some suggestions, but we encourage you to come up with your own ideas. Check with Andrei, Eric, or Alan to discuss other ideas, what's feasible and appropriate for this project, what outside resources you should look to, etc.