Computer Science 202
Introduction to Programming

Fall 2012, The College of Saint Rose

Programming Project 3: Final Project
Proposal Due: 4:00 PM, Tuesday, November 20, 2012
Design Due: 11:59 PM, Thursday, November 29, 2012
Program Due: 4:00 PM, Monday, December 10, 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 twice as much as earlier projects. See the "Grading" section for details.

Ground Rules

You may work individually or with a partner 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 with a partner, 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 one group member has not constributed significantly to the project.

Requirements

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. It should be larger than the labs and projects we have done throughout the semester. Projects of an appropriate scope will very likely include conditionals, loops, random numbers, files, methods, and arrays. Using the constructs we are learning 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 we have not used this semester, but check first.

All projects must include a Java program. You may also choose to implement a Visual Logic flowchart either as part of your graded project or for your own benefit as you design and implement your program.

There are three items to submit for this project.

By 4:00 PM, Tuesday, November 20, 2012, submit a written proposal in Blackboard, 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, to get earlier feedback than the submissions at the deadline can get. Every effort will be made 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. The proposal will be worth 10 points.

Between the proposal submission and the design submission described below, you should discuss a "grading contract" with your instructor. This can be done in person or by email, and involves assigning point values to various proposed features of your program.

By 11:59 PM, Thursday, November 29, 2012, you are to submit a detailed design of your program in Blackboard. The design should include pseudocode for your program, clearly indicating the purpose of each major construct. Include a list of the major variables you will use and any 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. In your proposal, include a copy of the grading contract that was negotiated previously. This design will be worth 15 points.

By 4:00 PM, Monday, December 10, 2012, you are to submit your program (Java files for sure, a Visual Logic flowchart is needed only if your grading contract includes points for a flowchart) in Blackboard. If you worked with a partner, make sure both names are in the Java file, and that you include the detailed description of who was responsible for which components of the design and implementation in a comment at the top of your Java file.

Standard late penalties will be applied independently to each part of the submission.

Style and Documentation Reminders

Before you submit your Java program, make sure it conforms to our guidelines for style and documentation.

In particular, you should have a comment at the top of your class that describes your program and has your name, the course number and section (02 for 11:15, E1 for 4:10). You should have comments throughout your programs describing your variables and any non-obvious Java statements or groups of statements.

All identifiers (class names and variable names) should be meaningful and conform to Java's naming conventions.

Your code should be nicely formatted, with new lines after any { or }, and indented as done in class examples.

Grading

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

> FeatureValueScore
Proposal (10 points)
Proposal completeness 10
Written Design (15 points)
Major constructs and their purposes specified 7
Major variables specified 6
Grading contract 2
Program Design, Efficiency, Style (30 points)
Appropriate comments 6
Good variable names 6
Good use of named constants 3
Appropriate formatting 3
Good overall design 5
Appropriate use of language constructs 5
Efficiency (e.g., not reconstructing objects unnecessarily) 2
Program Correctness (45 points)
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Total 100