CSE 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 not open to CSE students without permission of instructor.

Prerequisite: High School Algebra and Trigonometry 

CSE 251 is a second-tier course in the CSE4 "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 CSE4 thematic sequence consists of one of the following introductory computer programming courses...

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

Followed by both of the following courses... 

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

CSE 251 is a course in which you build upon and apply concepts and skills learned in CSE 153, CSE 163 or CSE 174.  You will apply the general problem solving and programming concepts in the context of designing and programming interactive computer-based games.

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/Presentations (1.0) 

Learning Outcomes

1. Demonstrate a practical knowledge of structured programming paradigms including sequence, selection, and repetition and use them to manipulate simple data structures for the purpose of creating an interactive computer game.

1.1. Create, store, and execute a computer program.

1.2. Use variables, arithmetic operators, and simple data structures to manipulate arithmetic values and text for the purpose of solving a specified problem.

1.3. Use basic control structures including sequence, selection, and repetition to solve simple programming problems.

1.4. Write program statements that correctly specify the number and type of arguments necessary to call functions and subroutines.

1.5. Write program statements that instantiate objects and call methods based on a class declaration to manipulate the object in order to achieve desired behaviors.

2. Demonstrate a practical understanding of transformations by using them in a computer program to position, scale, and rotate visual models in 3D space as specified.

2.1. Create an interactive program that displays a 3D scene.

2.2. Create a program that displays an animated 3D scene.

2.3. Specify both relative and absolute transformations.

2.4. Load and position visual objects using translation, rotation, and scale.

2.5. Correctly specify viewing position and direction.

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.

3.1. Identify and specify parent - child relations in a scene graph architecture to achieve a desired result.

3.2. List possible functions of a Game Engine and examine the documentation of a Game Engine to determine its capabilities.

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

3.4. Use a Game Engine API to add digital representations of sounds to an interactive application.

4. Effectively utilize implementation of algorithms for rendering, animation, and shading to implement a computer game.

4.1. Demonstrate an understanding of local lighting models in enough detail to create a 3D scene that displays realistic lighting effects and includes different types of light sources.

4.2. Describe how material properties are used to alter the appearance of a 3D model.

4.3. Create animations using a Game Engine.

4.4. Describe how texture mapping is used to increase surface detail in a 3D model.

5. Work effectively as a member of a team to design and implement a game.

5.1. Brainstorm a design for a computer game and implement it.

5.2. Document the design and communicate it to other members of the team and the class.