Teachers of computer science, like many STEM teachers, desire to find ways to engage students in the craft. How do we make learning computer programming fun? How do we empower students to be creative?
As a computer science graduate myself, I have to confess that we cover some pretty dry material at times. I can always say that I found internal motivation to fight through difficult classes by seeing how those concepts related to creating video games and 3D simulations. This was a small mental trick that worked for me. Can it work for others?
Over the weekend, I discovered a pretty cool paper entitled “Using XNA-GSE game segments to Engage Students in Advanced Computer Science Education.” The author, G. Michael Youngblood a professor at University of North Carolina, shares his experiences of engaging students in the study of artificial intelligence using a technique he calls “game segments.” This work was shared by Microsoft Research at “Microsoft Academic Days on Gaming 2007.” “Game segments” is a project based learning technique where students practice the implementation of various algorithms in AI in the context of a realistic video game scenario. You might think of a game segment as a “fill in the blank” computer science programming activity. The segment has most of the game mechanics implemented. The student can focus on implementing the “brains” of the software and applying a specific model of artificial intelligence. In other words, most of the game context is coded and completed. The student is tasked with understanding, designing, and coding the “computer intelligence” components.
The full paper from Microsoft Research can be found here: ftp://ftp.research.microsoft.com/pub/carlat/N14_Using%20XNA-GSE%20game%20segments%20to%20Engage%20Students.pdf
The author felt that students became engaged in the activity because they had creative freedom to customize their game creations. They were empowered to change the artwork of the game and experiment with various aspects and behaviors in the games. Since all the game segments were designed with Microsoft XNA game studio, students could also enjoy playing their game creations on their Xbox if they desired. I thought it was cool that students would often hold informal competitions among themselves.
Some of the scenarios covered in his class include the following:
- Chat bot: Students practice techniques for creating their own “Siri” like agent that can have a conversation with a player. In this context, the player needs to discover a secret known by a agent in the game. The students got to play with AIML and related algorithms.
- Motion planning: In this scenario, a student needs to implement algorithms so that a character can navigate through an environment, cross a bridge, and capture a prize.
- Adversarial search: This game segment enables students to learn how to implement the search and attack algorithms that you might find in a game like Minecraft. In Minecraft, zombies and spiders come out at night and try to attack players. Students need to learn to use sensors, search and planning algorithms, and get the agent to move intelligently avoiding road blocks.
In the context of his class, the students worked with five game segments. Mr. Youngblood shared some guiding principles he used in constructing the activity.
- “Design Principle 1: The areas where students are to modify, incorporate their code, or examine for debugging should be very clear in the game segment. “
- “Design Principle 2: Allow the student to easily change the cosmetics and/or behavior of the game so they can customize it and take ownership”
- “Design Principle 3: Always leave an element of the base code that the students would like to change but is not required to be changed.”
- “Design Principle 4: Document all of the game segment source code well. It serves as an example student will refer to for additional learning.”
- “Design Principle 5: Keep the game segment simple by testing only one major application of a learned technique at a time with the addition of at most one minor applied technique.”
- “Design Principle 6: The game segment should encourage the desired proper coding style and paradigm (e.g., object-oriented).”
- “Design Principle 7: Design for competitions or diversity to help show off the student’s work in class incorporating it back into the lessons.”
- XNA GAME STUDIO: http://www.microsoft.com/en-us/download/details.aspx?id=23714
- Coding for fun: http://channel9.msdn.com/coding4fun
- Program# – AIML for C#: http://aimlbot.sourceforge.net/
Photo taken from: http://www.flickr.com/photos/trinity-of-one/20562069/sizes/m/in/photostream/