Gamut

page under construction

Contents
What is Gamut?
What Can Gamut Do?
How Does Gamut Work?
How Gamut Fared In User Testing
Downloading Gamut

What is Gamut?

Gamut is the functional part of my thesis which involves designing techniques for improving programming-by-demonstration. Gamut lets people build small applications without writing any code. Instead of programming, the developer demonstrates what the application is supposed to do. The system will watch what happens and try to convert those actions into code.

Gamut is not a commercial product so it lacks much of the polish found in professionally developed software. Gamut has been a testbed for the ideas in my thesis. The system uses new kinds of interaction and inferencing techniques which make it possible for the first time to create complete applications using only programming-by-demonstration.


What Can Gamut Do?

Gamut is used to build game applications like Pacman or Tic-Tac-Toe. The kinds of games Gamut can make are similar to board games which is a two-dimenstional game with a background board with pieces on top which players can move. The computer can also be taught to move pieces through demonstration which is how you can get video game-like behaviors.

Though being able to make video games without hacking code is pretty interesting in its own right. This being a thesis, the board game domain provides a number of hard problems that Gamut has to be able to handle. First, board games are interactive. That is to say that the developer is creating something that has to act on its own when the player sees it. The developer will not be available to check the computer's results as the game is played. Thus, the inferencing system has to be pretty good at getting the right behavior down as quickly as possible.

There are two basic kinds of inferencing that Gamut can do that makes it good at learning rules in board games. First, it can form conditional kinds of behavior between arbitrary objects. For instance, let's say one wants to build a Pacman-like monster. Sometimes the monster runs toward Pacman and sometimes it runs away (when Pacman eats a power dot). The thing that determines which way the monster moves has nothing to do with the monster per se. Instead, it depends on an arbitrary piece of application state. In the figure below, the monster's direction depends on an aribitrary toggle switch.

[FIGURE: Pacman decision]

The other kind of inferencing Gamut can handle concerns learning chains of expressions. Consider a board game like Monopoly or Parcheesi where players' throw dice to determine how far their pieces move around the board. Like in the figure below. Consider how one might describe the location where a piece is supposed to move. It would be something like, "the square which is the dice's number of squares away from where the current player's piece started." This description refers to the configuration of the board, the number on the dice, the current player, and other information. Furthermore, each of these items form a chain of expressions where the information from one item is needed to determine the value of the next and so forth. Gamut is unique in that it can create chains of relationships like this of arbitrary length.


How Does Gamut Work?


How Gamut Fared In User Testing



Can I Download Gamut?


Questions or comments? Send mail to Richard McDaniel