This project will explore what happens when programmers are given an opportunity to program by directly manipulating pictures of example data structures. An interactive, two-view environment will be provided in which users can create programs by manipulating concrete pictorial, examples of data structures or by entering code into a textual editor. Users will be able to create journal-quality pictures of data structures, such as arrays, lists, trees, and graphs, fill in example values, and then visually manipulate the example values. The system will use various inferencing strategies to construct appropriate general-purpose code. A user can create graphical presentations of data structures by using a direct manipulation editor that allows the user to define the visual representation of a data element, such as a list element or a graphical node, and to define how the graphics in the visual representation should depend on the variables in the data element.
Users will be able to move back and forth between the visual and textual editors, using whichever representation is most natural. By providing both a visual and a textual representation, it should be possible to determine those operations which a programmer views as intrinsically visual, and those operations which a programmer views as intrinsically textual. Ultimately these observations should allow better programming environments to be built that provide alternative ways of creating programs.
The proposed whiteboard environment can be used by experienced programmers to investigate new algorithms, by novice programmers to learn about data structures and algorithms, and by instructors to teach data structures and algorithms. The whiteboard environment will include a number of pedagogical features, such as various visual notations, that will facilitate its use by instructors in a classroom.
This project has just recently begun. Stay tuned for further details!