Final Project (Spring 2012)
Final Project w/ Graphics Right-click me and select "Save target as..." to save.
Final Project w/ Console Right-click me and select "Save target as..." to save.
The goal of the final project is to demonstrate your understanding of all C++ programming concepts covered in this class, such that you can implement your own engineering simulations and other useful programs. Prove your understanding of the fundamental programming concepts by creating a meaningful (pronounced "cool") program of your own design.
There is one topic you cannot implement this semester: Conway's Game of Life. We did that last semester and we want you to create something that outshines this.
Design and Create Your Own Program
Now that you have had practice with the fundamental concepts of computer programming, it's time to design and create your own useful, meaningful and fun program. For this project, you must choose one project partner and you will work together to create your program.
These are the requirements of the final project.
Choose a Teammate
This project should be worked on in pairs, and is designed to be solved in two or three sittings (aka "programming dates"). We strongly encourage you to schedule a few meetings with your partner, during which time you both sit at one machine, implementing the application. In the Extreme Programming methodology, we call this pair programming, and it is an incredibly effective means of efficiently solving programming problems.
You must choose one partner. No individual projects and no teams of three are permitted. Your partner may be selected from any CSCI 261 section. Once you have chosen your partner, one of you must send an email to ybakos@mines.edu stating both of your names and sections by Wednesday, April 11 at 11:59PM.
For example, "John Doe (section A) and Mary J. Blige (1PM section) will be working together."
Propose Your Project Idea
You and your partner should create a brief (one or two sentence) description of your program that describes what it is and how it is useful, fun, or "cool." You must declare your idea by Monday, April 16 at 11:59PM.
For example, "We will be creating a program that calculates the optimum pair of gears that should be selected on a bicycle, given a degree of incline and current velocity. Users select the type of bike, specify their speed, pain threshold and degree of incline. The program then informs the user of the front and rear gears that should be selected. But wait, there's more! We then animate this on the screen to illustrate the bike as it climbs or descends a hill. Whee!"
To declare your project idea, you must submit this form. Remember, you must submit this form by Monday, April 16 at 11:59PM.
The course coordinator will review your project ideas and provide you feedback, eg (too complex! or too simple!) on Tuesday, April 17.
Document Your Project
You must write a brief (100 - 300 words) description of this application, describing what it is, how to use it, and any other rules or issues the user should be aware of. This documentation should be saved as a plaintext file (use Notepad) called README.txt and should be located inside your project's src folder.
This file must be called README.txt, must be located inside your src folder, and should be submitted with your code.
Implement the Application
The program you choose to design and build is entirely up to you. It must be simple enough to complete by the end of the semester, but complex enough such that it demonstrates your basic aptitudes as a programmer. Your project must meet the requirements above as well as the requirements listed here. This project is graded on a 30 point scale, as described below.
Requirement | Points | Notes |
---|---|---|
Correct submission as a .zip of your src folder | 1 | |
Includes README.txt | 1 | |
README.txt is well-written | 2 | |
Program compiles and runs | 5 | |
Exhibits consistent, appropriate style | 5 | |
Uses flow control properly (if/else if, while, for etc) | 5 | |
Proper use of constants, especially for messages and constant values | 2 | |
Uses libraries such as string, math, vector, OF, etc. | 1 | |
Uses at least one data structure (array, vector, etc) | 1 | |
Uses file input streams* | 1 | |
Uses file output streams* | 1 | |
Uses graphics such as OpenFrameworks* | 2 | |
Uses at least one class | 2 | |
Appropriate use of OOP principles/design | 1 | |
All functions preceded by brief, descriptive comments | 2 |
*Note that the "file input and output" requirement above can be replaced with "graphics." All other rubric items are required.
Keep it Simple & Ask Questions
Our intent is to leave the design and implementation of this project entirely up to you. It is very easy to over-engineer your solution; keep it simple.
In addition, be sure to start early in order to give yourself time to ask questions and experiment. (How do you add new files for classes to your project? How do you capture key presses? How do you capture mouse clicks?)
Submissions & Due Date
You should submit this project similar to previous homework assignments: create a .zip of your src folder and submit your work via blackboard.
Your work is due by 11:59PM on Wednesday, May 9. No late submissions will be accepted.
The description for Conways Game of Life is quoted from Wikipedia.
© Yong Joseph Bakos