CSCI 261 - Programming Concepts (C++)Spring 2017 - Final ProjectQuick Links: Blackboard | Canvas | CS @ Mines | Cloud9 | Piazza | zyBooks | 
|||||||||||||||||||||
| | Home | Contact | Syllabus | Assignments | Schedule | Resources | | |||||||||||||||||||||
| 
 
	This Final Project is due by May 02, 2017 11:59pm. 
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 April 7, in class)
	On April 7, a short description of your project is due. You should
	submit your description (on a single 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 April 7 is likely
	to change as you complete your project for the May 2 due date.) 
Your instructor will give you feedback
	on your Project Definition a few days after you submit it (e.g., too
	complex or too simple). 
Requirements - Project Code (due May 2, 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. Our empty SFML project is available for you to use here (Visual Stuod / Cloud9).
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 May 2, 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.
 
In summary, for the Final Project due
	on Tuesday, May 02 follow these specific steps: 
 
	This Final Project is due by May 02, 2017 11:59pm. 
NO LATE ASSIGNMENTS WILL BE ACCEPTED  | |||||||||||||||||||||
| 
 Last Updated: 01/01/70 00:00 
 | 
|||||||||||||||||||||