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

Course Description

This course builds upon the introduction to C++ provided in CS 133G.  It provides an in-depth introduction to the semantics of object oriented programming in C++.  You will learn the concepts, skills and tools necessary to analyze problems from an object oriented perspective and develop object oriented solutions.  Most of the programming assignments for the class involve relatively simple games.  The last section of the course will provide you with an introduction to the cross platform SDL (Simple Directmedia Layer) library and will allow you to create graphically based versions of the games developed earlier in the term. 

Learning Outcome

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

Course Content

Technologies
C++	Code::Blocks	SDL	

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

Concepts
Arrays	Dynamic memory allocation	Strings	
Structures	Procedural vs OOP	Information hiding	
Classes and objects	Inheritance	Polymorphism	
Exception handling	Files and streams	Graphical User Interfaces	

Skills
Use Code::Blocks to enter, compile and run C++ programs.	
Effectively use:  arrays, strings, dynamically allocated memory, pointers, classes and objects, file I/O and streams, structured exception handling, SDL.	
Design, implement, test and debug a variety of procedural game programs in C++. 	
Design, implement, test and debug a variety of object oriented game programs in C++.	
Design, implement, test and debug a variety of game programs with a graphical user interface using SDL 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.   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).

Web Sites
moodle.lanecc.edu will be used to host the web site for the course.  The site is designed as a supplement to the in-class section of the course and will be used to disseminate additional information throughout the term.
   
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.  This is free software which can be downloaded from http://www.codeblocks.org

You may use any C++ development environment you choose to complete your lab assignments.  A forum to facilitate discussion of development tools will be available on the moodle web site. 

Assessment Tasks

The learning outcome will be demonstrated by these tasks that progressively build on each other. These assignments are tentative.

Labs
1.	Design, implement and test C++ program that reviews concepts and skills introduced in CS 133 G.
2.	Design, implement and test C++ classes.
3.	Design, implement and test more complex C++ classes.
4.	Design, implement and test C++ programs using arrays
5.	Design, implement and test C++ programs using 2-d arrays. 
6.	Design, implement and test C++ classes that use inheritance.
7.	Design, implement and test an OO program in C++.
8.	Test a program with a graphical user interface using SDL.
9.	Design, implement and test a program with a graphical user interface using SDL.
10.	Design, implement and test an OO program with a graphical user interface using SDL.

Quizzes
·	10 Quizzes
Exams
·	3 Exams

Assessment and Grading

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.

Attendance
Class attendance is not mandatory, but students are responsible for mastering the material covered in class as well as gathering information related to the course that was provided in class.  

Tentative Course Schedule

In Class Learning Activities	Things To Do Outside Class	
Weeks 1 & 2
·	Review concepts and skills from CS 133G 
·	Classes and objects
	
·	Reat Chapter 7 in Gaddis
·	Review your notes from CS133G.
·	Complete Labs 1 & 2.
·	Complete reading quizzes	
Weeks 3 - 5
·	arrays.
·	Multi-dimensional arrays
·	Dynamically allocated arrays.  
·	Introduction to pointers. 	·	Complete Exam 1.
·	Read Chapters 8, 9 & 10
·	Complete Labs 3 -5
·	Complete reading quizzes
	
Weeks 6 & 7 
·	Strings
·	Inheritance	·	Read Chapters  11 & 12
·	Complete Labs 6 & 7.
·	Complete reading quizzes.
·	Complete Exam 2	
Weeks 8 - 10
·	File I/O
·	Introduction to SDL
·	Creating games with SDL	·	Read Chpater 13
·	Complete labs 8 – 10
·	Complete quizzes	
Finals Week
·	Exam 3	

Weekly Activities (tentative)
CRN 32276	Monday	Tuesday night	Wednesday	Sunday night	
CRN 31414	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

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.