Graduate Projects, Peter Andreae:

Programming by Demonstration for Emacs


Emacs contains a primitive programming by Demonstration facility -- keyboard macros -- that allows a user to record a sequence of keystrokes that can be replayed many times. It is very restricted in that a macro cannot contain any conditional branching or internal loops. This project concerns the development of a more powerful Editing By Demonstration (EBD) system.

Past projects have developed an extension to keyboard macros that allow a user to construct command definitions involving conditional branching and looping constructs, and a prototype inference engine for discovering regexp branch conditions from examples. Use of the prototypes make it clear that the quality of the user interface is critical for the success of an EBD.

Future projects could integrate the regexp inference engine into the EBD system, develop a more effective user interface, or develop more effective ways of inferring loop structure.

Two past graduate students have worked on aspects of this problem: