My Ph.D. research was based on a recognition that the capability to program -- to customize the behavior of computers and other electronic devices -- is a generally useful skill that would benefit a wide and diverse audience. Indeed, many people who are not trained to be programmers would like to have this capability. However programming is very difficult, especially for beginners. While some of the difficulty is intrinsic to programming, I believe that substantial improvements can be made by paying careful attention to usability during the design of programming languages and tools.
To explore this, I created a new programming system for children called HANDS (Human-centered Advances for Novice Development of Software). Throughout the design of HANDS, I focused on HCI and usability. I began by reviewing, organizing and interpreting prior research on beginners (TR96). Some open questions led me to study how children and other non-programmers naturally express problem solutions. These studies exposed some of the ways that current programming languages force people to express their solutions unnaturally (IJHCS01).
Informed by these results, I began to design the new system. The features of this design placed increased emphasis on the accurate specification of queries, which is notoriously difficult for beginners. This led to another study examining the problems users have with boolean expressions and testing some alternatives for query specification (VL00). A new tabular query design performed significantly better than boolean expressions, and will be incorporated into my new system someday. The design of the search interface for the HCI Bibliography was based on this work (until it was replaced when the underlying search infrastructure was changed in 2006).
HANDS represents the computation as a character sitting at a table, manipulating cards that hold the program's data. This model substitutes familiar ideas for the common but completely unfamiliar von Neumann machine model of computation. The HANDS language provides operators that closely match those observed in our studies. It uses an event-based style of programming, and provides queries and aggregate operators to allow more concise high-level expressions for tasks that require the assembly of many primitives in other languages. HANDS also contains built-in support for constructing interactive simulations and games. More details about HANDS can be found in a paper describing how its design was guided by usability issues (HCC02). In 2012, this paper was awarded the most influential paper from ten years ago by the VL/HCC community.
After creating HANDS, I conducted another user study to examine the effectiveness of three features of HANDS: queries, aggregate operations, and data visibility. HANDS was compared with a limited version that lacked these features. In the limited version, programmers were able to achieve the desired results but had to use more traditional programming techniques. Children using the full-featured HANDS system performed significantly better than their peers who used the limited version (CHI02).
My thesis is available online, and a few other related papers are shown on my list of publications. The Natural Programming project is using this same design process to create new languages for other audiences and domains.
HANDS is currently available only by special arrangement. Contact me for details. For more information about HANDS, you can view a 7-1/2 minute mpeg video (73MB).
My advisors were Brad Myers and David Garlan.
Publications on HANDS and earlier work | |
John Pane's Resume | |
John Pane's Home Page | |
Natural Programming Project |
[email protected] (last modified on 20040317)