"Watch What I Do" Chapter 18


The AIDE Project:
An Application-Independent Demonstrational Environment

Philippe P. Piernot
Marc P. Yvon


The AIDE project intends to provide developers with a system substrate for application-independent Programming By Demonstration (PBD). The AIDEWORKBENCH allows a developer to add advanced macro capabilities to a Smalltalk-based application (whatever it is) without re-implementing everything from scratch. We first introduce the workbench by describing its general architecture and its main components: high-level events, macros, and an "intelligent" event manager. Then we present SPII, a general purpose graphical editor supporting PBD, which has been implemented using the workbench. A major problem arising in the domain of PBD is how to express users' intentions. Some features of the workbench, particularly well suited to dealing with this problem, are also discussed.


Programming By Demonstration allows the end-user to create parameterized procedures by demonstration in order to extend an application and eliminate repetitive tasks [Myers 92d]. Many such systems have been implemented in various domains [Piernot 91] including graphic drawing, text editing and formatting, desktop manipulation, user interface creation, robotic assembly tasks and general programming. Moreover, commercial products which include demonstrational aspects, such as Excel 4.0 with its autofill feature or NewWave 4.0 with its agents, are emerging in the mass market.

Even though each PBD system has been written from scratch, requiring tedious coding, most of these prototypes share common components among which we find high-level events, a trace recording feature and a machine learning mechanism. The AIDE project tries to provide the developer with an application-independent Smalltalk-based environment for quickly implementing PBD-aware applications. In the next section we describe the AIDEWORKBENCH. Then we provide an overview of SPII, a general purpose object-oriented graphical editor built using this workbench, and gives examples of macros that can be created by demonstration. Finally, we discuss the way users can express their intentions in AIDE-based applications.


Uses and Users

Application domain: application-independent

Intended users: non-programmers

User Interaction

How does the user create, execute and modify programs?
The user turns on recording and gives an example of the procedure. Each command is recorded and displayed in a VCR-like window (enabling unlimited-depth undo).
The user can specify data descriptions through a search dialog box.
The user can modify incorrect generalizations by giving additional examples. Undo can be applied to macros.
Macros can be selected from a menu or attached to a high-level event.


Aide tries to merge high-level events of the same class into a new event of the same class with generalized arguments. Loops are detected by finding a sequential pattern between two or more events.

Types of examples: Multiple examples

Program constructs: Parameterized procedures; loops, but no nested loops; no conditionals.


Types and sources of information:
Aide has some knowledge about various sequences (textual, graphical, numerical) and about loop creation.


Machine, language, size, date: Smalltalk V on a Macintosh LC, 4000 lines of documented code, 1992.

Notable features

* An unlimited undo/redo capability (works for macros).
* Search dialog for specifying the user's intent.
* Can be easily extended to cope with various application domains thanks to object-orientedness.
* The current selection is used both as a macro argument list and as a return value.

back to ... Table of Contents Watch What I Do