CSE 142 Winter 2002

Homework #5

You Set The Stage

Project description and partner declaration due:
  in lecture, Monday, February 25.
Due: Electronically 11:00 pm Sunday, March 3;
  written report due in lecture, Monday, March 4.

 

Overview

The purpose of this assignment is to let you have fun with everything you've learned so far this quarter, including the latest material on interfaces, and, optionally, some new techniques for handling events (like mouse clicks and keystrokes).  Working with a partner, if you wish, create an interesting animation, something you'll be proud to show off to your friends (you'll make them wish they had taken CSE142!).  Since each project will be unique, grading will also work in a different way.  You'll make an appointment with a TA and will have a chance to show off the features of your unique project.

The theme of your animation can be anything you like (but keep it relatively tasteful -- remember that your TA will have to view it!).  The upper limits are your imagination, Java skills, and time.  The lower limits are the kinds of animations we've shown you as examples.  You should have some active graphical objects, with at least two different classes of actors, that do something interesting.  (You also can have several classes of props in your animation if you like.)  You must include at least one of the following features in your program (you may include both if you wish):

Use your imagination!  Create an interesting animated world.  A selection of outstanding projects will be demonstrated in lecture towards the end of the course (with the author(s)'s permission, of course).

Instructions

  1. Read all the instructions to get an idea of where you are heading.  You will note that the steps don't all have to be taken in order.
  2. Find a partner.
  3. Study the sample code.  You should build on the Stage.java and Actor.java classes, and possibly also the Prop.java and ShapeProp.java classes.
  4. Pick a theme.  You should write it out on paper so that you have a clear idea of what you want to do.  It should be a one- or two-sentence description of your project.  Don't describe the code, but tell what the program is intended to do.  It should be a description that a non-programmer would understand.  In lecture on Monday, February 25, turn in a sheet of paper listing the people in your group and what your project is (the one- or two-sentence description).  Each person in a group should turn in a separate sheet of paper.
  5. Work out the details of the design of your project, and build it!   You should not modify any of the basic framework classes listed above in your work.
  6. As soon as your class structure is finalized, print a UML diagram of it.  You won't need to turn it in until the grading session.
  7. Prepare for the grading session.
  8. Prepare a short (at most 2 pages) written report with the following information (required):
    1. Give a revised and accurate description of your theme.
    2. Give simple instructions for running your animation and interacting with it.
    3. In one paragraph, state briefly how well you feel you achieved the goals you set out for yourselves.
    4. If you had more time to work on the assignment, how would like to have improved it?  What additional programming knowledge do you think would have helped?
    5. What are the most important things you learned from this project?
  9. Just to be on the safe side -- go back and reread the instructions to make sure you've done everything.
  10. Electronically turn in all your new .java files (once per team).  On Monday, March 4, turn in your written report.  (Turnin form not available yet.  Check back later.) To turn in your work, go to the link at the bottom of this web page.

  11. IMPORTANT: Print a hardcopy of your turn-in receipt.  (If you don't print it, there is no way to get back to it except by running the turn-in form again.)  Bring your hardcopy (and the UML diagram) with you to your grading session.

Notes on working in pairs

For this assignment, you can choose a partner and work together on all aspects of the project.

  1. The partner should ideally be in the same section that you attend.  However, a partner from a different section, possibly attending a different lecture, is acceptable.
  2. By the beginning of lecture, Monday February 25, you must have decided on your partner.  After that date, you can't start a collaboration.  It is OK to dissolve a collaboration after that date if things aren't working out, but the two former partners must submit separate projects that are different, so we really encourage you to work things out.  In lecture (Monday), turn in your "partner declaration" and project description.  This is a sheet of paper declaring who your partner is; list both party's names and quiz sections.  Each of the two parties must turn in a separate such declaration, even if you are both in the same section.  If you are going to work alone, you must declare that, too.  In short, each student individually will turn in a partner declaration and project description on February 25.
  3. Aside from the partner declaration, each team will turn in only one copy of all material: one electronic turn-in, one print-out of the turn-in receipt, etc.

Notes about grading

Both partners will receive the same score for the assignment, except in unusual circumstances.

Grading will be done in person with a TA, with both partners present.  To get graded, you will have to make an appointment with the TA, to meet in the IPL.  Bring your printed receipt to the grading appointment.

Sign up in quiz section on Thursday, February 28.  The appointments will be held during the period March 4-8 .  If you and your partner have different TAs, sign up for only one appointment; you can tentatively agree between you in advance which one to sign to up with, but we reserve the right to switch you to the other TA if necessary for scheduling or load-balancing reasons.

At the grading appointment, be prepared

Both partners should be fully prepared to handle either aspect.  The demo will be done from our on-line copy of the code as turned in electronically.  You will not have to bring the code on a diskette.  The demo period will be short.  It would be a good idea to rehearse a 4 or 5 minute demo in advance.  Both partners need to show up, at the scheduled time, with the receipt and any other requested material, or the project will receive a grade of zero.

Notes on the sample code

The Sample Code page http://www.cs.washington.edu/education/courses/142/02wi/homework/hw5/dist/ gives you two categories of code to get familiar with. The "framework" classes will be ones you use to control the animation. Get familiar with them to the extent that you can use them (without change) as the infrastructure or underpinnings of your project. The "examples" show how the framework can be used.  Pay particular attention to how the events are handled (keystrokes and mouse clicks).   Don't waste any time getting started on figuring this stuff out!

UML Class Diagram

Some of the windows and box formats you see in BlueJ follow a diagramming notation called UML (Unified Modeling Language).  On the main project window (the one with all the classes), make sure that the "Uses" and "Inheritance" boxes are checked: that makes the picture into a UML Class Diagram.  Do a screen capture, print it, and bring it to the grading appointment.  Before capturing the image, enlarge the window, and drag the classes around on the screen until you get an easy to understand picture of how the classes are related.  Example: don't use the BlueJ default arrangement; toy with it to get something clearer.

It may actually be beneficial do this as soon as your class structure is finalized.  You may find it helpful to keep the printed picture with you when you talk to course staff about your project.  It will help them quickly get an idea of your overall structure. 


Turning in Your Work

As always, you will be graded on two things: the correctness of your work (i.e., how well you followed directions, and how well your program does what we asked), and on the clarity of your program (i.e., how readable it is, and how well it communicates the intent of what you were trying to accomplish to the human reader).  The correctness score this time will include how well you used the framework to build your animation, and also how interesting your animation is.  Clarity will benefit from good explanatory comments, good choice of variable and class names, good use of local names, and good use of indentation to group things.

Electronically turn in your files.  Turn-in form

Have lots of fun!