Watch What I Do: Programming by Demonstration
  • Editor: Allen Cypher
  • Format: online HTML
  • Price: free

This book grew out of a workshop on Programming by Demonstration that was held at Apple Computer in March, 1992. The workshop was an opportunity for current researchers to discuss their work with the pioneers in the field. David Smith demonstrated a HyperCard simulation of his Pygmalion system, which was the first system for programming by demonstration and the inspiration for the work that has followed. Henry Lieberman ported his classic Tinker system to the Macintosh so that he could give a live demonstration at the workshop. This was followed by classic videos of the early systems, live demonstrations of the newer systems, and open discussion on topics in the field.

This book is not only intended for individuals who are actively working in the field of programming by demonstration. We have aimed to make this material accessible and interesting to a larger audience: students and researchers with an interest in end user programming, and individuals interested in user interface design and agent-based systems. It is not a book about machine learning or artificial intelligence. Rather, the focus is on ways to create the appropriate human-computer interaction so that end users can gain more control of their personal computers.

The motivation behind Programming by Demonstration is simple and compelling: if a user knows how to perform a task on the computer, that should be sufficient to create a program to perform the task. It should not be necessary to learn a programming language like C or BASIC. Instead, the user should be able to instruct the computer to “Watch what I do”, and the computer should create the program that corresponds to the user’s actions. This book investigates the various issues that arise in trying to make this idea practical. The first section of the book describes 18 computer implementations of Programming by Demonstration, and the second section discusses the problems and opportunities for Programming by Demonstration (PBD) in more general terms.

Chapters include:

I Systems

  • Pygmalion: An Executable Electronic Blackboard
  • Tinker: A Programming by Demonstration System for Beginning Programmers
  • A Predictive Calculator
  • Rehearsal World: Programming by Rehearsal
  • SmallStar: Programming by Demonstration in the Desktop Metaphor
  • Peridot: Creating User Interfaces by Demonstration
  • Metamouse: An Instructible Agent for Programming by Demonstration
  • TELS: Learning Text Editing Tasks from Examples
  • Eager: Programming Repetitive Tasks by Demonstration
  • Garnet: Uses of Demonstrational Techniques
  • The Turvy Experience: Simulating an Instructible Interface
  • Chimera: Example-Based Graphical Editing
  • The Geometer’s Sketchpad: Programming by Geometry
  • Tourmaline: Text Formatting by Demonstration
  • A History-Based Macro by Example System
  • Mondrian: A Teachable Graphical Editor
  • Triggers: Guiding Automation with Pixels to Achieve Data Access
  • The AIDE Project: An Application-Independent Demonstrational Environment

II Components

  • A History of Editable Graphical Histories
  • Graphical Representation and Feedback in a PBD System
  • PBD Invocation Techniques: A Review and Proposal
  • A System-Wide Macro Facility Based on Aggregate Events: A Proposal
  • Making Programming Accessible to Visual Problem Solvers
  • Using Voice Input to Disambiguate Intent

III Perspectives

  • Characterizing PBD Systems
  • Demonstrational Interfaces: A Step Beyond Direct Manipulation
  • Just-in-time Programming