A case study approach for teaching design patterns through computer game programming: tutorial presentation
Paul Gestwicki
Abstract
Paul Gestwicki
Abstract
This workshop presents an approach for teaching design patterns through computer game programming. In the workshop, we will begin by discussing the fundamental aspects of game engine software, including rendering models, animation techniques, and collision processing. Then we will explore how design patterns can be applied to manage the complexity of game software development. This case study approach has been successfully used with undergraduate students ranging from sophomore to senior standing. Among these students, none had any formal introduction to game programming, and only one had prior exposure to design patterns. A study conducted eight months after the students completed the course found that, although none of the students were developing games, all of them were using design patterns. These results suggest that our approach positively impacts students' learning; unfortunately, our sample size was too small for statistic significance. The specific case study we will use is EEClone, a simple arcade-style computer game that was designed to demonstrate design patterns for object-oriented programming. The specific patterns reified in EEClone include the State, Facade, Observer, Strategy, Singleton, and Visitor patterns. It is important to note that the design patterns are not forced into this context: they emerge from a disciplined software design process. They complement the domain-specific concepts such as the main game loop, active rendering, sprite animation, collision processing, controller management, and audio playback. The pedagogic motivation and results of this approach have recently been published in the Journal on Educational Resources in Computing [1]. This workshop provides an interactive forum for educators to learn about our approach and its application in the classroom.
A significance statement is not available in the OpenAlex record.
A contribution statement is not available in the OpenAlex record.
Method details are not available in the OpenAlex metadata.
Findings are not separately available in the OpenAlex metadata.
Limitations are not available in the OpenAlex metadata.
Application details are not available in the OpenAlex metadata.
This workshop presents an approach for teaching design patterns through computer game programming. In the workshop, we will begin by discussing the fundamental aspects of game engine software, including rendering models, animation techniques, and collision processing. Then we will explore how design patterns can be applied to manage the complexity of game software development. This case study approach has been successfully used with undergraduate students ranging from sophomore to senior standing. Among these students, none had any formal introduction to game programming, and only one had prior exposure to design patterns. A study conducted eight months after the students completed the course found that, although none of the students were developing games, all of them were using design patterns. These results suggest that our approach positively impacts students' learning; unfortunately, our sample size was too small for statistic significance. The specific case study we will use is EEClone, a simple arcade-style computer game that was designed to demonstrate design patterns for object-oriented programming. The specific patterns reified in EEClone include the State, Facade, Observer, Strategy, Singleton, and Visitor patterns. It is important to note that the design patterns are not forced into this context: they emerge from a disciplined software design process. They complement the domain-specific concepts such as the main game loop, active rendering, sprite animation, collision processing, controller management, and audio playback. The pedagogic motivation and results of this approach have recently been published in the Journal on Educational Resources in Computing [1]. This workshop provides an interactive forum for educators to learn about our approach and its application in the classroom.
Key concepts: Computer science, Game design, Rendering (computer graphics), Animation, Video game development, Game programming, Multimedia, Game Developer