Computer Science (COMP) 369

Practical Game Programming (Revision 2)

COMP 369

View previous revision

Delivery Mode: Individualized study online (with eTextbook)

Credits: 3

Area of Study: Science

Prerequisite: COMP 206, or COMP 306, or COMP 308, or Professor approval.

Faculty: Faculty of Science and Technology

Centre: School of Computing and Information Systems

COMP 369 is not available for challenge.

Check availability

**Note: Students who are concerned about not meeting the prerequisites for this course are encouraged to contact the course coordinator before registering


COMP 369 is designed for students to learn how to develop platform-independent computer games using C/C++ with Allegro, an open-source, cross-platform library which is both powerful and versatile. Allegro can be used on Windows, Linux, and Mac platforms. Although the focus of this course is on practical game programming skills, students will also be exposed to game design, and have the opportunities to learn the basics of game design and practice their game design skills throughout the course.

Learning Outcomes

Upon successful completion of this course, you should be able to:

  • Set up a C/C++ based environment for game development.
  • Explain game design basics and design games with learned principles by following the suggested procedure and phases.
  • Develop computer games using C/C++ and the Allegro library.
  • Write interactive computer games with sound and music.
  • Create sprites and use them in computer games.
  • Install and remove timers in games, program perfect game loops, and properly handle events in computer games.
  • Explain what scrolling is and create and manipulate scrolling backgrounds using tiles and map files.
  • Use data files, multi-threads, and some AI technologies in game development.
  • Develop a plan to market computer games.


COMP 369 consists of the following eight units:

Unit 1. Introduction to Game Programming

  • Unit 1 covers chapters 1, 2, and 3 of the text. It introduces the world of game programming. After successfully completing this unit, students should have set up a programming environment—have chosen an IDE and a version of Allegro game library and have both properly installed—and should be ready to program in C or C++, with the Allegro game programming library.

Unit 2. Get Started with Game Programming

  • Unit 2 covers chapters 4, 5, and 6 of the text. In this unit, students learn to program what is probably their first computer game; learn how to interact with players through keyboard and mouse; and learn how to play sound and music in computer games. After successfully completing this unit, students will be able to develop interactive computer games with sound and music.

Unit 3. Game Design Basics

  • Unit 3 covers chapter 17 of the text. From this unit, students will learn the importance of game design, including the basics of game design, phases of game development, the types of game design, and requirements for game design and design documents. After successfully completing this unit, students should be able to create a game design and write up a proper game design document by following the game design basics and phases.

Unit 4. Programming Sprite in Games

  • Unit 4 covers chapters 7, 8, 9, and 10 of the text, and it is all about sprite programming. From this unit, students learn how to handle bitmaps and how to use various blitting functions to manipulate bitmaps. After successfully completing this unit, students will be able to put live figures into games, and that is the most wanted skill in game programming and development.

Unit 5. Timing in games

  • Unit 5 covers chapter 11 of the text, and it is about how to put all the game actions in a perfect game loop. As we know, many games can be played for a long time. Fortunately, game developers do not need to write that much more game code to keep the game running. The trick is, as all computer programmers would know, that programmers can put a number of game actions/codes in a loop and set up conditions for that loop to terminate or to be terminated by the player. After successfully completing this unit, students will be able to use timers, and interrupt handlers and timed game loops in game development. 

Unit 6. Scrolling backgrounds

  • Unit 6 covers chapters 12, 13, 14, 15, and 16 of the text, and it deals with creating and handling backgrounds in computer games. After successfully completing this unit, students will be able to program tile-based backgrounds; use Mappy to create and edit tiles, levels and maps; use native Mappy files in their games; and program vertical scrolling arcade games and horizontal scrolling platform games.

Unit 7. Using data files in game programming

  • Unit 7 covers chapters 18 and 19 of the text. Students learn how to use Allegro datafiles to store game resources, and how to use Allegro datafiles and FLI animation files in games and game development.

Unit 8. Advanced topics for game programming

  • Unit 8 covers chapters 20, 21, and 22 of the text. It touches on some Artificial Intelligence concepts and technologies, and their uses in computer games. It also teaches the basics of multi-threaded programming, a technique that can be used to enhance the performance of computer games by utilizing the power of multi-core processors that most modern computers have today. In this unit, students will also learn the fundamentals of how to market a computer game they may have developed during the study of this course, or may soon develop in their profession or as a hobby. 


To receive credit for COMP 369, you must achieve a course composite grade of at least D (50 percent), consisting of a grade of at least 50 percent on the final examination and a grade of at least 50 percent on each assignment. The weighting of the composite grade is as follows:

Activity Weighting
Assignment 1 (Unit 1 - 3) 15%
Assignment 2 (Unit 1 - 5) 20%
Assignment 3 (Unit 1 - 6) 20%
Assignment 4 (Unit 1 - 8) 25%
Final Exam 20%
Total 100%

The final examination for this course must be taken online with an AU-approved exam invigilator at an approved invigilation centre. It is your responsibility to ensure your chosen invigilation centre can accommodate online exams. For a list of invigilators who can accommodate online exams, visit the Exam Invigilation Network.

To learn more about assignments and examinations, please refer to Athabasca University's online Calendar.

Course Materials


Registration in this course includes an electronic textbook. For more information on electronic textbooks, please refer to our eText Initiative site.

Harbour, J.S. (2006). Game Programming All in One (3rd ed.), ISBN-10: 1598632892 ISBN-13: 978-1598632897, Course Technology PTR

A print version of the eText may be available for purchase from the publisher through a direct-to-student link provided on the course website; you can also acquire the textbook on your own if you wish.

Other Resources

All other materials needed to complete the course are in the online course site.

Athabasca University reserves the right to amend course outlines occasionally and without notice. Courses offered by other delivery methods may vary from their individualized-study counterparts.

Opened in Revision 2, June 2, 2016.

View previous revision