Until recently most programming power has been in the hands of the professional programmer rather than the end user. Programming by Demonstration is a method that allows end users to create, customize, and extend programs by demonstrating what the program should do. Programming by Demonstration systems have existed since 1975, yet this is the first time that information on all of the best of these systems has been gathered in one place. The first...