New Building Website

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...

  • CSA 153, Introduction to C/C++ Programming
  • CSA 163, Introduction to Computer Concepts and Programming
  • CSA 174, Fundamentals of Programming and Problem Solving

Followed by both of the following courses...

  • CSA 251, Introduction to Game Programming
  • CSA 252, Web Application Programming

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.
CSA 251.1.1   Create, store, and execute a computer program.
CSA 251.1.2   Use variables, arithmetic operators, and simple data structures to manipulate arithmetic values and text for the purpose of solving a specified problem.
CSA 251.1.3   Use basic control structures including sequence, selection, and repetition to solve simple programming problems.
CSA 251.1.4   Write program statements that call functions and subroutines correctly specifying the number and type of arguments.
CSA 251.1.5   Write program statements that instantiate objects and call methods defined in the class definition of the object to achieve desired behaviors.

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.
CSA 251.2.1   Create an interactive program that displays a 3D scene.
CSA 251.2.2   Create a program that displays an animated 3D scene.
CSA 251.2.3   Specify both relative and absolute transformations.
CSA 251.2.4   Load and position visual objects using translation, rotation, and scale.
CSA 251.2.5   Correctly specify viewing position and direction

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.
CSA 251.3.1   List possible functions of a Game Engine and examine the documentation of a Game Engine to determine its capabilities.
CSA 251.3.2   Correctly call methods and functions defined in Game Engine API (Applications Programmer Interface) and write simple code that allows a user to interact with a 3D scene.
CSA 251.3.3   Specify key frames and select appropriate interpolators in order to create parallel and sequential animations using a Game Engine.
CSA 251.3.4   Use a Game Engine API to add digital representations of sounds to and interactive application

T,E

CSA 251.4: Understand and utilize basic algorithms for rendering, animation, and shading to implement a computer game.
CSA 251.4.1   Demonstrate an understanding of the Phong lighting model in enough detail to allow them to create a 3D scene that displays realistic lighting effects and includes several different types of light sources.
CSA 251.4.2   Describe how software modeling tools are used to manipulate meshes and specify material properties for the purpose of creating a digital model that can be loaded by game engine and used as part of a 3D scene.
CSA 251.4.3   Describe how texture mapping how texture mapping is used to increase surface detail in a 3D model

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)