Computer Science Department
School of Computer Science, Carnegie Mellon University


A Programming System for Children
that is Designed for Usability

John F. Pane

May 2002

Ph.D. Thesis

Also appears as Human-Computer Interaction Institute
Technical Report CMU-HCII-02-101
CMU-CS-02-127.pdf (Appendices)
CMU-CS-02-127A.pdf (Appendices)

Keywords: Natural programming, HANDS, end-user programming, psychology of programming, empirical studies of programmers, educational software, children, user interface design, programming environments, programming language design, usability, human-computer interaction.

A programming system is the user interface between the programmer and the computer. Programming is a notoriously difficult activity, and some of this difficulty can be attributed to the user interface as opposed to other factors. Historically, the designs of programming languages and tools have not emphasized usability.

This thesis describes a new process for designing programming systems where HCI knowledge, principles and methods play an important role in all design decisions. The process began with an exhaustive review of three decades of research and observations about the difficulties encountered by beginner programmers. This material was catalogued and organized for this project as well as for the benefit of other future language designers. Where questions remained unanswered, new studies were designed and conducted, to examine how beginners naturally think about and express problem solutions. These studies revealed ways that current popular programming languages fail to support the natural abilities of beginners.

All of this information was then used to design HANDS, a new programming system for children. HANDS is an event-based system featuring a concrete model for computation based on concepts that are familiar to non-programmers. HANDS provides queries and aggregate operations to match the way non-programmers express problem solutions, and includes domain-specific features to facilitate the creation of interactive animations and simulations. In user tests, children using the HANDS system performed significantly better than children using a version of the system that lacked several of these features. This is evidence that the process described here had a positive impact on the design of HANDS, and could have a similar impact on other new programming language designs.

The contributions of this thesis include a survey of the knowledge about beginner program-mers that is organized for programming system designers, empirical evidence about how non-programmers express problem solutions, the HANDS programming system for chil-dren, a new model of computation that is concrete and based on familiar concepts, an evaluation of the effectiveness of key features of HANDS, and a case study of a new user-centered design process for creating programming systems.

204 pages

Return to: SCS Technical Report Collection
School of Computer Science homepage

This page maintained by