Building Applications Using Only Demonstration ABSTRACT By combining the strengths of multiple interaction techniques and inferencing algorithms, Gamut can infer behaviors from examples that previously required a developer to annotate or otherwise modify code by hand. Gamut is a programming- by-demonstration (PBD) tool for building whole applications. It revises code automatically when new examples are demonstrated using a recursive procedure that efficiently scans for the differences between a new example and the original behavior. Differences that cannot be resolved by generating a suitable description are handled by another AI algorithm, decision tree learning, providing a significantly greater ability to infer complex relationships. Gamut’s interaction techniques facilitate demonstrating many examples quickly and allow the user to give the system hints that show relationships that would be too time consuming to discover by search alone. Altogether, the concepts combined in Gamut will allow nonprogrammers to build software they never could before.