Course	Beginning C++ Programming for Games
Course Number	CS 133G, CRN 31446 (meets MW)
	                 CRN 32277 (meets TR)
Credits	4
Instructor	Brian Bird
Office	Building 19, Room 152
Office Hours	2:00 – 3:00 MW, 4:00 - 5:00 TR
Office Phone	463-3024
e-mail	BirdB@lanecc.edu

Course Description

This course provides an introduction to programming using the C++ language in a game development environment. You will be exposed to the concepts and tools involved in C++ software development.  Most of the programming assignments for the class involve relatively simple games.  There are no explicit pre-requisites for the course, but you are expected to be familiar with general computer usage and the Windows environment.

Learning Outcome

The intent of this course is to enable you to write simple programs using proper C++ syntax and semantics, compile those programs, debug them as necessary, and run them.

Course Content

Technologies
C++	Code::Blocks IDE		

Themes and Issues
Software engineering	Algorithm development	C++ syntax	
C++ semantics	Top down development	Object oriented development	

Concepts
Constants, variables and scope	Data types	Program control structures	
Interpreters and compilers	IDEs	Functions	
Parameters	Libraries and linking		
Information hiding	Procedural vs OOP	Classes and objects	

Skills
Use Code::Blocks to enter, compile and run C++ programs.	
Develop, test and debug algorithms using standard control structures. 	
Express algorithms in proper C++ syntax.	
Implement, test and debug a variety of simple game programs in C++.	
Describe concepts, themes and issues orally and in writing.	

Learning Resources

