CS 76A - Game Programming I


Explore the algorithms, data structure, and techniques used to program computer video games. Emphasis on arcade-style video games (new and classic) written in Java. Topics include 2D animation, sprites, interaction, music, and sound. Underlying issues include graphical user interface programming, multi-threaded applications, realtime programming, use of sophisticated APIs, and societal impacts of computer gaming.


Completion of CS 12 or equivalent.
Advisory: Completion of or concurrent enrollment in CS 13 or equivalent.

Course Outcomes

  1. Design a storyboard for a computer game.
  2. Design and implement graphically-oriented computer programs based on written requirements and specifications.
  3. Design and implement correct algorithms for detecting the collision between two objects on screen.
  4. Implement correct algorithms for simulating basic physical phenomenon: falling, bouncing, reflection, and collision.
  5. Utilize object-oriented programming techniques (inheritance, extension, and the strategy pattern) to encapsulate game behavior.
  6. Design and implement correct algorithms for directing on-screen animations, characters, and sounds in response to user input, such as keypresses and mouse clicks.
  7. Design and implement correct algorithms for minimizing screen flicker and tearing.
  8. Research and utilize third-party frameworks and Application Programming Interfaces to aid the programmer in developing computer games.
  9. Design and implement correct algorithms that utilize threads to permit concurrent on-screen actions.
  10. Evaluate game designs for user interface issues.
  11. Evaluate game designs for gender and age issues.
  12. Write a game design document at least five pages long that includes industry-accepted sections on game play, user experience, sample graphics, and flow.
  13. Design and implement a complete 2D video game incorporating the following components: scoring, increasing difficulty levels, animation, sound effects, winnability (must be winnable), and user interaction.


Bill Hooper


This course is offered fall semesters in a classroom setting.