We will focus on game-based technology to develop problem solving software. The history of this approach goes back to the Renaissance when Italian mathematicians tested their skills for solving problems in competitions. We will use various specializations of the Scientific Community Game (SCG) where virtual scientists build their reputation on (1) how well they solve problems, (2) how well they provide hard problems to other virtual scientists and (3) how well they predict their performance in a niche of problems. Misjudging their performance leads to reputation loss. Our implementation of SCG is web-based where the virtual scientists live on the web controlled by an administrator that checks the SCG rules that are similar to the rules of a real scientific community.
The course covers benchmark design, dynamic benchmarks, innovation fostered and measured by the game, software development processes based on games, knowledge maintenance through games, and software testing through games. The implementation of the virtual scientists needs to be easily adaptable. Therefore we cover programming techniques that facilitate adaptability: Aspect-Oriented Programming and Adaptive Programming. We will study algorithmic innovation through the SCG game in optimizing translations. Examples are: translating regular expressions into DFAs, translating programs into multi-core programs.
The course will also cover a broader incarnation of SCG where people play the role of virtual scientists. This version of the game could be implemented using Google Wave and it fosters innovation through competition and collaboration in a wide area.
More information on SCG is available: SCG Home Page.
Prerequisite: Program Design Paradigm CS 5010