CSA 251 Introduction to Game Programming (3 credits)
Catalog description:
Introduction to computer programming techniques used in games and visual simulations. Simple data and control structures, mathematical foundations, transformations, rendering algorithms, and interfaces. This course is designed for non Computer Science Majors.
Prerequisite: High School Algebra and Trigonometry
Course Objectives:
At the end of the course, the student will:
- Use basic programming control and data structures.
- Utilize homogenous transformations to position, scale, and rotate visual models in 3D space.
- Use a simple game engine to create a computer game.
- Understand and utilize basic techniques for rendering, animation, and shading.
- Understand basic physics principles used in computer games
- Build a visual scene using a scene graph architecture.
CSA 251 is a second-tier course in the CSA4 "Web and Game Applications" thematic sequence. Given the prevalence of computing devices, it is important that we understand what computers do and how they do it. The web game applications thematic sequence is designed to provide students with an understanding of how computer software is created and designed and how it functions to make possible popular applications such as computer games and the World Wide Web. Courses in the sequence provide an introduction to fundamental programming concepts. These concepts are applied to create computer games and web applications. The CSA4 thematic sequence consists of one of the following introductory computer programming courses...
Followed by both of the following courses...
CSA 251 is a course in which you build upon and apply concepts and skills learned in CSA 153, CSA 163 or CSA 174. You will apply the general problem solving and programming concepts in the context of designing and programming interactive computer-based games. |
Learning Outcomes:
Below are the learning outcomes for this course. Miami Plan foundation courses and thematic sequence courses address some or all of the Four Principles of Liberal Education: Thinking Critically, Understanding Contexts, Engaging with Other Learners, and Reflecting and Acting. These principles are not simply additional "topics" that are covered during the course. Rather, they are perspectives and ways of reasoning that are essential to all the content of the course. Learning outcomes that address these principles are indicated in the table. Liberal Education Principals (LEP) Key: T=Thinking Critically, U=Understanding Contexts, E=Engaging with Other Learners
Learning Outcomes: | LEP |
CSA 251.1: Demonstrate a practical knowledge of structured programming paradigms including sequence, selection, and repetition. They will be capable of using these control structures to manipulate simple data structures for the purpose of creating and interactive computer game. | T |
CSA 251.2: Demonstrate a practical understanding of homogenous transformations by using them in a computer program to position, scale, and rotate visual models in 3D space as specified. | T,U |
CSA 251.3: Demonstrate a basic understanding of the functions of a Scene Graph based Game Engines by using them to implement computer games of varying complexity. | T,E |
CSA 251.4: Understand and utilize basic algorithms for rendering, animation, and shading to implement a computer game. | T,U |
Required Topics (approximate week allocation):
Required topics and approximate weeks allocated are as follows:
- Introduction (1.0)
- Course overview
- Files and folders
- Creating, storing, and executing a computer program
- Variables, data structures, and arithmetic operators (1.0)
- Storing integer and floating point scalar quantities
- Strings
- Arrays and vectors
- Arithmetic operations
- Control Structures (1.0)
- Sequence
- Conditional execution
- Repetition
- Procedural Programming (1.0)
- Functions and subroutines
- Arguments
- Scope and lifetime
- Overloaded functions
- Object Oriented Programming (1.0)
- Software objects
- Object behaviors
- Classes
- Game Engine Basics (2.0)
- Scene Graph Architectures
- Object, world, and eye coordinates
- Loading and positioning visual objects
- Translate, rotate, and scale
- Absolute and relative transformations
- Camera and viewpoint positioning
- User Interaction (1.0)
- Basic Input and output
- Event driven programming
- Callbacks
- Dialog Boxes and Menus
- Basic Game Physics (1.0)
- Newton’s laws of motion
- Force, acceleration, and velocity vectors
- Particle physics
- Collision Detection
- Real-time Lighting (1.0)
- Real-time lighting models
- Positional and directional light sources
- Spot lights
- Shading and Modeling (1.0)
- Meshes
- Materials
- Texture mapping
- Modeling tools
- Animation (1.0)
- Key framing
- Interpolators
- Parallel and sequential animations
- Sound (1.0)
- Digital representation of sound
- Background sounds
- Spatialized sounds
- Graphics Pipeline (1.0)
- Object space algorithms
- Image space algorithms
- Double buffering
- Frame rate
- Exams/Reviews (1.0)
