CPSC 440 Game Programming
From MWCSWiki
UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY
Click Here for an Easy to Read Version
NEW COURSE PROPOSAL
CPSC 440 Game Programming
I. Course History
A. Has this course been taught as a "Topics" or Experimental Course"? If so, list previous title and number. (NOTE: Under current guidelines, courses do not have to be taught on an "experimental" basis before being approved.) Yes, CPSC 470 R Game Programming
B. What were enrollments in all previous offerings? 15
C. When was the course taught? Spring 2006
II. Catalogue Description
A. Department/discipline and proposed number.
· CPSC 440 (Betty Bradshaw has approved the course number)
B. Brief description of course content (include a syllabus).
· Student will design, develop, and implement computer games that involve real-time, event-driven, and multimedia programming techniques. Students learn the history of computer games and the elements of video game design and architecture.
C. Prerequisites.
· CPSC 230
D. Number of credits proposed.
· 3 Credits.
III. Relevance and Importance of the course:
A. To department/discipline offerings.
1. What is the reason for this course proposal (i.e., how does it relate to other courses in the department's curriculum)?
Experience tells us that many students are keenly interested in videogames. If truth be told, videogames are the initial draw to technology for a number of students in the first place. Advances in hardware and software have made game programming accessible to virtually anyone, including teenagers, with even modest programming skills [8]. In writing the computer programs for video games, students use considerable amounts of computer science foundation skills. However these skills alone are not enough to create video games.
Game programming is about problem identification and problem solving, which is the foundation of computer science. CPSC 220 Computer Science I and CPSC 230 Computer Science II, teaches problem solving using console based programming. The game programming course would enhance problem solving techniques but using interactive graphics programs as a means to facilitate learning.
In addition to problem solving and programming, game programming is about social responsibility. Many games that are available in today’s society include violence, sex, and drugs and this course would educate our students to create games that entertain their audience while maintaining socially responsiblity. In CPSC 302, Computer Ethics covers social responsibility in the computer science field as a whole but students are limited in their discussion about game programming and social responsibility. The game programming course would allow the department to expand our investigation into computer ethics surrounding the gaming industry. CPSC 302, Computer Ethics, is not a prerequisite to CPSC 440, Game Programming. Both courses are electives and a student a may not have the opportunity to take both classes.
Finally, game programming is about graphics. In CPSC 444, 3D Computer Graphics, the class discusses three dimensional modeling involving the use of light, color and transformation. CPSC 444 introduces graphics but not game development which uses graphics, texture mapping, artificial intelligence and sound. CPSC 440, game programming would introduce the graphics and all the components necessary to program games. CPSC 444 is also an elective and students may not have the ability to take both classes. Each class uses a different graphics application program interface, currently CPSC 444, 3D Computer Graphics uses OpenGL while CPSC 440, will use Allegro.
The game programming courses helps students extend their computer science foundation skills and investigate the specialty skills that are required in game programming (graphics, sound, artificial intelligence and social responsibility). While CPSC 302, Computer Ethics, and CPSC 444, 3D Computer Graphics, have some features that are discussed in CPSC 440, Game Programming they do not cover the foundation of Game Development. Since game programming classes have gained acceptance in academia (see, for example, Feldman [5], Moser [7], Adams [1], Faltin [4], Jones [6], Becker[3] , Alphonce and Ventura [2], and Sindre, Line, and Valv˚ag [9]) our department would be in line with some of the top universities currently offering game programming courses.
[1] Adams, J.C. Chance-It: An object-oriented capstone project for CS-1. In Proceedings of the 29th SIGCSE Technical Symposium on Computer Science Education, pages 10–14. ACM Press, 1998.
[2] Alphonce, C. and Ventura, P. Object orientation in CS1-CS2 by design. In Proceedings of the 7th Annual Conference on Innovation and Technology in Computer Science Education, pages 70–74. ACM Press, 2002.
[3] Becker, K. Teaching with games: The minesweeper and asteroids experience. The Journal of Computing in Small Colleges, 17(2):23–33, 2001.
[4] Faltin, N. Designing courseware on algorithms for active learning with virtual board games. In Proceedings of the 4th Annual Conference on Innovation and Technology in Computer Science Education, pages 135–138. ACM Press, 1999.
[5] Feldman, T. J. and Zelenski, J. D. The quest for excellence in designing CS1/CS2 assignments. In Proceedings of the 27th SIGCSE Technical Symposium on Computer Science Education, pages 319–323. ACM Press, 1996.
[6] Jones, R. M. Design and implementation of computer games: A capstone course for undergraduate computer science education. In Proceedings of the 31st SIGCSE Technical Symposium on Computer Science Education, pages 260–264. ACM Press, 2000.
[7] Moser, R. A fantasy adventure game as a learning environment: Why learning to program is so difficult and what can be done about it. In Proceedings of the 2nd Conference on Integrating Technology into Computer Science Education, pages 114–116. ACM Press, 1997.
[8] Sethi, M., Game Programming for Teens, Premier (2003)
[9] Sindre, G., Line, S., and Valv˚ag, O. V. Positive experiences with an open project assignment in an introductory programming course. In Proceedings of the 25th International Conference on Software Engineering, pages 608–613. ACM Press, 2003.
2. If this course is approved, which course(s), if any, would be deleted from your current offerings?
· NONE
3. Will this course:
a) Be required for the major? NO
b) Be an elective in the major? YES
c) Not count in the major? Students may count this toward major requirements
B. To the Curriculum of the College:
2. How is this course related to the courses in other departments?
· NA
3. Why is the proposing department the appropriate one to offer the course?
· The Computer Science department has the academic and practical skills that are needed to teach Game Programming. One must understand mathematics and computer science programming techniques.
IV. Resource Requirements
A. Does the library have the materials needed to support the course (provide a list of material needed for the course that the library does not have on hand)? YES
B. Will this course require staff time from departments other than your own (Audio Visual, Library, etc.)? NO
C. Does the College have the faculty to teach the course (who, and how will this affect their current teaching duties)?
· YES, the computer science faculty and this course will not affect our current teaching duties. The computer science department rotates electives to enable diverse topics to be offered. The students need one 400-level electives and this course would be offered on a rotating basis.
D. Does the College have the equipment, facilities, etc., currently on hand, that will be needed to teach the course, and, if not, tell how and where you will obtain these resources)? YES
V. Effective Date
· Fall of 2007
VI. Each proposal must be signed by the department chair and dated.
NAME ____________________________________________
Signature___________________________________________ date___________________________
VII. Syllabus
CPSC 440 Game Programming
Spring 2006
Tuesday and Thursday 2:00 – 3:15
Professor Jennifer A. Polack-Wahl
Contact Information:
* Phone: 540-654-1318, * Email polack@umw.edu, * Office: Trinkle B18
Office Hours:
* Monday and Wednesday 12:00 – 1:00, * Tuesday and Thursday 12:30 – 2:00, * Others by appointment
Course Objectives
1. Learn fundamental foundations of the field of Game Programming
2. Sharpen C++ programming skills while implementing concepts in the development of gaming applications
3. Sharpen presentation skills by giving formal presentations of individually designed and implemented games
4. Learn about social responsibility when programming games
Required Text
· Game Programming All in One (2nd Edition) by Jonathan Harbour (Course Technology)
Grading
Grading Criteria
Weights
Programming Assignments
45%
Presentation
15%
Exams
50%
Final letter grades will be determined according to the following department grading scale. I reserve the right to lower these standards, but will not raise them.
A 92-100%
A- 89-91%
B+ 87-88%
B 83-86%
B- 79-82%
C+ 77-78%
C 73-76%
C- 69-72%
D+ 67-68%
D 60-68%
F below 60%
Responsibilities
· Your attendance is expected at each class meeting.
· You are responsible for the content of reading assignments, lectures, in-class activities and handouts.
· You are responsible for arriving to class on time to hear announcements and schedule changes.
· If you must miss a class or arrive late, check with me or another student to obtain information that you missed.
· In addition to attending class, you are responsible for checking your campus email for updates or modifications to assignments, lectures, etc.
Programming Projects
· There will be approximately 5 programming projects assigned during the semester. Each programming project should be completed without assistance with other students.
· Please refer to the attached honor code statement for details of the honor code’s application to this course.
· Each submitted assignment must compile and run on dev-c paprika. Please compile and run your program on this compiler prior to submission. Programs that do not compile will not be accepted for grading.
· In order to pass this course, all programming assignments must be submitted with an average of 60% or higher.
Examinations
· There will be two in class exams.
· NO makeup tests will be given except in the case of an unavoidable absence that can be verified as legitimate through the Office of Academic Services.
· In the case of a planned absence, alternate exam arrangements must be made in advance by notifying the instructor.
Final Exam
· Tuesday, May 2 from 3:30-6:00pm
· If you have 3 scheduled exams on this date, you may petition to have your exam time moved. Please contact me if you need to make arrangements.
Weekly Schedule (Tentative, subject to change without notice)
Week(s) Chapter TOPICS
1 Overview
What are games? What it takes to make a game? Game Types.
2 Starting Points, Design Principles, Video Game Software
3 Getting Started with Dev-C++ and Allegro
Basic 2D Graphics Programming with Allegro
4 Writing Your First Allegro Game
5 Programming the Keyboard, Mouse, and Joystick
6 Introduction to Game Design
7 Basic Bitmap Handling
8 Basic Sprite Programming
9 Advanced Sprite Programming (Animation, Collision Detection)
10 Programming Tile-Based Backgrounds with Scrolling
11 Timers, Interrupt Handlers, and Multi-Threading
12 Creating a Game World: Editing Tiles and Levels
13 Vertical Scrolling Arcade Games
14 Horizontal Scrolling Platform Games
15 Mastering the Audible Realm
16 Using Data files to Store Game Resources
17 Playing FLIC Movies
18 Introduction to Artificial Intelligence

