CSCI 261 - Programming Concepts (C++)Fall 2017 - Final ProjectQuick Links: Canvas | CS @ Mines | Cloud9 | Piazza | zyBooks |
|||||||||||||||||||||||
| Home | Contact | Syllabus | Assignments | Schedule | Resources | | |||||||||||||||||||||||
This assignment is due
by Tuesday, December 05, 2017 11:59 PM.
NO LATE ASSIGNMENTS WILL BE ACCEPTED
Each week this semester, you have been doing labs and homework
assignments that emphasize specific aspects of the C++ programming
language. For the last few weeks of the course, you will make use of
these language skills in the context of a larger, more realistic
project. The goals of this project are:
The assignment is open-ended. You may
choose to write a program that plays a game, reads large data files and
does a complex calculation with the data, or anything in between. Some
detailed requirements are given below, so please read this document
carefully.
Pair Programming
For this project, you may choose (not mandatory) to work with a partner
using the pair programming technique. In the pair
programming technique, two programmers
work together on one computer. One is
designated as the Driver and writes
the code; the other is designated as the Navigator
and reviews each line of code as it is typed. The two
programmers switch roles frequently. For this
project, the programmers should switch roles at least every
fifteen to twenty minutes.
You may choose a partner from a
different section, but both of you must be able to attend all coding
sessions together. Make sure your schedules align such that you will be
able to meet outside of class three or four times over the last few
weeks of the semester.
Requirements - Project Proposal (due November 13, in class)
On November 13, a short description of your project is due. You should
submit your description (on a typed sheet of paper) to your
instructor as a hard copy during class. (If you have a partner, both
you and your partner should submit your description.) This
document should include the following sections WITH the section
titles listed below
The document you submit should answer the following questions:
You do not need to do any coding to
write this Project Proposal. The purpose of this Project Proposal is to
get you to think about the initial design of your final project. (Note:
we understand that the initial design you submit on November 13 is likely
to change as you complete your project for the December 5 due date.)
NOTE: You have a bit of time to decide upon your topic and a big
picture of your design, but then only over about two weeks for
implementation (due to Thanksgiving break). Because of the tight time
period for implementation, we strongly encourage you to have most of
your design plans done earlier than November 13 (to give you extra
time for implementation). In fact, you are welcome to submit your
Project Proposal for feedback earlier than November 13 (if desired).
Many previous students have said "gosh, wish I had gotten
started on the final project earlier."
Your instructor will give you feedback
on your Project Definition a the class period after you submit it (e.g., too
complex or too simple).
Requirements - Project Code (due December 5, 11:59pm)
Your program must use at least one original class, written specifically
for this project. You are free to use other classes we have developed
during the semester, such as the
Date
class, or classes described in zyBooks, but you must also write and use
one original class.
Your program must use at least one
array (one-dimensional or two-dimensional). This array needs to be
either an array within your class OR an array of objects of your class
type. If desired, you can use a vector instead of an array.
Your program must make use of file I/O OR SFML. Data may either be read
from or written to a file, or both. Please place your data file in the
same directory as your
main.cpp
file. NOTE: If you use SFML in your project, then you do not need to do
file I/O.
Your program must use functions where
appropriate.
Your program must use constants where
appropriate.
Your project must make use of ample
commenting. There should be enough documentation to allow another
programmer to easily make modifications or enhancements.
Your program must adhere to our CSCI
261 style guidelines.
Requirements - Project Paper (due December 5, 11:59pm)
Create a text file called
final.txt
which contains the following sections WITH the section titles listed
below. This file is submitted with your code (see Submission
instructions below).
Resources
While you may search on the Internet for hints as to how certain things
are done in the C++ language, you cannot
directly copy and paste code found from resources outside our course.
That said, any resources we have used
in this class from previous labs and homework assignments are fair game
for use in your project.
Incremental Development
Now that you are designing and writing a large project from scratch,
the "Incremental Build" model of software
development is more important than ever before. This is a software
development methodology where the model is designed, implemented, and
tested incrementally, adding a little more functionality each time,
until the product is finished. In other words, write a small amount of
code to do one specific task, then run the program to be sure what you
have done so far works. Only when you are satisfied with what you have
so far do you move on to the next part of the program.
In short, implement and test small
parts of your program as you work!
Project PossibilitiesThere are numerous different project
ideas possible. Here are a few examples:
Breakout
In the classic arcade game Breakout a layer of bricks lines the top third of
the screen. A ball travels across the screen, bouncing off the top and
side walls of the screen. When a brick is hit, the ball bounces away
and the brick is destroyed. The player loses a turn when the ball
touches the bottom of the screen. To prevent this from happening, the
player has a movable paddle to bounce the ball upward, keeping it in
play.
In this game, you might want to develop the following three classes:
Paddle
,
Brick
and
Ball
.
Frogger
Another classic arcade game, Frogger
is a game in which the object is to direct frogs to their homes one by
one. To do this, each frog must avoid cars while crossing a busy road
and navigating a river full of hazards.
Classes such as
Frog
,
Car
,
Truck
,
Log
,
Turtle
,
Crocodile
, and others could be used in implementing this game.
Othello
There are several games with two-dimensional arrays as playing areas.
Possibilities include Connect
Four, Reversi (aka, Othello) and Battleship.
Non-GamesFinally, there is no requirement that
your final project be a game. For example, if you are passionate about
bike riding, you might create a program that calculates the optimum
front and rear gears that should be selected on a bicycle, given a
degree of incline and current velocity. Users select the type of
bicycle, 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.
Or maybe there is something you could
write that would be useful for your major or other classes. Anything
that meets the requirements of the project (see above) is fair game.
Other IdeasIf you have other ideas but need a bit
of help with the design, please feel free to talk to your instructor or
a tutor.
Grading Rubric
Your final submission will be graded according to the following rubric.
Submission
Always, always, ALWAYS update the
header comments at the top of your main.cpp file. And if you ever get
stuck, remember that there is LOTS of help
available.
From your Cloud9 workspace, right
click on the FP folder in your workspace tree. Select "Download"
from the pop-up menu. This will download a file called FP.zip to your computer. It
contains all the files of your FP folder. Now in Canvas, go to Assignments > Final Project. Upload your
FP.zip file you just downloaded. And voila! Easy
peasy.
This assignment is due
by Tuesday, December 05, 2017 11:59 PM.
NO LATE ASSIGNMENTS WILL BE ACCEPTED | |||||||||||||||||||||||
Last Updated: 11/05/17 19:51
|