Software Development Using Games (CS7580)
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 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
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.
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.
Textbook on Adaptive Software Development
explains the ideas behind adaptive programming.
Weaving Generic Programming and Traversal Performance
to be presented at AOSD 2010 in France, introduces the currently best
implementation of the adaptive programming ideas.
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)