Texts	
Starting Out with C++:  Early Objects by Gaddis, Walters and Muganda is the main text for the course.  It is a good introduction to the beginning programming concept as well syntax of C++.  It is also the text used for CS 233G.  Many of the lab exercises are taken directly from the text.  An electronic copy of the source code for all of the sample programs in the text is available on the cd that came with the text.  These files are also available on the web site for the text book (http://www.aw.com/cssupport).

Simple Program Design:  A Step-by-Step Approach by Leslie Anne Robertson will be used to introduce programming concepts and to practice the development of algorithms – the step by step set of instructions that describe how to accomplish programming tasks.  This is an optional resource for the class.

Web Sites
classes.lanecc.edu will be used to host the web site for the course.  The site is designed to provide you with all of the information that you need about the content and structure of the course and including:  lecture notes, sample files, assignment descriptions and due dates, practice and actual quizzes, and announcements related to the course.
   
Software
The hardware and software required for the course is available to all students in the CIT Main Lab on campus.  You paid a fee when you registered for this course that provides you with unlimited access to CIT lab facilities.  

Code::Blocks will be used as the C++ integrated development environment in class and in the CIT Main Lab.  As a result of a partnership between Microsoft and many educational institutions, including LCC, students may obtain a copy of the Microsoft software used for the class free of charge.  Your instructor will provide you with specific information about “checking out” Microsoft software for educational use during the first week of the term.  Specifically, you may want to get a copy of Visual Studio 2005 if you intend to work on your lab assignments at home.

You may use any C++ development environment you choose to complete your lab assignments.  

Assessment Activities

The learning outcome will be demonstrated by completeing lab assignments that progressively build on each other. Each lab will be assessed both by your peers and by the instructor, but your grade will only be determined by the instructor’s assessment. These are the tentative lab assignments:

1.	Lab 1 – Getting started in C++ and Code::Blocks.  
2.	Lab 2 – Design, implement and test C++ programs using variables and input/output.  
3.	Lab 3 – Design, implement and test algorithms using selection
4.	Lab 4 – Design, implement and test C++ programs using selection.
5.	Lab 5 – Design, implement and test algorithms using repetition.
6.	Lab 6 – Design, implement and test C++ programs using repetition.
7.	Labs 7 and 8 – Design, implement and test C++ programs using functions.
8.	Labs 9 and 10 – Design, implement and test a C++ classes.

In addition, there will be weekly reading quizzes and three exams.

Assessment and Grading

Specific grading criteria will be applied to each of the labs, quizzes, and exams you will be working on in this class. Part of the lab involves peer evaluation. I will provide you with lab evaluation worksheets for each lab. 
The table below summarizes the possible points for each assessment task as well as the course as a whole: 
Assessment Activities 	Points for each 	Number per Term	Total Points 	
Labs & Homework	50	10	500	
Reading Quizzes	20	10	200	
Exams	100	3	300	
 Course Total 	 	 	1000	

Letter grades for the course will be determined by the following percentages: 			 
	-		+	
A	90 - 91	92 – 97	98 - 100	
B	80 - 81	82 – 87	88 - 89	
C	70 – 71	72 – 77	78 - 79	
D	60 - 61	62 – 67	68 - 69	
F	Below 60	

Late Work
·	The grade for labs submitted after the due date will be reduced by 25%.
·	Quizzes and exams cannot be taken after the due date.
·	Exceptions will only be made for severe illness or emergency situations.

Academic Honesty
While students are encouraged to discuss labs and quizzes and to use each other as resources, each student is responsible for his/her own work. In other words you can help each other, but you can’t copy someone else’s work.

Tentative Course Schedule

Weekly Activities (tentative)
CRN 31446	Monday	Tuesday night	Wednesday	Sunday night	
CRN 32277	Tuesday	Wednesday night	Thursday	Sunday night	
In-class activities	Review previous lab
Lecture
Lab time		Review Quiz
Lecture
Lab time		
Homework due
		Quiz due 
Lab evaluation due
Revised lab due		Lab due

Term Schedule (tentative)
In Class Learning Activities	Things To Do Outside Class	
Week 1 
·	Introduction to the course, to C++ 
·	Introduction to Code::Blocks
·	Constants and Variables
	·	Read Gaddis et al chapters:
o	1, Intro to computers and programming
o	2, Intro to C++
·	Chapter 2 quiz
·	Lab 1, first C++ Projects.	
Week 2
·	Data types
·	Machine Representation of data
·	Input and Output	·	Gaddis ch 3, Expressions and Interactivity 
·	Chapter 3 quiz
·	Lab 2, interactivity	
Week 3
·	Algorithm design process
·	Control structures in algorithms:  sequence, selection
	·	Robertson ch 1 - 4
·	Read the lecture notes thoroughly.  Little of the algorithm information is in Gaddis. 
·	Machine Representation of Data Quiz
·	Lab 3, sequence and selection algorithms	
Week 4
·	Control structures in C++, sequence and selection 
·	Exam 1	·	Gaddis ch 4, Making Decisions
·	Chapter 4 quiz
·	Lab 4, Selection in C++
·	Study for the first exam.	
Week 5
·	Control structures in algorithms:  repetition
	·	Robertson ch 5
·	Read the lecture notes thoroughly.  Little of the algorithm information is in Gaddis.
·	Algorithm quiz
·	Lab 5, repetition algorithms	
Week 6
·	Control structures in C++
·	Exam 2	·	Read chapter 5, Looping.
·	Chapter 5 quiz
·	Lab 6, Repetition in C++.
·	Study for the second exam.	
Week 7
·	Functions
·	User defined functions	·	Gaddis ch 6, Functions.
·	Chapter 6a quiz
·	Lab 7, Functions.	
Week 8
·	Parameters, return values and scope	·	Chapter 6b quiz
·	Lab 8, Multi-function programs.	
Week 9
·	Classes and Objects	·	Gaddis ch. 7, Intro to Classes and Objects
·	Chapter 7a quiz
·	Lab 9, Car class.	
Week 10
·	Classes and Objects	·	Lab 10, Triangle class. 
·	Chapter 7b quiz
·	Study for the third exam.	
Finals Week
·	Exam 3

	

Academic Calendar for Winter Term 2009-10
New Year’s Day*				1/1
Term begins					1/4
Last day to receive refund			1/10, midnight 
(see full refund information and refund schedule)
Martin Luther King Jr. holiday*			1/18 (Monday, week 3)
Presidents Day holiday*			2/15 (Monday, week 7)
Last day for schedule changes			2/26
Finals week					3/15-20
Term ends					3/20
Spring break					3/21-28

Disability Services
If you need support or assistance because of a disability, you may be eligible for academic accommodations through Disability Services. For more information, contact Disability Services at 463-5150 (voice) or 463-3079 (TTY), or stop by building 1, room 218.