Watch What I Do: Programming by Demonstration is available online. 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.
Book Description
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.
Table of Contents
- An Executable Electronic Blackboard
- A Programming by Demonstration System for Beginning Programmers
- A Predictive Calculator
- Programming by Rehearsal
- Programming by Demonstration in the Desktop Metaphor
- Creating User Interfaces by Demonstration
- An Instructible Agent for Programming by Demonstration
- Learning Text Editing Tasks from Examples
- Programming Repetitive Tasks by Demonstration
- Uses of Demonstrational Techniques
- Simulating an Instructible Interface
- Example-Based Graphical Editing
- Programming by Geometry
- Text Formatting by Demonstration
- A History-Based Macro by Example System
- A Teachable Graphical Editor
- Guiding Automation with Pixels to Achieve Data Access
- An Application-Independent Demonstrational Environment
- 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
- Characterizing PBD Systems
- Demonstrational Interfaces:
- A Step Beyond Direct Manipulation
- Just-in-time Programming