Be ready. Choose your top five projects to be ready for the Lottery on Wednesday, April 2nd.
Here is the list of projects.
Here is an additional and important page about the Projects as well as the detailed explanationof how you'll choose your projects, set up your on-line reports, etc.
The class will divide into teams of four students each. Each team will work on a single project for the entire quarter. The source and compiled code needs to be able to run on and to be deposited on the CCS Solaris system. There will be one set of code for each pair team, not distinct implementations. But there will be separate reports from each student about what they've done.
To help everyone keep moving ahead, there will brief presentations by two of the teams at every class meeting, totalling about ten minutes out of the sixty-five minutes class time. This will mean that every team will be reporting approximately every two weeks. Reports must also be posted on web pages of the team members; these pages will be available as links from this course page (see below).
The preferred order for your work: Algorithms come first, then design, then write some tests, then code your system and test it.
Total credit for the project will be 40% of your entire grade.
Here is the complete list of projects. A lottery will be held Thursday, June 27th. It is designed to try to assure that you get a project to work on that you're interested in. Each of you will rank your top five choices and write them down. In class, a drawing will be held. If you don't get your top choice, you go to the second round, and another set of drawings is held, until every student gets a project and one other student gets the same project. Sorry, but no arrangements are made to let you choose your partner. In this respect, the lottery is similar to the real world of work.
In developing your projects, start with the most simple, even trivial designs, and keep them that way! As Einstein said, "Everything should be made as simple as possible, but not simpler." This often means throwing away code and writing new code. Just imagine you're drawing pictures in the sand. Draw one, rub it out, draw another, and keep that up. (More great quotes from Einstein here.)
Some of you have projects that involve material that we won't cover until well into the course or that we won't explicitly cover at all. Virtually every project deals with material that is covered in your textbook. The topics covered later in the textbook do are often independent of most of the earlier material. You'll just have to start studying your project topic, using your textbook and any other resources you can discover. Sometimes this will mean going to earlier material in the book to learn what you need. You'll just need to explore. Many of you will be in the same boat, so be sure to use the mailing list to exchange ideas, information, etc.
I strongly encourage all pairs to work together, sitting at the same machine at least a few hours each week developing your design and tests, and developing code, testing, critiquing, documenting, etc. Please do not do all your work at a distance, with the two of you working miles apart. Some indication about who did what should appear in your reports. It is also important that you don't settle into an arrangement in which one person does all the coding and the other does the rest. You must take turns.
As long as you do substantial design and project building yourself, you are welcome to use any of the many built-in capabilities of the Java platform, especially Swing and Java 2D.