Computer Science 252
Problem Solving with Java

Fall 2013, The College of Saint Rose

Programming Project 3: Final Project
Proposal Due: 11:59 PM, Monday, November 18, 2013
Design Due: 11:59 PM, Friday, November 22, 2013
Program Due: 4:00 PM, Monday, December 9, 2013

For the final programming project, you are to propose, design, and implement a program that is interesting to you to demonstrate what you have learned this semester. You have a great deal of freedom in choosing what to program for this project. However, it must be an effective demonstration of your skills. More details can be found below.

This project will count for 50% more than earlier projects. See the "Grading" section for details.

Ground Rules

You may work individually or in a group of 2 or 3 on this program. While you may ask for help from your instructor or from the tutors in the Academic Support Center, that help will be more limited than for regular lab assignments. Additionally, any help you receive must be clearly documented in the comment at the top of your program (i.e., who helped you and exactly what that help was). If you work in a group, you will be required to include a detailed breakdown of who was responsible for which parts of your design and implementation. Group projects will earn a single grade, except in the rare situation where it becomes clear that a group member has not contributed significantly to the project. Also, the scope of the project is expected to be larger if you are working in a group.

Have fun and good luck!


You may find it difficult to estimate the programming effort that will be required for programs you are considering. Please discuss ideas with with me before going too far.

Your project should showcase many of the programming skills you have worked on this semester. Projects of an appropriate scope will very likely include several of the major ideas and constructs we have seen this semester (graphics primitives, mouse/keyboard event handling, custom classes, active objects, Swing GUIs, recursive structures and methods, ArrayLists/arrays) as well as most of what you knew coming in (conditionals, loops, random numbers, files, methods). Using the material covered late in the semester is encouraged, and will likely make for a more fun and interesting project, but this is not a requirement. You may also make use of Java constructs and parts of the Java API that we have not used this semester, but check first.

There are two preliminary items to submit for this project.

By 11:59 PM, Monday, November 18, 2013, submit a written proposal (by email or on paper), a few paragraphs long, describing your intended project. Clearly state what your program should do and which programming constructs you expect to use to complete your project. Please submit earlier if you can, so I am not overwhelmed with submissions at the deadline. I will make every effort to read these and give you feedback immediately. Once your proposal is accepted, your grade for the functionality portion of the project will be based on how well your submitted program matches what you proposed.

By 11:59 PM, Friday, November 22, 2013, you are to submit (by email or on paper) a detailed design of your program, similar to those required for some of the lab assignments this semester. The design should list all of the classes that will make up your program, clearly indicating the purpose of each and if it is a "special" class like a WindowController or an ActiveObject. Include a list of the major instance variables you will use in each class and the methods you will need to implement. For each method, clearly indicate its parameters and return type and give a brief description of what the method will do and how it will do it. If any of your classes will involve the layout of graphical objects on the canvas, include drawings labelled with important coordinates and dimensions.

Before 4:00 PM, Monday, December 9, 2013, submit your Java program for grading. There are three things you need to do to complete the submission: (i) upload a copy of your Java program (the .java file only) using Submission Box under assignment "Final", (ii) print a copy of your program and hand it to your instructor, and (iii) demonstrate the execution of your program for your instructor (2-day grace period for demos).

Don't forget to check your programs for compliance with the Style Guide for CSC 252 Programs


This assignment is worth 150 points, which are distributed as follows:

> FeatureValueScore
Proposal (25 points)
Proposal completeness 25
Written Design (25 points)
Major constructs and their purposes specified 4
Major classes/variables specified 6
Method signatures 7
Detailed method descriptions 8
Program Design, Efficiency, Style (40 points)
Appropriate comments 6
Good variable names 4
Appropriate variable declarations 5
Good use of constants 5
Appropriate formatting 3
Good overall design and methods 7
Appropriate use of language constructs 5
Efficiency (e.g., not reconstructing objects unnecessarily) 5
Program Correctness (60 points)
Determined by Grading Contracts