Computer Science 120
Introduction to Programming

Spring 2012, Siena College

Programming Project 4: Final Project
Proposal Due: 11:59 PM, Thursday, April 19, 2012
Design Due: 11:59 PM, Monday, April 23, 2012
Program Due: 4:00 PM, Monday, April 30, 2012

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 50% more than earlier projects. See the "Grading" section for details.

Ground Rules

You must work individually on this project. You may consult only Dr. Small and Dr. Teresco for help. You may not discuss the programs with anyone else including your classmates and the computer science tutors until after everyone has submitted their programs. You may consult your own graded or ungraded lab submissions, your own class notes, and any class examples or notes available from the course web page. Think of this as an open-book lab exam. Any collaboration or consultation of unauthorized sources will be considered a breach of academic integrity and will be dealt with according to the course policies outlined on the syllabus.

Have fun and good luck!


Since you have limited programming experience, you may find it difficult to estimate the programming effort that will be required for programs you are considering. Please discuss this with your instructor 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 respond to mouse events, include multiple interacting classes, will use loops, and will utilize arrays and/or ArrayLists. Using ActiveObjects 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 we have not used this semester, but check with us first.

More specifically, the following guidelines will be used to determine if your program is sufficiently complex to qualify for full credit:

Important note: If you have an idea for a project that doesn't quite fit these guidelines but which you feel is about the right level of complexity, please discuss it with your instructor. There's a good chance it's either reasonable as is, or we can discuss how to change the requirements so it is appropriate as a final project.

There are three items to submit for this project.

By 11:59 PM, Thursday, April 19, 2012, 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 we are not overwhelmed with submissions at the deadline. We 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, Monday, April 23, 2012, you are to submit (by email or on paper) a detailed design of your program, similar to those we 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 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, April 30, 2012, submit your Java program for grading. There are three things you need to do to complete the submission: (i) place a copy of your Java program into your csis120/hw folder under hw14, (ii) print a copy of your program and hand it to your instructor, and (iii) demonstrate the execution of your program for your instructor.

Don't forget to check your programs for compliance with the Style Guide for CSIS 120 Programs


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

> FeatureValueScore
Proposal (25 points)
Proposal completeness 25
Written Design (25 points)
All classes listed and purposes specified 4
Major instance 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)
Total 150