New Course: Software Development Using Games (CS7580)

Context: Game centric problem solving is a recent and promising field. Recently I gave a talk on this topic at two leading European Research Labs (with video): ABB Research and IBM Research talk . A new term for engaging many people in solving problems was recently introduced: Crowdsourcing.

From Wikipedia: Crowdsourcing is a neologism for the act of taking tasks traditionally performed by an employee or contractor, and outsourcing them to a group of people or community, through an "open call" to a large group of people (a crowd) asking for contributions. For example, the public may be invited to develop a new technology.

We investigate techniques to design games that enhance the creative problem solving capabilities of software developers (we call this Scientific Crowdsourcing). We are interested in computer science problems domains like translation, optimization and decision problems from the requirements to the implementation level.

An important game that supports Crowdsourcing is the Scientific Community Game (SCG) consisting of virtual scientists trying to improve their reputation. The virtual scientists propose and oppose hypotheses and they provide hard problems to each other and most importantly they solve problems posed by others hopefully satisfying their own hypotheses. The hypotheses are about subsets of the problem domains.

Because computer science is a science, the Scientific Community Game is easily applied to computer science problem domains. Software developers make predictions about the behavior of their programs. A hypothesis consists of a niche (a subset of problems) and a prediction about how the software will behave. Ideally, there is a proof that a prediction is correct.

Course Objectives

After completing the course, the student will master the following objectives:

Tournament Design for Crowdsourcing

We give the students an "edge" in designing new games for solving problems by specializing the generic Scientific Community Game. Designing Tournaments for computer science problem domains. The tournaments are run on the web as a world-wide competition to develop the best software for the given problem domain. This involves defining the hypothesis language which includes the niche and prediction languages that satisfies the needs of the company posing the problem domain. This includes knowledge about suitable security policies that deter participants from cheating.

Tournament Software Design and Implementation

Design, implementation and operation of tournament software. How to design and implement software that drives tournaments. Security policies in tournaments.

Virtual Scientist Design and Implementation

How to design and implement winning agents (software implementations of virtual scientists).

Software Development Technology that supports flexibility

Between tournaments, the agents undergo frequent changes. Students will learn about Functional Adaptive Programming that supports flexibility. My Textbook on Adaptive Software Development explains the ideas behind adaptive programming. The paper Weaving Generic Programming and Traversal Performance to be presented at AOSD 2010 in France, introduces the currently best implementation of the adaptive programming ideas.

Target Audience

The course is intended for (a) Master students who want to (1) improve their software development skills (2) learn how to engage the creativity of a large number of programmers using automated tournament evaluation of the quality of the programs (3) learn about flexible programming technology. (b) PhD students who want to do research in (1) game design for crowdsourcing, including proving formal properties of the games. (2) new software development technology based on games.

Software Development Using Games (Course Description) ( (