Programming Project
Due: Apr. 20 in class (Presentations must be sent to Dr. Denny by 8:00am that day)
Project. Worth 75 points.
For this assignment you are to create an interesting game of your choosing using an object-oriented approach.
- Work in groups of size one, two, or three (only in approved circumstance).
- 200-300 lines of code per group member (likely more if you work alone).
- Minimum of 3 objects or 2 per person, whichever is larger (likely more).
- You must have a visual component with a window
- You must have interesting file input and output in addition to user interaction.
A good example would be a version of Guitar Hero for the keyboard. In this you would read a song from a file (series of buttons needing to be pressed not an actual song), then have the person press each of the buttons to win the game.
If you are going to be doing an extension (or something extremely similar to) one of our programs in class, in lab, or other assignments, there must be a significant new component to the problem. Example: if you want to do Pong, this is almost 90% identical to a ball bouncing in a box. Be wary!
You have 2 weeks to complete this project, so be careful of scope and starting early. Ensure you set up small milestones for your project as you go to ensure regular progress and avoid issues with compile errors or bugs. There will be no extensions for this project.
Look here for starter code to see how you should program a simple game. You have permission to entirely use this as a start!
Presentation. Worth 25 points.
During our final lab class you will present your program to the class. Ensure you can either connect your laptop to the projector OR be able to quickly download/upload your program to the desktop in G30. You will only have five minutes for the presentation, so be sure to practice. Expectations:
- Introduction - describe your product at a high level. Define any terms you will be using.
- Objects - describe the details of the objects in your program. You may use slides or the whiteboard. Do NOT show your code unless it specifically adds to your discussion.
- Demo - demonstrate your product. If you are doing a game with two players, preplan who your demo buddy will be.
- Conclusion - finish with describing extensions you would like to make to improve your product in the future.
Bonus.
Involving polymorphism, generic programming, lambda functions, long programs or any complex programming topic will be grounds for bonus points. To facilitate giving points: please provide a list (typed) of references to specific lines of code for possible bonus points. Place this list right after the coverpage of your hard copy.
Rubric.
General Instructions, Turning in assignments, and Grading
General Instructions
- Name each file and program as listed in the instructions.
- The top of each program should have a comment block where the first line
is your name and following lines are a description of your program.
//Name: Jory Denny
//This program debates Batman vs Superman! - Use proper coding style (described more in Grading below)
- Follow turn-in instructions precisely.
- Failure to complete any of these steps will result in a significant loss of points.
Turn in Instructions
Each assignment will be turned in to both Blackboard (soft copy) and in class (hard copy). Assignments are due BEFORE, let me repeat, before class starts. This does not mean five minutes after class starts.
- Soft copy (Online submission)
- Create a compressed
.zip
file of all Java programs needed to compile your program and all input files (if needed) to run your program.- If you do not know how to create a compressed
.zip
file, there is this cool new website you can use to search for instructions by entering"How to create .zip Windows 10"
or"How to create .zip MAC OSX"
for example.
- If you do not know how to create a compressed
- Submit
.zip
file on Blackboard by the stated due date and time.
- Create a compressed
- Hard copy (In-class submission)
- The first page of your hard copy must be a signed coverpage.
- Next put the programs in order as described in the description.
- If you do not know how to print a java file, there is this cool
new website you can use to
search for instructions by entering
"How to open and print .java file Windows 10"
or"How to open and print .java file MAC OSX"
for example. In combination with this, you may have to consult University of Richmond webpages to learn how to use campus printers. I recommend printing directly from sublime text editor on University computers (has printing feature enabled) and will print with syntax-highlighting (colors).
- If you do not know how to print a java file, there is this cool
new website you can use to
search for instructions by entering
- Staple all pages together.
- Turn in packet before class begins.
- I reserve the right to assign a 0 to any assignment failing to comply with these instructions. Even for something as small as a missing staple.
Points
- Each assignment is graded out of 100 points (not including bonus).
- Criteria and point distribution
- If the code is not named precisely or does not compile, -75% on a problem.
- If the code does not generate the correct output, -50% on a problem.
- Following instructions and algorithm used to solve, 25% on a problem. Following instructions is extremely important in computer science, train yourself to think like a computer. There are many ways to solve a problem, some may be better or worse than others.
- Stylistic elements of written code,
25% of a problem. Style includes (but is not
limited to):
- Descriptive comments on intent and purpose of code
- Descriptive and consistant naming conventions
- Indenting properly (after an opening brace, tab right by 1 indent; after a closing brace, tab left by 1 indent)
- Consistent spacing
- Consistent bracket placement (same line or on new line)
- Avoiding code duplication
- If there are any discrepencies in grades please see the instructor during his office hours or by appointment (do not discuss with the lab assistants or graders).