This chapter introduces an innovative pedagogical method for teaching object-oriented programming (OOP) and component-oriented programming (COP) via gaming. Going through the evolution of the three-layer gaming framework, we clearly illustrate that gaming covers almost all core features of OOP and COP technologies. Teaching OOP and COP technologies via game development not only engages students’ efforts, but also opens an opportunity for involving students with industry-level projects and enhancing students’ ability to brainstorm and solve real-world problems. Furthermore, gaming may play an important role in developing other applications, especially those that feature visualization and animation.
The game industry is growing rapidly. “The worldwide game industry reached $33.5 billion in size in 2005, with expected growth to $58.4 billion by 2007, a near doubling in size in a two-year period.” The hiring requirements at a typical game company are something on the order of 65% computer scientists, 30% artists, and 5% designers. In addition, government and non-game-industry corporations for the new area of serious games are also growing (Zyda, 2006). “Game-play has begun to surpass television viewing among some segments of the population. Video game development budgets are already the size of motion picture development budgets, on the order of $20 million to $100 million, with expected revenue for a hit game reaching from $250 million to more than $1 billion” (Zyda, 2007).
We would expect these data to show that the demand for computer scientists is increasing. However, internationally, computer science has experienced a 70% decrease in undergraduate enrollments since 2000 (Zyda, 2006). “Don’t just play games, create them!” has become an attractive and interesting innovation in computer science curriculum. Several universities have created game degrees, while a number of other universities have set up game tracks and/or courses. Actually teaching game development is valuable not only because students and the young generation are interested in games, but also because gaming itself has the potential to revitalize and increase interest in computer science (Zyda, 2006). First of all, games have a unique role in education. Games “do all of the things that the learning scientists told us worked well” (Schollmeyer, 2007). Games support the following effective learning paradigms identified by learning science: experiential learning (“If you do it, you learn it”); inquiry-based learning (“What happens when I do this?”); self-efficacy (“If you believe you can do it, you will try longer/harder, and you will succeed more often than you would otherwise”); goal setting (“You learn more if you are working toward a well-defined goal”); and cooperation (team learning) (Mayo, 2007). Secondly, games are the integration of humanity, mathematics, physics, arts, artificial intelligence, graphics, visualization, animation, sounds, images, programming, and so on. Gaming itself is becoming a science (Zyda, 2007). Consequently, teaching game developments will promote the further study of all sciences, especially mathematics and physics, programming skills, and problem-solving abilities.
Here, we are going to concentrate on the discussion of teaching programming knowledge and skills. The traditional way of teaching programming is going over one chapter for covering one topic, such as class, object, inheritance, polymorphism, and so on. Specifically made programming exercises are used to demonstrate and explain the individual concept. Unfortunately, this traditional approach misses the connections among the different topics, and students fail to see opportunities to put these technologies together to solve a real-world problem. The drawbacks of this pedagogical method often appear on students’ evaluations, such as “The program didn’t do anything cool” (only see some text outputs) or “no idea what it was doing” (change programs do not affect the output) (Phelps, Bierre, & Parks, 2003), due to the fact that students cannot see the effects of their programs intuitively. Games are based on graphics, visualization, and animation. Students can easily see the cause-and-effect relationship between their programs and the results in the format of graphics and animation. In addition, visualization and animation will further catch their attention and encourage their interests.
This idea has been demonstrated by many famous projects, such as “Logo,” “StarLOGO,” “Karel,” “Programmable Brick,” “Lego RCX Brick,” “Alice,” “MUPPETS,” and so on (Phelps et al., 2003; Bierre & Phelps, 2004). These excellent projects mainly create a 3D virtual environment for students to control a robot or a set of characters to visualize the programs’ effects, to extend and practice the programming skills, and to engage students’ efforts.
Key Terms in this Chapter
Gaming: Refers to all processes of designing and implementing games and all technologies that can be applied for developing games.
Object-Oriented Programming (OOP): Involves programming using objects. An object encapsulates attributes (data) and activities (operations) in a single entity so that many techniques, such as inheritance, abstract, interface, polymorphism, and so on, can be applied to increase the software reusability and maintainability.
Software Framework: Typically a semi-finished software architecture for an application domain that can be adapted to the needs and requirements of a concrete application in the domain. Software frameworks consist of frozen spots and hot spots. On the one hand, frozen spots define the overall architecture of a software system, that is to say its basic components and the relationships between them. On the other hand, hot spots represent those parts where the programmers using the framework add their own code to add the functionality specific to their own project.
Software Reusability: Software exits in different forms throughout the software engineering process. The requirements specification, the architectural design, and the source code are all software in different formats. Software reusability includes the reuse of any software artifacts in various formats. The most intuitive reuse is in the reality of “plug-and-play” just like the hardware counterpart.
Game Genres: Games have a variety of different kinds including action games, role-playing games, adventure games, strategy games, simulation games, sport games, fighting games, casual games, educational games, puzzle games, online games, and the like.
Software Maintainability: Includes modifiability and adaptability. Software should be easily modified, extended, and adapted for fixing errors and for satisfying new needs, new requirements, and new environment.
UML Diagram (Simplified UML Diagram): UML stands for Unified Modeling Language, which is the standard object modeling language. As a modeling language, it reduces everything to the essence of a program. As a diagram, it is a graphical design notation for communication and understanding. Formally, the term UML diagram includes activity diagram, class diagram, collaboration diagram, component diagram, deployment diagram, sequence diagram, state diagram, and use case diagram. This chapter used an informal term “simplified UML diagram” to indicate that the diagram contains class diagram with sequence diagram for saving space.
Component-Oriented Programming (COP): Enables programs to be constructed from pre-built software components, which are reusable, self-contained entities. These components should follow certain pre-defined standards, including interface, connections, versioning, and deployment to make themselves ready to use whatever from wherever.