<<

Lowering the Barriers to Programming: A Taxonomy of Programming Environments and Languages for Novice

Caitlin Kelleher and Randy Pausch

Carnegie Mellon University

Since the early 1960’s, researchers have built a number of programming languages and environments with the intention of making programming accessible to a larger number of people. This article presents a taxonomy of languages and environments designed to programming accessible to novice programmers of all ages. The systems are organized by their primary goal, either to teach programming or to use programming to empower their users, and then, by each system’s authors’ approach, to making learning to program easier for novice programmers. The article explains all categories in the taxonomy, provides a brief description of the systems in each category, and suggests some avenues for future work in novice programming environments and languages.

Categories and Subject Descriptors: H.5.2 [Information Interfaces and Presentation]: User Interfaces—User-centered design; Interaction styles; Theory and methods; K.3 [Computing Milieux]: Computers and Education General Terms: Design, Languages, Human Factors Additional Key Words and Phrases: Human-computer interaction, computer Science education, literacy, learning, problem solving

1. INTRODUCTION programmers. Since the early 1960’s, re- searchers have built a number of program- Learning to program can be very difficult ming languages and environments with for beginners of all ages. In addition to the intention of making programming ac- the challenges of learning to form struc- cessible to a larger number of people. This tured solutions to problems and under- article presents a taxonomy of these lan- standing how programs are executed, be- guages and environments and discusses ginning programmers also have to learn a the challenges they address. rigid syntax and rigid commands that may For the purposes of this article, we de- have seemingly arbitrary or perhaps con- fine programming as the act of assem- fusing names. Tackling all of these chal- bling a set of symbols representing com- lenges simultaneously can be overwhelm- putational actions. Using these symbols, ing and often discouraging for beginning users can express their intentions to the

This work was supported by a National Science Foundation graduate fellowship and grants from DARPA, NSF, NASA, and ONR. Authors’ address: Department of Computer Science, Carnegie Mellon University, 5000 Forbes Ave., Pittsburgh, PA 15213; email: [email protected]. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or direct commercial advantage and that copies show this notice on the first page or initial screen of a display along with the full citation. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, to redistribute to lists, or to use any component of this work in other works requires prior specific permission and/or a fee. Permissions may be requested from Publications Dept., ACM, Inc., 1515 Broadway, New York, NY 10036 USA, fax: +1 (212) 869-0481, or [email protected]. c 2005 ACM 0360-0300/05/0600-0083 $5.00

ACM Computing Surveys, Vol. 37, No. 2, June 2005, pp. 83–137. 84 . Kelleher and R. Pausch computer and, given a set of symbols, a ond, by the primary aspect of program- user understands the symbols can ming that the system attempts to simplify. predict the behavior of the computer. This Each system appears in the taxonomy only definition excludes many of the “Program- once. However, many of the systems in the ming by Demonstration” systems [Cypher taxonomy have built on the ideas of earlier 1993] where the computer observes the systems. Consequently, a system that was user’s actions and uses internal heuris- influenced by natural language program- tics to generate a program for the user. In ming may not be classified with other nat- these systems, the user cannot accurately ural language systems if supporting nat- predict what program will be produced. ural language programming was not the In this article, we describe the high-level systems’ primary contribution. organization of our taxonomy, present the taxonomy, and briefly describe all of the 3. TEACHING SYSTEMS categories and systems within those - egories. We then present two additional These systems were designed with the tables: a table of the most influential goal of helping people learn to program. systems and a system comparison table. Most of the systems in this category are (or The system comparison table compares include) simple programming tools that all systems in our taxonomy based on provide novice programmers with expo- 1) what programming constructs they sup- sure to some of the fundamental aspects port, and 2) their approaches to making of the programming process. After gain- programming more accessible to novice ing experience with a teaching system, programmers. Finally, we summarize the students are expected to move to more approaches and discuss some possible general-purpose, commercially available avenues for future work in this area. languages. A few systems attempt to pro- Appendix A contains a complete list of the vide support in learning a more general systems included in the taxonomy,their lo- language from the start. Because students cations within the taxonomy, and pointers interacting with teaching systems are - to associated Web pages. pected to transition to general-purpose languages, many teaching systems are in- tentionally similar to general-purpose lan- 2. TAXONOMY guages. For example, knowing that a stu- In creating a programming environment dent will eventually have to do “for loops” for novices, one of the first questions in a Java-style, the designers of teach- that must be answered is why novices ing languages are less likely to intro- need to program. There are a variety of duce a different style of looping. Because possible motivations for learning to pro- general-purpose languages are not always gram: to pursue programming as a ca- designed with beginners in mind, the sys- reer path, to learn how to solve problems tems in this category are juggling two pos- in a structured and logical way, to build sibly conflicting goals: making it easier software customized for personal use, to for beginners to get started programming, explore ideas in other subject areas, and and giving students a background that so on. The systems in this taxonomy (see makes it easy for them to transition from Figure 1) fall into two large groups: sys- the teaching system to a general-purpose tems that attempt to teach . for its own sake and those that attempt to The teaching systems focus on several support the use of programming in pursuit areas that can be difficult for novice pro- of another goal such as teaching cognitive grammers. The majority of the systems modeling to psychology students. Because in this category address the mechanics these two goals place very different con- of programming: both expressing inten- straints on systems, the taxonomy is or- tions to the computer and understand- ganized first by the system goals, either ing the actions of the computer [Norman teaching or using programming, and, sec- 1986]. Other systems attempt to place

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 85

Fig. 1. Novice programming systems and languages taxonomy.

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 86 C. Kelleher and R. Pausch

Fig. 1.(Continued ). programming in a context that is acces- structions to the computer (e.g., syntax), sible and motivating to a wider audi- how to organize these instructions (e.g., ence of people either by providing concrete programming style), and how the com- reasons for programming or by support- puter executes these statements. Systems ing novice programmers working together in this category attempt to make it easier and learning from one another. for beginners to learn one of these three skills. 3.1. Mechanics of Programming The systems in this category are designed 3.1.1. Expressing Programs. In most around the hypothesis that the primary general-purpose languages, users create barrier in learning to program lies in the programs by typing sentences into a text mechanics of writing programs. To suc- editor. Beginning programmers often cessfully a program, users must un- have trouble translating their intentions derstand several topics: how to express in- into syntactically correct statements that

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 87 the computer can understand. The sys- tems in this category explore two possible avenues for making this process easier for beginning programmers: improve the language so that beginners can more Fig. 2.Afor loop to compute the sum of the numbers easily learn it or find alternate ways from 1 to 10 written in Fortran and Basic. for beginners to communicate their instructions to the computer. BASIC: DARTMOUTH COLLEGE, 1963 [Kurtz 1981]. Basic was designed to Simplify Entering Code. Many teach Dartmouth’s non-science students general-purpose languages have been in- about computing through programming. fluenced by the need for sufficient power to Fortran and Algol, the commonly used tackle arbitrary programming tasks and a languages the , were both large desire to make the programming language and complex. Kemeny and Kurtz believed easier to implement, making the result- that the students would “balk at the ing languages unnecessarily difficult for seemingly pointless detail” [Kurtz 1981]. beginning programmers. The systems in After considering using subsets of Fortran this category examine three approaches to or Algol, Kemeny and Kurtz agreed they making languages more approachable for would have to create their own lan- beginning programmers: 1) simplifying guage. The Basic (Beginners All-purpose the language, 2) tailoring the language Symbolic Instruction Code) language for a specific, small domain of program- was designed to support a small set of ming problems, and 3) preventing syntax instructions and remove unnecessary errors. syntax. The environment was designed to (1) Simplify the Language. General- have rapid turnaround time and sacrifice purpose languages typically include a computer time for user time (in 1963, the large variety of syntactic elements that computer science community was arguing can be particularly difficult for beginners against high-level languages because the because these syntactic elements don’ compilation time was seemingly wasted have an obvious meaning. The languages computation). in this category use a few simple obser- Statements in Basic consist of three vations to decrease the number of po- parts: a line number (e.g., 110), an oper- tentially confusing syntactic elements en- ator (e.g., LET), and an operand (e.g., S = countered by beginning users while trying S + 1). All commands begin with an En- to maintain as much similarity as possible glish word to make the language easier to general-purpose languages. General- for the novice; the designers believed that purpose languages often contain unneces- LET S = S + I would be easier for stu- sary syntax, use commands whose names dents to understand than S = S + I. are unfamiliar or have different mean- Figure 2 shows a simple summation loop ings in the programming language than in both Fortran and Basic. While the state- in standard English, have inconsistent ments have a similar structure, the Ba- uses for syntactic elements, or include sic program uses language more suitable features inappropriate for beginning pro- for a novice, removes elements like labels grammers. Using these observations, it is (e.g., 30) that require a more detailed un- possible to make a language syntactically derstanding of the program counter, and easier for beginners to handle without does not depend on spacing for syntactic fundamentally changing the common con- meaning. trol structures found in general-purpose SP/K:UNIVERSITY OF TORONTO, 1977 [Holt languages. Consequently, when a student et al. 1977]. SP/k is a subset of PL/1 chosen moves from one of these languages to a for teaching introductory programming. general-purpose language, they should be The features of the SP/k language were able to transfer their knowledge from the chosen to remove redundant constructs, teaching language. inconsistencies in the language that go

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 88 C. Kelleher and R. Pausch against students’ intuitions (in PL/1, the nisms like pre- and post-conditions. The expression 25 + 1/3 evaluates to 5.3333), Blue language is a pure object-oriented constructs that are easily misused such language that supports single inheritance, as pointers, and constructs like concurrent garbage collection, and strong static typ- programming that are suited for advanced ing. Classes are defined in single files with programmers. The difficulty of compiling a structure that clearly reflects which rou- constructs was also considered. The re- tines others can call and which routines sult of pruning was a simpler language are internal to the class by placing rou- for introductory programming that both tines in separate internal and interface students and teachers generally preferred areas within the file. Routine definitions over Fortran. The authors also provided an include explicit pre- and post-conditions. order for introducing programming con- Blue provides a single loop structure that structs as a sequence of subsets of SP/k. consists of a set of statements followed by SP/1 introduces expressions and output. a list of conditions that should cause the By SP/8, students have learned all of SP/k. loop to , which can be used to create By introducing things gradually, students loops that function like traditional for and can master a small piece of the language while loops. Each loop exit condition can at a time, allowing them to devote more include statements to execute if the loop time to problem solving than memorizing exits on that particular condition. The de- the features of the language. signers of the language also created an TURING:UNIVERSITY OF TORONTO, 1988 environment for beginning programmers [Holt and Cordy 1988]. The Turing lan- that will be discussed separately. guage was developed as both a general- JJ: CALIFORNIA STATE UNIVERSITY AND purpose and instructional language for CALIFORNIA INSTITUTE OF TECHNOLOGY, 1998 the Computer Science Department at [Motil and Epstein 1998]. Full fea- the University of Toronto. Consequently, tured, general-purpose languages force while the designers intended that Turing beginning students to focus on the syntax be used in teaching programming, the rather than the problem they are trying language design was influenced by a de- to solve in writing a program. JJ (Junior sire to help expert programmers by in- Java) is a language designed to remove cluding powerful programming features. much of the syntactic complexity in or- The Turing language contains all the fea- der to allow students to focus on the con- tures of Pascal (see Section 3.1.2) and cepts of programming. It removes much of adds dynamic arrays, modules, and vary- the punctuation such as braces and semi- ing length . In addition, Turing colons and has only one way to do any- simplifies the syntax by removing the re- thing; there is one integer , one way quirement for headers declaring the name to create a comment, and so on. The lan- of the program and semicolons at the end guage also provides an easy migration to of each statement. Java after the first half of the semester. BLUE LANGUAGE:UNIVERSITY OF MONASH, Students can either do this by hand or the 1996 [Kolling and Rosenberg 1996]. Blue environment can convert their JJ code to is an object-oriented language designed to Java automatically. Figure 3 shows an ex- be taught as a first language. After using ample of computing weekly pay in JJ and Blue for a year, students are expected to the equivalent code in Java. Due to lack of move to an industrial language such as adoption, the designers of JJ have moved C++. The designers of the language used towards improving students’ classroom four criteria in creating Blue: there should experiences with Java by providing bet- be only one way to do everything; the ter compilation error messages and al- language should cleanly reflect the the- lowing students to program over the oretical model; the language should be Web. readable so students can learn by reading GRAIL: MONASH UNIVERSITY, 1999 examples; and the language should explic- [McIver 1999, 2001]. Grail was developed itly support software engineering mecha- in response to the hypothesis that “it is the

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 89

Fig. 3.Ashort segment of code to compute a worker’s weekly pay shown in both JJ and Java. Note the line-by-line correspondence.

Fig. 4. This is an If-statement template as it appeared in the Cornell Pro- gram Synthesizer. The words “condition” and “statement” are placeholders the user replaces with a condition (such as k < 1) or a programming state- ment, respectively. unfamiliarity of ‘hieroglyphics’ (i.e. the of the Grail language can be found in language syntax) and the sheer com- McIver’s thesis. plexity of the full theory that are the (2) Prevent Syntax Errors. One of the primary stumbling blocks for the novice” largest and most frustrating challenges [McIver 2001]. Three guiding principles for novice programmers is syntax. The sys- governed the design of GRAIL: maintain tems in this category are programming a consistent syntax; use terms that novice environments for existing languages such programmers are likely to be familiar as Pascal and Fortran that are designed with and avoid standard programming to prevent users from making syntax er- terms that have different meanings in En- rors using the hierarchical structure of glish; and include only constructs that are programs. fairly simple and have a “single, obvious CORNELL PROGRAM SYNTHESIZER:CORNELL syntax” [McIver 2001]. These guidelines UNIVERSITY, 1981 [Reps and Teitelbaum led to an imperative language with many 1989; Teitelbaum and Reps 1981]. The small differences from commonly used Cornell Program Synthesizer was a struc- teaching languages such as Pascal (see ture editor designed to prevent students Section 3.1.2). The list of changes is too from making syntax errors. Using the syn- long to reproduce here but we list a few thesizer, students constructed programs to give the reader a feel for the kinds of by adding predefined templates for state- changes made for the Grail language. ments in a programming language (see Rather than using “*” for multiplication, Figure 4). A template often contains Grail uses “×” because it is a symbol placeholders for statements, conditions, or that novice programmers will understand phrases. These are essentially blanks for from mathematics classes. Values are the user to fill in. To prevent syntax errors, assigned using an arrow indicating where the system presented only templates that the answer will be placed since a = b would be syntactically valid at the cur- is ambiguous. McIver removed pointers sor’s current location. Students could use because they are difficult to use correctly; the arrow keys to move to the next or using pointers, it is very easy for begin- previous place in their program where ners to create problems they cannot easily they could add, remove, or edit a tem- understand or explain. The full details plate based on the abstract syntax tree.

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 90 C. Kelleher and R. Pausch

While the designers of the Cornell Pro- present in traditional programming - gram Synthesizer originally wanted to re- itors. The Gnome project demonstrated quire programs to always be syntactically that students have difficulty navigating valid, they found this requirement made in the abstract syntax tree. To allevi- certain kinds of edits, such as changing a ate this problem, MacGnome allowed stu- variable name, extremely difficult. In re- dents to navigate using point and click sponse, they changed the Cornell Program with a mouse. In Gnome, students of- Synthesizer to allow syntactically invalid ten had trouble modifying code because of statements but highlight them to draw the the requirement to maintain syntactic cor- user’s attention. rectness. Rather than requiring syntactic GNOME: CARNEGIE MELLON UNIVERSITY, correctness at all times, the MacGnome 1984 [Miller et al. 1994]. The Gnome project editors converted the syntax tree environments were an attempt to make a into a textual representation to allow edit- structure editor for novice programmers ing without syntactic constraints. Once that was more versatile than the Cornell the user finished editing, it converted the Program Synthesizer. Gnome displayed modified code back to tree representation programs hierarchically, encouraging stu- using an incremental parser. By allow- dents to think about programs as hierar- ing students to edit code textually, the chical collections of procedures. Students MacGnome environment could not pre- navigated through their programs using vent syntax errors. However, MacGnome arrow keys that corresponded to move- detected and reported all syntax errors ments in the abstract syntax tree; Gnome as soon as the code was parsed, allowing displayed program segments in the famil- students to correct them before moving to iar textual form. When the other sections of the program. The novice attempted to move the cursor after an edit, programming environments produced as a Gnome analyzed the program, reported result of the MacGnome project are called any syntax errors, and prevented the Genies. programmer from moving on until the program was syntactically correct. The programmer could also request an analy- Alternatives to Typing Programs. De- sis of the program at any time. While this spite the attempts to make programming environment prevented syntax errors, it languages simpler and more understand- actually required students to think more able, many novices still struggle with syn- about syntax than they previously had: tax, for example, remembering the names they needed to have a mental model of the of commands, the order of parameters, syntax tree to navigate through the sys- whether or not they are supposed to use tem; the abstract syntax representation parentheses or braces, and so on. An- sometimes differed from the textual repre- other large set of systems are designed sentation (particularly with mathematical around the belief that to enable novices equations); and the requirement for syn- to understand what programming really tactic correctness sometimes prevented is, we need to bypass the syntax problems students from making desired changes in altogether. The systems in this category the program because the fastest route to represent three major approaches to by- a correct program required intermediate passing syntax: creating objects that rep- stages that were not syntactically correct. resent code that can be moved around and Gnome environments were created for combined in different ways, using actions Karel the Robot, Pascal, Fortran, and of the user within the interface to define Lisp. programs, and providing multiple mecha- MACGNOME:CARNEGIE MELLON UNIVER- nisms for creating programs. SITY, 1986 [Miller et al. 1994]. The (1) Construct Programs Using Graph- MacGnome project attempted to cleanly ical or Physical Objects. The systems in integrate the structure-editing capabili- this group use graphical or physical ob- ties of Gnome with the text-editing model jects to represent elements of a program

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 91 such as commands, control structures, or reaches a point where its behavior has variables. These objects can be moved not been specified, it will halt and notify around and combined in different ways to the user that additional programming is form programs. Novice programmers need necessary. only to recognize the names of commands PLAY:UNIVERSITY OF WASHINGTON, 1986 and the syntax of the statements is en- [Tanimoto and Runyan 1986]. Play is a coded in the shapes of the objects, prevent- system designed to allow preliterate chil- ing them from creating syntactically incor- dren to create graphical plays using an rect statements. iconic language. Stories consist of a lin- TORTIS SLOT MACHINE: MIT ARTIFICIAL ear sequence of actions that is displayed INTELLIGENCE LAB, 1976 [Perlman 1976]. at the top of the screen, above the story’s The Tortis Slot Machine is a physical stage, as a sequence of icons similar to interface that allows young children to a comic . The character, what the control a robotic turtle inspired by the character should do, and one additional Logo turtle (see Section 4.1.2). Since the piece of information—typically a direction robotic turtle is very slow, a simulated on- to move—all selected from menus, spec- screen graphical version is provided for ify each action in the story. Play also pro- more advanced students. The Slot Ma- vides a character editor where children chine consists of a set of command cards can draw additional images of their char- and rectangular boxes (called rows) that acters and compose those images to cre- represent procedures and contain slots for ate new animations. Play does not allow command cards. Children created Slot Ma- children to use more complicated control chine programs by placing cards in slots structures such as loops and conditionals of the rows and having the turtle exe- or define procedures. cute the cards in order. The Slot Machine SHOW AND TELL:WASHINGTON UNIVERSITY provided several uniquely colored rows so AND BELL LABS, 1990 [Kimura et al. 1990]. that children could create different proce- Show and Tell is a dataflow-based visual dures in each row.Children could call their language designed for children. A program procedures using a colored card that in- in Show and Tell consists of a series of con- structed the Slot Machine to execute the nected boxes. A box can represent a value cards in the row corresponding to that or an operation on values. The program color. includes boxes that represent basic arith- PICT:UNIVERSITY OF WASHINGTON, 1984 metic functions, system input and out- [Glinert and Tanimoto 1984]. Pict allows put, and some special purpose boxes that novice programmers to create simple pro- play sounds or act as timers, and so forth. grams by connecting graphical icons that Children can build procedures by draw- represent commands. Pict allows users to ing their own icon for a box and defining build programs that do simple numeric what should happen in the procedure us- calculation using the addition and sub- ing other boxes. Procedures can call them- traction of integers, variable assignment, selves. Because boxes are not permitted and Boolean tests. To create a program, to form cycles or loops, users cannot con- users select relevant icons (commands) struct for and while loops. However, Show from a menu screen area and position and Tell provides an iteration box that pro- them on a workspace screen area using vides bounded iteration, in other words, a joystick. After positioning icons on the the function will continue repeating un- workspace, the user can connect a pair til a boundary value is reached. If two of icons together by clicking on the two connecting boxes contain different values endpoints in turn. When a user runs a (e.g., 2 and 3), they and their parent box program, Pict animates the execution of are marked “inconsistent” and become in- the program by moving a white box along visible to the other boxes. By checking for the execution path of the program. Users consistency and inconsistency in particu- can run a Pict program at any point in lar boxes, children can represent simple its development. If the running program Boolean conditions.

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 92 C. Kelleher and R. Pausch

Fig. 5.Aview of the My Magic Castle courtyard. The user is creating the rule “Nicky should dance when it meets the horse.”

MY MAKE BELIEVE CASTLE [LOGO COM- THINKIN’THINGS COLLECTION 3- HALF TIME PUTER SYSTEMS INCORPORATED 1995]. My [EDMARK CORPORATION 1995] Half Time is Make Believe Castle is a play program one of the activities in the computer game for children ages 4–7 that contains activ- Thinkin’ Things Collection 3. The activity ities designed to help develop children’s revolves around creating a half-time show problem-solving abilities, critical think- (see Figure 6). Users can select characters ing, sequential planning, and memory. from the top left and drag them onto the The castle consists of a number of rooms, field; each half-time show can have a to- each containing an activity. In the court- tal of thirty characters of three types (such yard of the castle, characters such as the as tuba, percussion, and trumpet players). dragon, prince, princess, and horse move At the bottom of the screen, there is a around. When the user clicks on them line for each of the three types of char- with a particular tool, they will dance, slip acters in which users can drop instruc- on banana peels, do somersaults, and so tions for how they want them to perform. forth. After children have played in the The available instructions are similar to courtyard space, they are introduced to a those of the Logo (see Section 4.1.2) turtle: very simple, rule-based programming sys- move forward, turn left and right, turn tem. Editors for each character allow chil- randomly, pause, pen down and up, and dren to specify which action a character so on. Programs are created by dragging should take when it meets another spe- the icons for instructions (shown below the cific character. A typical rule might be football field) into the lines for a particular “Nicky dances when it meets the horse” type of character. Counted loops are sup- (see Figure 5). Rules are specified graph- ported but no other block statements are ically; children select the action using available. icons and the character that should trig- LOGOBLOCKS: MIT MEDIA LAB, 1996 ger the action by selecting a picture of that [Begel 1996]. LogoBlocks is a graphi- character. programming language designed for

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 93

Fig. 6.Ascreenshot of Half-Time from Thinkin Things Collection 3. the Programmable Brick, a precursor to ing the arguments so that it is clear both the commercial Lego Mindstorms system that the command requires an argument, [1998], developed by the MIT Media Lab and the type of the argument which is (see Figure 7). In LogoBlocks, labeled, specified by the shapes of blocks that will graphical shapes represent commands in fit into the cutout. LogoBlocks includes BrickLogo, an extension of Logo (see Sec- support for procedures; users can attach tion 4.1.2) that provides commands for commands to purple procedure blocks and the Programmable Brick. These graphical name their procedures. blocks can be dragged off a tool palette on PET PARK BLOCKS: MIT MEDIA LAB, the side of the screen to a main work area 1998 [Cheng 1998]. Pet Park Blocks is where they can be placed next to other a graphical programming language, in- blocks to form programs. Like many - spired by LogoBlocks, which was devel- sual programming environments, changes oped for the Pet Park collaborative en- to programs may require the user to move vironment (described in Section 3.2.1). existing statements to make room for new Animations are represented by notched ones. The parts in the palette can take sev- squares that fit together. Conditionals are eral forms, for example, a block marked ‘A’ represented by squares with half oval specifies the motor A as the recipient of cutouts where conditions can be added. commands following it, but, by clicking on Like LogoBlocks, programming constructs the ‘A’ block, the user can turn it into a ‘B’ are kept in a palette from which users or an ‘AB’ block. Commands and condition- can drag them onto an active area. als also have multiple forms; the blocks in PetPark Blocks provides a button that the tool palette represent kinds of objects allows users to see their Blocks pro- rather than all available objects. Com- gram as a textual program. This allows mands and conditionals requiring argu- users to gradually transition to text-based ments have shapes with cutouts for plac- programming.

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 94 C. Kelleher and R. Pausch

Fig. 7.ALogoBlocks program that waits for a light sensor to get a reading of less than 10 and then turns motor A on for 20 seconds.

DRAPE:UNIVERSITEIT UTRECHT, 2000 Electronic Blocks are physical Lego blocks [Overmars 2000]. Drape is a programming designed to allow young children (ages environment that allows users to draw pic- 3–8) to create Lego forms with interest- tures (see Figure 8). There is a collection of ing behaviors (see Figure 9). Preschool pictorial icons on the left side of the inter- children can build block towers that flash face that represent different commands when they or cars that move when similar to the Logo (see Section 4.1.2) tur- a flashlight shines on them. Three types tle commands—pen up, pen down, move of blocks are provided: sensor blocks in different directions, move in shapes, that can detect light, sound, and ; and so on. The icons can be dragged to logic blocks that can compute AND, NOT, the lines at the bottom of the screen that TOGGLE, and DELAY; and action blocks represent the program; commands are that can produce light, sound, and motion. executed from left to right. There are The syntax of Electronic Blocks is very extra lines associated with their own simple; the only requirements are that icons that can serve as procedure calls. each stack includes a sensor block and The system does have support for some an action block and that the action block predefined blocks such as repeat 10 times be at the bottom of that stack. Action (shown as × 10). However, to apply the blocks are smooth on the bottom so they repeat 10 to more than a single object, the cannot be placed on top of other block sequence needs to be enclosed in brackets types. which introduces the possibility for syntax ALICE 2: CARNEGIE MELLON UNIVERSITY errors in the form of mismatched braces. [2003]. Alice is a programming sys- ELECTRONIC BLOCKS:UNIVERSITY OF tem for building 3D virtual worlds, typi- QUEENSLAND, 2000 [Wyeth and Purchase cally short animated movies or games. In 2000]. Unlike the graphical objects used Alice, users construct programs by drag- to construct programs in other systems, ging and dropping graphical command

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 95

Fig. 8. DRAPE drawing and programming environment allows children to draw pictures.

tiles and selecting parameters from drop- MAGIC FOREST:LOGOTRON [2002]. Magic down menus. Figure 10 shows an Alice Forest (see Figure 11) allows children ages screen as a user creates a simple ani- four and up to play with, change, and cre- mation. To add to the current animation, ate Activities that consist of 2D-sprites the user drags a graphical tile, labeled that can move around, change appear- with the name of the desired action, from ance, and react to simple events. Each the selected object’s methods, in this case sprite can be given a set of Rules (rep- the IceSkater’s methods displayed in the resented by a scroll containing stones), lower-left panel. When the user drops the a combination of an event and a list of tile, the system automatically cascades things that should happen, in order, af- to menus that allow the user to select ter that event occurs. Both events and valid parameters for the chosen method. actions are represented by graphical In Figure 10, the user has just dragged stones that can be identified by their icons, and dropped IceSkater turn from the panel making it possible for children to learn and has chosen to have IceSkater turn how to use Magic Forest without needing right one full turn. Students can also add to know how to read. Magic Forest sup- standard programming control structures ports a variety of events, such as mouse- such as if-statements and loops by drag- based events, events based on the relative ging if and loop tiles from the top bar. positions of objects, and message-passing Where many no-typing programming sys- events. Actions might change the direction tems present users with only a few of the or speed of an object, the appearance of standard programming constructs, Alice an object, send a message, play sounds, allows students to gain experience with all or update the score. To add a new rule of the standard constructs taught in in- to a sprite, a child selects an event from troductory programming classes without a scrolling list of available event stones, making syntax errors clicks on it to pick it up, and then drops

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 96 C. Kelleher and R. Pausch

Fig. 9. Electronic Blocks: the three sensing blocks are pictured on the left, the logic blocks in the middle, and the action blocks on the right.

Fig. 10. Building my first animation in Alice. In my first animation, IceSkater moves forward while she raises her leg. Then, if IceSkater is close to a hole in the ice, she falls through it. it onto a scroll associated with that sprite. form it takes (increase speed, heading, or The child can then attach action tiles to size). the end of the event. As in Logoblocks, (2) Create Programs Using Interface some tiles can have multiple forms; a Actions. The systems in the previous cat- single tile can be used to increase the egory used the metaphor of constructing speed, heading, or size of an object. Chil- programs by arranging physical or graph- dren can click on a tile to change which ical objects, while the systems in this

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 97

Fig. 11. Magic Forest allows children to control the actions and appearances of 2D-characters. This activity has five characters: a witch, a cat, and three spiders. The witch has two rules controlling her behavior. The top one (blue tile on a scroll) allows the user to move the witch around the scene. The second says that when the witch touches another object, she should make a sound (e.g., laugh). The witch also has an empty scroll to which the user can add new behaviors by selecting events and actions from the brown window at the top of the screen and placing them together on her scroll. category use interface actions (such as turtle, pick up or put down the pen, turn button presses or motion through space) a light on and off, and sound a horn. The or sequences of interface actions as the second box adds numbers so that a child building blocks of programs. Since most can repeat a command multiple times by of these interfaces are on physical objects, pressing a number, followed by a com- the interfaces either tend to provide a lim- mand. The third box adds a program area ited number of commands or require the where children can get the turtle to “re- user to perform interface actions (such as member” commands and then play back pressing buttons) in a specific sequence, remembered commands. The fourth and fi- introducing the possibility for sequences of nal box creates four procedures (named by actions that do not correspond to valid pro- colors) that can call each other. The button gram instructions. box system did not allow students to edit TORTIS—BUTTON BOX: MIT ARTIFICIAL programs after creating them, making the INTELLIGENCE LAB, 1976 [Perlman 1976]. gradual modification of programs difficult. The Tortis Button Box is a physical inter- ROAMER:VALIANT TECHNOLOGIES, 1989 face that allows young children to control [Catlin 1989]. Roamer is a programmable, a robotic turtle inspired by the Logo tur- mobile robot that has capabilities similar tle. The Button Box provides a set of four to those of the Logo turtle: the Roamer boxes for controlling the turtle that can be can move forward and back, turn left and given to a child gradually. The first box right, , and make sounds. Programs provides buttons that move and turn the are entered using a set of buttons with

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 98 C. Kelleher and R. Pausch icons for the commands and a number pad tion. The motion is repeated until the but- to indicate how far to move or turn and ton is pushed again, turning Curlybot off. what sound to play. Buttons are also pro- While Curlybot cannot provide the com- vided for creating procedures and repeat- plexity of a full programming language, it ing statements. The Roamer can remem- does allow children to gain intuition about ber up to 59 instructions in either the main repeated motions. The designers describe program (the GO program) or numbered how sensors could be added to Curlybot to procedures that can be called from the GO allow children access to if and while state- program or each other. An expansion set ments, but these additions have not been allows users to add on sensors, two-state implemented. outputs, and a stepper motor, allowing a (3) Provide Multiple Mechanisms for greater variety of programs. Creating Programs. Entering programs LEGOSHEETS:UNIVERSITY OF COLORADO, as text can be much harder than alterna- 1995 [Gindling et al. 1995]. LegoSheets at- tives such as direct manipulation or form- tempts to provide a gentle introduction to filling but often gives the student more programming for the MIT Programmable power. In a system that provides multi- Brick by beginning with manual control ple mechanisms for specifying programs of the elements of the brick and grad- and represents the resulting program in ually progressing to writing programs. all program formats, students can use an Users are presented with a simulated ver- easier method of program specification to sion of the Programmable Brick in which help in learning a more complex, more the parts can be manipulated; users can powerful one. The system in this cate- change the speed of a motor connected to gory provides multiple methods, includ- the simulated brick by typing in a value ing standard text, for specifying programs or using arrow buttons to increase or de- so that students can leverage the simpler crease the value. Once users are comfort- methods to learn to program in a standard, able with manipulating the values of mo- textual format. tors and observing the values of sensors LEOGO:UNIVERSITY OF CANTERBURY, 1997 in response to different types of actions, [Cockburn and Bryant 1997]. Leogo (see they can double click on the representa- Figure 12) is a system that produces tion of a motor or sensor and bring up a drawings similar to the Logo turtle (see rule editor for that object. The rule edi- Section 4.1.2). However, rather than tor provides buttons to add conditionals concentrating on one method for creating or initial values to control the behavior of programs, it provides three: a typed syn- the brick. Conditionals are provided in a tax similar to Logo, a direct manipulation template form where users only have to interface in which the turtle is dragged type the names of objects they want to use around and his actions are recorded, and and arithmetic operations. There are also an iconic language which contains tem- buttons for increasing and decreasing the plates for defining structures and using priority of the current rule. common turtle commands. Motions are ex- CURLYBOT: MIT MEDIA LAB, 2000 [Frei pressed in all code styles simultaneously; et al. 2000]. Curlybot is an educational when the turtle is dragged forward 15 toy for children aged four years and older. units, the text window shows forward 15, It consists of a two-wheeled vehicle with and the iconic window shows forward 15 electronics that allow it to record its mo- in icons so it is possible to learn some tions. The Curlybot has a single button of the iconic and typed languages using and a single LED. The LED is used to in- direct manipulation. dicate whether it is in record mode (red) or playback mode (green). When a child 3.1.2. Structuring Programs. These sys- wants to record a motion, he or she pushes tems concentrate on the structure of code the button, demonstrates the motion, and and how it is organized rather than on then pushes the button again, which stops the syntax of short segments of code. This recording and starts replaying the mo- section includes systems that have tried

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 99

Fig. 12. The Leogo interface showing iconic, direct manipulation, and textual programming. new paradigms for programming. There in the language can be seen as general im- are two groups here—ones that are chang- provements in programming languages. ing the paradigm, and ones that are try- Algol, one of the primary influences, had ing to make changed paradigms more ambiguities in the ways nested ifs could be understandable. interpreted; Pascal removed these. In ad- New Programming Models. These sys- dition, Pascal added new basic types and tems explore new paradigms for organiz- the ability to define special purpose types ing code. through record statements. PASCAL:INSTITUT FUR COMPUTERSYSTEME, :XEROX PARC, 1971 [Kay 1970 [Wirth 1993]. The first version of 1993]. The first version of Smalltalk was Pascal was created in 1970 for use in created in 1971 at Xerox PARC as the teaching programming, particularly sys- language for the KiddyKomputer, Alan tems programming. At the time, the Kay’s original name for a portable com- other available languages were Fortran, puter designed for use by a child. Where Cobol, and Algol, none of which supported Basic attempted to provide a simpler pro- the Structured Programming proposed by gramming language by reducing the num- Dijkstra [1969]. Pascal was introduced in ber of commands and removing unneces- beginning programming classes in 1971 sary syntax, the Learning Research Group to enable professors to teach Structured (LRG) at PARC concentrated on the model Programming to their students in their of programming. The group wanted to cre- first course. Although Pascal was designed ate a programming language with a sim- with teaching in mind, the improvements ple model of execution and a method of

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 100 C. Kelleher and R. Pausch programming that could accommodate ment to be completely graphical; no typ- a wide variety of programming styles. ing is necessary which is an advantage for Smalltalk was based around three ideas: beginning programmers. In addition, to (1) everything is an object, (2) objects have aid the transition from introductory pro- memory in the form of other objects, (3) gramming in Kara to real programming, and objects can communicate with each the authors have supplied JavaKara, an other through messages. environment that provides a transition PLAYGROUND:APPLE COMPUTER, 1989 to Java; MultiKara, an environment that [Fenton and Beck 1989]. Playground is introduces concurrent programming; and an object-oriented programming envi- TuringKara, an environment that allows ronment designed to allow children to students to experiment with Turing ma- create their own graphical objects and chines in a two-dimensional plane. give them behavior. The programming model was based on a biological metaphor in which all objects are independent Making New Models Accessible. Some pro- “organisms”; the model was influenced gramming styles, such as object-oriented both by Minsky’s Society of Mind [1986] programming, can be difficult for begin- and by classical ethology (the study and ners to understand but can be helpful ei- description of animal behavior). Each ther in organizing larger programs or rep- object has its own sensors, effectors, and resenting particular types of behaviors. processing elements so it can act inde- Rather than requiring novice program- pendently. Programming in Playground is mers to learn multiple styles of program- rule-based; rules describe both the action ming, the systems in this category attempt and the circumstances under which it to make these more complex, but ulti- should occur. Students specify rules for mately helpful, styles of programming ac- each object using a natural-language- cessible to novice programmers. influenced scripting language. One of the LIVEWORLD: MIT MEDIA LAB, 1994 suggested projects for the system is a [Travers 1994]. Liveworld is an object- virtual aquarium with different species of oriented programming environment fish and plankton that feed on each other. built to improve on Playground (see A fish might have a rule that caused it Section 3.1.2). In Playground, creating to eat an algae cell if it saw one and was and interacting with graphical elements hungry. A larger fish might eat a smaller is very simple, but interacting with the fish. rules and attributes that govern the KARA: ETH ZURICH, 2001 [Hartmann behavior of the objects is much more et al. 2001]. Kara is a graphical program- difficult. Liveworld attempts to create ming language based on Karel the Robot a graphical interface for the rules and that uses finite state machines to orga- attributes of objects so they are more nize procedures (see Figure 13). Kara can accessible to novice programmers. The move, turn, pick up and place clovers, interface is similar to a hierarchical and detect tree stumps and clovers—these browser (see Figure 14); parts of objects commands and questions are represented can be opened, revealing the details of graphically. In each state, the user can ask those objects. The user can dive down questions of Kara’s current position and, and change the Lisp code controlling based on the answers to these questions, the behavior of objects or simply use the supply a sequential list of instructions and objects, depending upon how much detail the name of the next state in the ma- the user of the system wants to see. This chine. The finite-state machine diagram allows novice programmers to use more of the program is provided to show the complicated objects as black boxes which structure of the program and to allow the would have been difficult in Playground. user to select a preexisting state to edit. BLUE ENVIRONMENT AND BLUEJ: UNI- The use of the simple finite-machine model VERSITY OF SYDNEY, 1996 [Kolling and for programming allows the Kara environ- Rosenberg 1996b], [Kolling et al. 2003].

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 101

Fig. 13.Ascreenshot of Kara showing a finite-state machine with three states: enter, exit, and stop. Below the state machine are Kara’s instruc- tions based on whether there are tree stumps beside her. Each line con- tains instructions for a given scenario. For example, if there is a stump on Kara’s right and not on her left, she should move forward and go to state enter.

The Blue environment and BlueJ are have a single entry point. In contrast, development environments designed to the Blue environment and BlueJ provide support object-oriented programming in users with a class-testing bench which the Blue language and Java, respec- they can use to instantiate individual tively. The authors of the Blue environ- objects, call their methods, and inspect ment and BlueJ believe that Integrated their internal data. This allows users to Development Environments (IDEs) for individual objects outside of the con- object-oriented language should encour- text of the running program, better sup- age users to develop and test individual porting an object-based design. The Blue classes rather than requiring users to al- environment and BlueJ also support ways create complete programs. Yet, most object-oriented programming by explicitly common Integrated Development Envi- representing the relationship between the ronments (IDEs) for object-oriented lan- objects in a graphical tree. Users can click guages such as Java and C++ still re- on a particular class to view the code for quire students to build full programs that that class. Compiling and debugging are

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 102 C. Kelleher and R. Pausch

Fig. 14. (a) A simple world in Liveworld containing two objects, an oval and a turtle. The turtle is open so that the user can see its details. (b) An example of Lisp code used in Liveworld to turn a turtle. also supported in the environment, simi- Tracking Program Execution.ATARI lar to other commercially available IDEs. 2600 BASIC: ATARI, 1979 [Robinett 1979]. KAREL++: PACE UNIVERSITY, 1997 [Bergin The Atari Basic Cartridge allowed chil- et al. 2001]; KAREL JROBOT:PACE UNIVER- dren to write short programs in a vari- SITY, 2000 [Bergin et al. 1996]; J. KAREL: ant of the Basic language and watch them UNIVERSITY OF WATERLOO, 2004 [Becker as they executed (see Figure 15). Atari 2004]. Karel J Robot, J. Karel, and Basic divided the screen into six regions: Karel++ are versions of Karel the Robot the Program region which displayed the that concentrate on preparing students child’s program; the Stack region which for object-oriented programming rather displayed expressions as they were evalu- than . Karel J ated; the Variables region which displayed Robot and J Karel use Java-style syntax; each variable and its current value; the Karel++ uses C++ style syntax. Rather Output region, which displayed all pro- than creating procedures to teach Karel gram output; the Graphics region, a 2D- to turn right, students subclass a ba- graphical region with sprites; and the sic robot to create a right-turning robot. Status region which displayed the current These systems all leverage off the success execution speed of the interpreter and the of the original Karel the Robot to attempt amount of remaining memory. Atari Ba- to introduce object-oriented programming sic contained simple support for observing early so that thinking and programming what was happening as the program ex- in an object-oriented manner will seem ecuted, similar to the supports found in more natural to students. many debuggers. As a child’s program ran, several parts of the display changed to re- 3.1.3. Understanding Program Execution. A flect the current state of the program: a syntactically correct program may not per- program cursor showed the current line of form the actions that the student au- code being executed; the stack updated as thor intended. For beginning program- expressions were added or evaluated; the mers, understanding how programs are values of variables changed as appropri- executed and how to find mistakes in their ate; sprites might move in the graphics re- programs can be difficult. The systems in gion; and the program might play a sound. this category try to help students under- stand what happens during the execution Make Programming Concrete: Actors of programs either by placing program- in Microworlds. Most introductory pro- ming into a concrete setting or by pro- grams in general-purpose languages are viding a physically-based model of how fairly abstract; the computer performs programs are executed in more general- arithmetic operations on numbers and purpose languages. stores the results in invisible registers,

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 103

Fig. 15.Asimple program in Atari 2600 BASIC. The areas of the screen update to show the current position and state of the program. making it difficult for students to under- enues running north-south. Karel’s world stand and correct problems in their pro- can also contain immovable walls and grams. The microworld, inspired by the beepers. Karel can move, turn, turn him- Logo turtle (see Section 4.1.2), attempts to self off, and sense walls half a block from make programming more concrete by in- him and beepers on the same corner as troducing students to programming con- him. A Karel simulator allows students structs through controlling the behavior to watch the progress of their programs, of an actor in a simple, physically-based step-by-step. Unlike many of the systems world. The actors usually perform only discussed in this article, Karel is sup- a few actions, resulting in small lan- ported by a short textbook, making it eas- guages that students can master more ier for teachers to incorporate Karel into quickly than general-purpose languages. their classes. Microworld-based systems also typically Students can create procedures using include simulators that allow students Define-New-Instruction (see Figure 16), to watch the progress of their programs. but variables and data structures are not These simulators require the states of mi- supported in the language. The syntax croworlds to be graphically visible. Using was designed to be similar to Pascal (see , students can quickly gain fa- Section 3.1.2) to ease the transition from miliarity with many of the control struc- Karel to Pascal after the first few weeks tures like if-statements and loops, allow- of an introductory programming course. ing them to devote more time and energy There are a number of other robot-based to mastering the syntax and new com- micro-worlds that are described in a sur- mands when they move on to general- vey of mini-languages [Brusilovsky et al. purpose languages. 1997]. KAREL:CARNEGIE MELLON UNIVERSITY, JOSEF THE ROBOT:ACADIA UNIVERSITY, 1981 [Pattis 1981]. Karel the Robot 1983 [Tomek 1983]. Like Karel, Josef is is one of the most widely-used mini- intended to introduce programming to be- languages, originally designed for use at ginners using a robot, Josef, in a simu- the beginning of a programming course lated world. Josef lives in Wolfville which before the introduction of a more general- is represented by an ASCII map; users purpose language. Karel is a robot that in- can replace the map of Wolfville with one habits a simple grid world (see Figure 16) of their own choosing. He knows how to with streets running east-west and av- turn left and right, and move forward. The

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 104 C. Kelleher and R. Pausch

Fig. 16. Left, a simple Karel world with Karel in a room and a beeper outside the door. On the right, a program that will move Karel to the beeper’s location and have him pick up the beeper. user can also set the speed at which Josef procedures so that students can gain moves. However, unlike Karel, Josef can experience with them in a visual set- say and listen for text strings, enabling ting. The language uses Pascal syntax input-output programs. Additionally, he (see Section 3.1.2) to ease the transition can drop text markers (e.g., the string cat) from Turingal to Pascal. In support of a similar to Karel’s beepers anywhere in his computer literacy course for Russian high world. Unlike Karel, Josef was intended school students, Brusilovsky also created for use in a full semester of programming Tortoise, a micro-world based on Turingal for non-Computer Science majors. To sup- which uses a two-dimensional field of sym- port a full semester of use, it includes bols to make it more attractive to younger many more programming constructs than students [Brusilovsky et al. 1997]. Karel such as parameters, variables, and recursion. Models of Program Execution. Rather TURINGAL:UNIVERSITY OF PITTSBURGH, than creating a language that has a 1991 [Brusilovsky 1991]. Turingal is a simple, physical interpretation, the sys- micro-world-based language in which the tems in this category provide physically- actor is a Turing machine and the world based metaphors for explaining actions in is the infinite tape designed to give stu- a more general-purpose language. These dents exposure to the standard program- metaphors can help students both to ming constructs as well as the classic imagine the execution of their programs Turing machine. The instructions in the and perhaps more clearly understand language allow the actor to move left and why their programs do not perform as right along the infinite tape as well as expected. read and write symbols on the tape. Like TOONTALK:ANIMATED PROGRAMS, 1996 Karel, the basic instructions are easy to [Kahn 1996]. ToonTalk uses a physi- visualize. The Turingal language supports cal metaphor for program execution. In conditional, loop and case statements and ToonTalk, cities and the creatures and

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 105

Fig. 17.Aview of ToonTalk from inside a house. Marty the Martian provides information about objects and what they can do. objects within those cities represent pro- worksheet machines produce stacks of grams (see Figure 17). Most of the compu- worksheets that represent the instruc- tation takes place inside of houses where tions in user-defined subroutines. Rather trainable robots live. Robots can commu- than imagining the internals of a com- nicate with robots in other houses using puter, a novice programmer can imagine birds that carry objects back to their nests. the clerk walking around a room inter- Using interaction techniques commonly acting with calculators, I/O devices, work- found in videogames, users can navigate sheet machines, and his clipboard, and ex- around the cities, pick up tools, and use ecuting the instructions specified on his those tools to affect objects. Users can con- clipboard. This model was used in the cre- struct programs by entering the thought ation of a programming by demonstration- bubbles of robots and showing them what based system in which the user plays the they should do using standard ToonTalk part of the clerk and demonstrates the ac- tools. tions the clerk should take. The system PROTOTYPE 2: VICTORIA UNIVERSITY, 1998 records these actions. While Prototype 2 [Gilligan 1998]. Prototype 2 personifies uses an anthropomorphic metaphor, the the flow of control in a computer, us- system does not include a graphical rep- ing a clerk following instructions. The resentation of the clerk and the objects in clerk can interact with calculators, I/O de- his world; instead it is a standard graph- vices, worksheet machines, and his clip- ical user interface with sections of the in- board in executing a program. Calculators terface that represent each of the objects represent the computer’s math proces- in the clerk’s world (e.g., the calculator, sor, I/O devices represent communication I/O devices, etc.) that the novice program- with the computer user, the clipboard mer can use to demonstrate how the clerk represents the program stack, and the should behave.

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 106 C. Kelleher and R. Pausch

3.2. Learning Support they can be arranged on a desk that sev- eral students can work around. This al- Systems in the previous category exam- lows students to work with the blocks in ined ways to make the process of learn- a social context, learn from each other, ing to program easier by simplifying the and communicate what they are learning. mechanics necessary to write a program. The tangible nature of the blocks makes it The systems in this category try to ease easy for children to take turns manipulat- the process of learning to program by pro- ing the blocks and communicating about viding basic educational supports such as which pieces should be placed where. The progressions of projects that gradually in- AlgoBlock project demonstrates that, in a troduce new concepts or ways for stu- suitable environment, children will work dents to connect with and learn from each together in building programs. However, other. the blocks supported a limited set of pro- gramming constructs and there four the 3.2.1. Social Learning. Some of the most children were not able to explore con- effective learning is done in a social con- cepts like procedures, parameters, or con- text where more than one person is work- trol structures. ing with a problem. Since programming is TANGIBLE PROGRAMMING BRICKS: MIT known to be hard and children often learn MEDIA LAB, 2000 [McNerney 2000]. more effectively in groups, perhaps it may Tangible Programming Bricks are phys- help the learning process to provide a so- ical Lego blocks that can be stacked cial context in which learning can occur. together to form programs. The designer’s The systems in this category investigate intent in creating these was to provide different methods for allowing students to a simple interface to appliances and work together, colocated and over a net- toys and to create a programming en- work connection. vironment that would allow children Side-By-Side. Most computer inter- to collaboratively explore ideas. While faces are designed for single users. Con- the work concentrated on the hardware sequently, when groups of children use a implementation of the Lego blocks, the standard mouse, monitor, and keyboard designer created three prototype environ- setup in learning, one child tends to dom- ments using Lego blocks that represent inate the process. The systems in this commands. To allow a greater variety category use tangible interfaces to allow of commands, users could insert a small multiple students in informal groups to card (e.g., microchip) into a block. Each work together in solving programming block could accept a single card, allowing problems. Because of the difficulty of rep- users to communicate with other blocks resenting the wide variety of program- via IR transmission, supply parameters ming constructs in a tangible form, these to commands, sense the environment, or systems concentrate on small subsets of display variables. The three prototype programming. languages allowed children to teach toy ALGOBLOCK: NEC INFORMATION TECHNOL- cars to dance, kitchen users to program OGY RESEARCH LABORATORIES, 1995 [Suzuki microwaves, and toy trains to react to and Kato 1995]. The authors of AlgoBlock signals along the side of the tracks in wanted to create an active learning com- unique ways. By stacking blocks together munity among children learning to pro- with accompanying cards, if necessary, gram in which children can share notes users could construct simple programs. and techniques, and learn from each other. They created AlgoBlock, a set of blocks, Networked Interaction. Rather than each of which corresponds to a simple com- trying to move away from the common mand in Logo. The blocks can be connected single-user, single-computer paradigm, together to form programs that control the the systems in this category attempt to movements of a submarine in a maze. The allow students using different machines blocks are tangible and large enough that to work together over the network. While

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 107

can combine these simple commands to create their own animations using a textual scripting environment or a set of graphical blocks representing each com- mand. As in Moose Crossing, Pet Park is a networked programming environment Fig. 18.AMoose Crossing script that allows Moose in which children can talk, ask each other users to pet Rover. When a user pets Rover, they are told “You pet Rover.” If they are one of Rover’s friends, for help, and show off their creations. then Rover wags his . While in Moose Crossing children create spaces by describing them with text in Pet the systems designed for students working Park, creating a space requires graphical side-by-side can assume all children can objects. In response, the system provides see the state of the current program and a variety of furniture, objects, and rooms. what other children are doing, program- Furniture and rooms can be programmed ming systems designed for network use to react to simple events such as avatars need to explicitly support the exchange of coming near them. this kind of information. CLEOGO:UNIVERSITY OF CANTERBURY, 1998 MOOSE CROSSING: MIT MEDIA LAB, 1997 [Cockburn and Bryant 1998]. Cleogo is [Bruckman 1997]. Moose Crossing is a networked version of Leogo (described a networked programming environment earlier) that allows children to see and built for children. It is an adapted text- interact with the same Leogo workspace. based MUD (multi-user dungeon) in which Rather than concentrating on building children can use an object-oriented script- a community of programmers, Cleogo ing language to create spaces and char- creates a shared environment—the cur- acters that inhabit a textual world (see rent program being edited—and allows Figure 18). Children create spaces and multiple children to see and manipulate characters similar to those found in text that environment. Cleogo does not at- adventure games such as castles complete tempt to provide children with a way with secret passages that other children of communicating with each other about can explore. Once their projects are com- their project. Instead, it assumes that they pleted, any child in the Moose Crossing are either in the same room or can talk environment can interact with them. In to each other using the phone or some addition, the environment allows children equivalent. to view the scripts controlling any object or character in the environment and chat 3.2.2. Providing a Motivating Context. Mo- with children who are currently logged tivation can be a key element in learning; onto Moose Crossing. In general, children if students want to accomplish a partic- work alone on projects but one child will ular goal, obstacles they encounter while often use another child’s project as an ex- learning to program will not deter them ample. Children can ask another user for as much. The systems in this category at- help or advice. The Moose Crossing com- tempt to provide beginning programmers munity provides a source of help, role mod- with goals to achieve through program- els, and positive feedback for users of the ming that the designers believe novice pro- system as they create their own projects. grammers will find motivating. PET PARK: MIT MEDIA LAB, 1998 ROCKY’S BOOTS/ROBOT ODYSSEY:THE [DeBonte 1998]. Pet Park is an explo- LEARNING COMPANY, 1982 [Robinett and ration of the ideas of Moose Crossing Grimm 1982]. Rocky’s Boots was one of in a 2D-graphical domain rather than a the first educational software products for textual one. Children can choose one of personal computers to successfully use an 5 dogs to be their pet. Each dog comes interactive graphical simulation as a with a few animations such as wagtail, learning environment. The game allows jump, walk, laugh as well as basic ones children to connect logic gates (AND, like wait, turnLeft, say, and so on. Users OR, NOT and flip-flop) together to create

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 108 C. Kelleher and R. Pausch

Fig. 19.Apuzzle from Rocky’s Boots in which the player is asked to create a circuit that separates blue crosses from the other shapes. When the circuit is switched on, shapes move up the right side of the screen. When they enter the white rectangle, the shape sensors to the right of the rectangle can detect them. The player is asked to attach a sequence of logic gates to the sensor that will activate the boot (center) when a blue cross enters the box. The boot, when activated, will kick the shape out of the rectangle. circuits using a joystick (see Figure 19). and Ide 1995]. In AlgoArena, players When the circuits are active, users can write programs to control the behavior of watch the wires turn from white to orange sumo wrestlers fighting in tournaments. as the electricity passes through them. The programs are written in a language The game provides a series of puzzles based on Logo. When a player has com- of increasing difficulty in which the pleted a program, the player can log onto player is supposed to separate the shapes aWeb site and have his or her wrestler matching a certain criteria from those fight against another student’s wrestler. that do not using logic gates, sensors that Over time, by analyzing the circumstances can detect certain kinds of shapes, and in which the player’s sumo wrestler loses a boot that, when activated by a true tournaments, the player is expected to value, kicks the current shape out of the learn more complex ways to control the line and off to one side. Robot Odyssey wrestler, perhaps querying the position follows the same basic pattern; the player and posture of their opponent before de- connects gates together to solve problems. ciding which moves to execute. However, Robot Odyssey includes a larger ROBOCODE: IBM ADVANCED TECHNOLOGY, selection of objects that perform animated 2001 [Nelson 2001]. Robocode is de- actions when they are activated (like signed to help novices learn Java through the shape-kicking boot), creating a wider programming a robotic battletank for a set of possibilities for the behaviors of “fight to the finish”. The tutorial teaches circuits. novices to subclass an existing battletank ALGOARENA: NEC INFORMATION TECHNOL- robot and extend the robot’s capabilities OGY RESEARCH LABORATORIES, 1995 [Kato using standard Java and a set of classes

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 109 written for the Robocode environment. manipulating the interface, without rely- Upon completion of a robot, users can up- ing on a programming language. load their creation to a number of Web PYGMALION:STANFORD UNIVERSITY, 1975 sites or a robotic battle league. The [Smith 1993]. Pygmalion was the first designer of the system believes that the programming-by-demonstration system. ability to program robotic battles will pro- Unlike many of the systems that came af- vide enough motivation to get a novice pro- ter it that concentrated on graphical ob- grammer over the hurdles of beginning to jects, Pygmalion attempted to get people program. to write more abstract programs such as a program to compute the factorial of a 4. EMPOWERING SYSTEMS number. However, rather than building factorial by typing statements in a pro- The systems in this category are built gramming language, Pygmalion relied on with the belief that the important aspect editing an artifact. To create a factorial of programming is that it allows people program, the user creates an icon with to build things that are tailored to their two subicons, one for the input and one own needs. Consequently, the designers of for the output, and draws a symbol to rep- these systems are not concerned with how resent factorial. The user can then enter well users can translate knowledge from remember mode, in which all of the ac- these systems to a standard programming tions made by the user are remembered language. Instead, they focus on trying to by the system. Consequently, the user can create languages and methods of program- program the computer by working out an ming that allow people to build as much as example of how to compute factorial. How- possible. ever, the user must anticipate the han- dling of the value one and test whether or 4.1. Mechanics of Programming not the current value, say three, is equal to one, something that novices may not Systems that fail into this category are be well prepared to do. If the user does designed around the hypothesis that the not demonstrate his or her current ac- primary barrier for people attempting to tions as the case for the current value use programming as a tool is the me- not being equal to one, Pygmalion will not chanical difficulties of creating programs. know that one should be handled differ- These systems examine ways of improv- ently and, consequently, will not prompt ing programming languages and alterna- the user to demonstrate how one should be tive ways for creating programs. handled. PROGRAMMING BY REHEARSAL:XEROX 4.1.1. Code Is Too Difficult. Many re- PARC, 1984 [Finzer and Gould 1984]. searchers have examined the problem of Programming by Rehearsal was built to making languages more understandable help nonprogrammers create educational and usable for novices. While progress software. It is designed around a theater has been made making programming metaphor in which components of the languages more understandable, there interface are performers who interact still are many barriers for novices try- with one another on a stage by sending ing to build their own programs. These and responding to cues. A user of the systems examine creating programs ei- system would begin creating a piece of ther through demonstrating correct be- software by auditioning performers to havior or selecting actions through the use as building blocks, selecting their interface. cues via a pop-up menu, and observing their responses to those cues. The user Demonstrate Actions in the Interface. would then copy the chosen performers The systems in this category examine onto the stage, placing and sizing them ways that users can program a system by appropriately. The rehearsal portion of showing the system what to do through development consists of showing the

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 110 C. Kelleher and R. Pausch performers what actions they should take Demonstrate Conditions and Actions. in response to user input or cues sent by Like the previous category, the systems in other performers. Objects that accept user this category try to avoid forcing users to input, such as buttons, have cue sheets express their intentions in code. However, that allow users to fill in their responses instead of demonstrating programs by per- to those user inputs. Users can press a forming actions in the user interface as the closed eye icon to tell the system to begin systems in the previous category did, the observing their actions. Then, by selecting systems in this category allow users to de- cues from the menus of other performers, pict the conditions in which they want the they can show the system how to react to program to perform an action and the re- those cues. By pressing the eye icon again, sults of that action. users indicate they have finished. The AGENTSHEETS:UNIVERSITY OF COLORADO, system comes with 18 basic performers 1991 [Repenning 1993; Repenning and that users can audition and use in their Ambach 1996]. In AgentSheets (see own creations. Additionally, the system Figure 20), users can create simulations allows users to create new performers by specifying the behavior of sprites in by combining existing performers and a 2-dimensional grid-based world. Sprites teaching them new cues. While Pro- can move to new grid positions, make gramming by Rehearsal does allow users sounds, and change appearance. Users can to access the underlying programming create programs using graphical rewrite languages (Smalltalk), the system was rules; users select conditions (configura- designed to allow nonprogrammers to tions of icons in the world or relative to create educational software without re- each other) and show the system what quiring them to program at the Smalltalk should happen under these conditions by level. moving the agents to their new positions. MONDRIAN: MIT, 1992 [Liebermann In addition, Agentsheets provides tools for 1993]. Mondrian is a programming-by- creating analogies between agents. For ex- demonstration system for drawing and ample, if a user wants a train to follow a graphical editing in which commands are set of train tracks in exactly the same way shown with “domino” icons that depict the that a car follows roads, he or she can use before and after states for that command. an analogy tool to easily specify this. Use To execute a command, users select the of analogies provides an easy way to reuse command icon and then select the object code. or area to which the command should CHEMTRAINS:USWEST ADVANCED TECH- be applied. The user can create new NOLOGIES,UNIVERSITY OF COLORADO, 1993 commands in a storyboarding style by [Bell and Lewis 1993]. ChemTrains is showing how to do each step in the new a pictorial rule-based language that at- command. These steps are displayed at tempts to make it easy for people to the bottom of the screen in comic book create a wide variety of “behaving pic- format with a short caption describing tures”. ChemTrains is similar to Stage- each step. Drawing a rectangle on the cast (see the following) in that users screen would show a box with the new show both the conditions and results of screen state captioned by “rectangle”. a rule through pictures. In ChemTrains, If the user then moves the rectangle, the pictures used to specify conditions and a “move” domino would appear beside results are interpreted as patterns of con- the “rectangle” domino in the definition nections rather than collections of pix- of the new command. New commands els. For example, in simulating an AND created by the user are displayed in the gate, if there is any box with a zero con- same domino style as the commands built nected to the AND gate (from any direc- into the system. In addition, the system tion and any distance away), the output provides speech synthesis capabilities of that gate should become zero. A similar to give an English description of what a statement in Stagecast would only work if command does. the zero connected to the AND gate was

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 111

Fig. 20.Ascreenshot of a traffic light simulation in AgentSheets con- taining two rules. The first rule runs continuously: every three seconds it triggers the second rule. The second rule looks at the current color of the traffic light and changes it to the next one in the sequence green, yellow, red. always in the same relative position to Figure 21). When the simulation is the AND gate. As in Stagecast, the or- started, if a section of the grid matches der of the ChemTrains rules dictates how a condition of one of the rules, the rule they are applied; only the first matched is applied. Stagecast applies only the first rule is applied in each time slot. Addition- rule (in top-to-bottom order) that matches ally, the ChemTrains pattern matcher can a section of the grid. use variables; in ChemTrains, variables are specially marked pictorial elements Specify Actions.Inthese systems, the that can match any element of the sim- user creates programs by using the inter- ulation display. The addition of variables face to specify the desired behavior. The allows users to create a wider range of user does not see any code, but unlike in simulations. programming by demonstration systems, STAGECAST:APPLE COMPUTER, 1995 [Smith the user does not show the computer what et al. 1994]. Stagecast, a commercial to do, he or she selects the program’s version of KidSim (see Figure 21), is actions. an environment for creating simulations. ALTERNATE REALITY KIT:XEROX PARC, Children are presented with a grid-based 1987 [Smith 1987]. The Alternate Real- world in which they can create their own ity Kit (ARK) is an environment in which actors. Users define rules for the simula- users can build interactive simulations. tion by selecting a before condition from Users interact with objects built on a the grid world and then demonstrating physical-world metaphor; each object has how that condition should change (see an image, position, velocity, and can be

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 112 C. Kelleher and R. Pausch

fined events (see Figure 22). Klik N Play’s events are based on collisions between ob- jects, mouse and keyboard input, time, the state of players, and the states of vari- ables and objects in the level. Corel dis- tributed an updated version of Klik N Play that granted users the rights to sell their games under the name Click and Create. EMILE:UNIVERSITY OF MICHIGAN, 1995 [Guzdial 1995]. Emile is a program- ming environment written in Hypercard [Goodman 1987] that allows high school students to create physics simulations (see Figure 23). The environment pro- vides support or scaffolding [Merrill and Fig. 21. This drawing shows an example of how Reiser 1993] that makes the process of users create rules in Stagecast. On the left side are programming (everything from defining the conditions in which each rule should be applied. the problem and breaking it into goals On the right, the results of each rule are shown. In to defining the behavior of a button this drawing, if there is a raindrop with an empty within the interface) easier for beginning space below it, the raindrop should move down. Oth- erwise, if there is a raindrop with an empty space on students. As the students become more its right, it should move right. comfortable with the environment, they can choose to use less support. In influenced by forces. Users can pick up Emile, beginning programmers create pro- objects, move them, drop them, or throw grams by assembling components: but- them using mouse gestures. Users can tons, textfields, and predefined actions. query or change the state of objects by Using menus and dialog boxes, stu- sending messages (represented by but- dents can select one or more actions tons) to those objects. To connect a button that should happen when a given but- to a particular object, the user drops the ton is pressed and fill in any neces- button onto that object. If the object under- sary parameters for those actions. As stands the message the button represents, they become more advanced, students the button “sticks” to the object, otherwise can begin to use mathematical expres- it falls through. Buttons that require a pa- sions, create their own actions by com- rameter have a little “plug” where users bining other actions, and eventually edit can hook up a value for the parameter. HyperTalk (Hypercard’s scripting lan- KLIK NPLAY:EUROPRESS, 1994 [Lionet guage) code themselves. and Lamoureux 1994]. Klik N Play is de- signed to allow the user to create sim- ple level-based games. The application has 4.1.2. Improve Programming Languages. three modes: a storyboard editor which al- The designers of many of the teaching lows the user to see all levels as thumb- languages are concerned with how well nails, a level editor, and an event editor. students can transfer the knowledge The level editor allows the user to se- they gain in the teaching language to lect the background, add predefined ob- more general-purpose languages. Con- jects to the level, and provides users with sequently, the designers of teaching the ability to create their own objects and languages have been hesitant to deviate animations for those objects. Users create very far from these general-purpose animations frame-by-frame with a bitmap languages. However, the systems in this editor and use controls to set the speed category endeavor to empower their users and motion of objects. The event editor to create interesting programs; whether uses a table format and allows the user the users of these systems can transfer to specify actions for a variety of prede- their programming knowledge to more

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 113

Fig. 22.Aview of the event editor in Klik N Play where the user builds a graphical piano program. The user is currently specifying that when the “User clicks with left button on white piano key,” the game should play “sample piano1.” The events are organized in table form based on their effects: all sound events are in the first column, events on the user’s objects, piano keys in this screenshot, begin at column 5. general-purpose languages is not impor- to support the creation of business ap- tant. Consequently, the designers of these plications. It was intended to be usable systems can make changes to standard by novice programmers and readable by programming languages that the authors management. Spoken English influenced of teaching languages might hesitate to many of the programming constructs (see make. Figure 24). The designers also added “noise” words to increase the readability Make the Language More Understand- of the language: ADDXTOYrather than able. These systems include languages ADD X,Y. that were developed with a focus on the LOGO: MIT, 1967 [Papert 1980]. The language and words novices use to de- Logo programming language is a dialect scribe situations. Most previous languages of Lisp with much of the punctuation re- have been developed with a focus on con- moved to make the syntax accessible to sistency between languages or on math- children. It was intended to allow children ematical simplicity. These languages in- to explore a wide variety of topics from stead focus on choosing words that the mathematics and science to language and users of the system understand and can music. The most well-known part of Logo use effectively without having to translate is the Logo turtle which began as a robotic their words in their everyday vocabularies turtle that could draw on the ground. It into the words that the computer language was later replaced by a simulated actor uses for the same concept. in a two-dimensional graphical world that COBOL: DEPARTMENT OF DEFENSE, 1960 can move, turn, and leave trails. The tur- [Sammet 1981]. Cobol is the COmmon tle’s directions are object-centric; if a child Business Oriented Language, designed tells the turtle to “forward 10,” the turtle

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 114 C. Kelleher and R. Pausch

Fig. 23.Aneditor for the Positive Gravity Button. When the mouse goes up, Emile will execute 4 actions: Accelerated Motion 1, Stop Increasing 1, and Display a Value 1 (2 times). At the bottom of the screen, we can see the code that Emile will execute. Underlined text corresponds to parameters (or slots) that the user can fill in using menu options and dialog boxes.

ALICE98: CARNEGIE MELLON UNIVERSITY, 1997 [Conway 1997]. Alice98 is a pro- grammable 3D-authoring tool designed to make authoring interactive 3D-graphical Fig. 24.Aconditional statement in Cobol. Con- worlds accessible to college-level, non- ditionals can use implied subjects and objects as seen in the second and third lines of the conditional science majors. The authoring tool con- statement. sists of a scene-layout editor in which the user can create their opening scene and will move in his own forward direction a script tab in which the user can spec- rather than a direction defined by the ify the behavior of the world. The pro- screen. Many children have been intro- gramming language in Alice is Python duced to programming through making with a few changes suggested by user test- the turtle draw simple pictures. However, ing: it is not case sensitive and 1/2 eval- the Logo language includes a wider variety uates to 0.5 rather than 0. However, Al- of possibilities. Classes of children have ice provides domain-specific commands for written music programs, programs that manipulation of objects in 3D. The struc- translate English to French, and many ture and naming of these domain-specific others. The Logo language is an inter- commands were influenced greatly by preted language with descriptive error user testing. As in Logo, commands uti- messages. For example, if a student typed lize object-centric notation: forward, back- “foward 10” instead of “forward 10” the ward, up, down, left and right are used system would respond with “I don’t know to describe direction. This description is how to foward.” equivalent to XYZ notation but is much

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 115

Fig. 25. All data in Hands is stored in cards which the user can draw from a pile shown on the top right of the screen. All the graphics (flowers and bees) and text on the screen are represented as facedown cards. One card on the right has been flipped to face up so that the user can see and edit its properties. When cards are on the board (in the center of the screen), only the image on their backs is visible. Users of Hands can add code into Handy’s thought bubble by clicking on his picture in the upper-left corner. easier for novices to understand. Simi- animates all changes to the state of the larly, the names of commands are drawn program. from the language that users would choose HANDS: CARNEGIE MELLON UNIVERSITY, to describe those actions; for example, 2001 [Pane 2002]. The Hands system was translate becomes moves, scale becomes designed to allow children in 5th grade resize, and rate becomes speed. Alice com- and older to create games and simulations mands can also be accessed with vary- similar to the ones with which they play ing degrees of detail. At the simplest, (see Figure 25). The design of the sys- bunny.move only needs a direction. The tem was informed by studies of the lan- user can also specify how far bunny should guage that children with no programming move, how long the animation should take, experience use in expressing solutions to what speed he should move at, whether programming problems. The environment he should move in someone else’s coordi- provides a concrete model of computation, nate system, and different interpolation represented by an agent, HANDY the dog, styles. This allows novices to begin by who manipulates a deck of cards. All in- learning a very simple command for mov- formation used in a program is stored on ing the bunny and, as they gain more ex- two-sided cards. The front of each card perience, learn to express greater control contains object-related data; the back dis- over how the bunny moves through addi- plays a picture of the object. The user can tional options. To help users understand place cards on the surface of the table the behavior of their programs, Alice98 which represents the end-users’ view of

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 116 C. Kelleher and R. Pausch the program. It includes queries and ag- ger manipulation, as well as interface ele- gregate operations that reduce the need ments such as buttons, images, and lists. for data structures and iteration through By dragging boxes into a working area lists of items. Children using the Hands and connecting them together, the user system perform better than children us- can create programs. As in Body Elec- ing a version of the Hands system that tric, Fabrik programs are always live so does not include queries and aggregate users can test as they are building. Dur- operations. ing development, user-interface elements and computational elements share screen Improve Interaction with the Language. space. However, once a program is fin- In addition to changing the language and ished, the user can choose to view only the words used to describe programming the interface elements. In addition, fin- commands and constructs, another area ished programs can be used as elements for improvement is in the ways that peo- in subsequent programs so the user can ple interact with language. The systems extend the capabilities of the construction in this category examine different meth- kit. ods for creating programs in ways that FORMS/3: OREGON STATE UNIVERSITY, 1995 are easier for novice programmers to un- [Burnett et al. 2001; Hays and Burnett derstand and less prone to errors. The 2001]. Forms/3 is a visual programming systems use a variety of techniques from language based on the dataflow metaphors to menu selection, paradigm which is designed to give end to physical proximity in order to allow users access to more powerful program- users to express their intentions without ming while maintaining the ease-of- having to type traditional programming use associated with (see statements. Figure 27). In Forms/3, users create cells BODY ELECTRIC: VPL [Blanchard et al. and provide mathematical expressions 1990]. Body Electric was designed as an (which may rely on the values of other authoring tool for a two-person virtual cells) that the system will use to com- reality system. Programs in Body Elec- pute the value of those cells. To extend tric are data driven; raw data from sen- the kinds of programs that users can sors (such as positional sensors on people) write in Forms/3, the system provides can be passed to the representation of the users with the ability to create their virtual world through modules that are own data types (including graphical capable of transforming the data or gen- data types), use a system clock to create erating events. These modules are repre- time-based calculations and animations, sented in the authoring environment as and link spreadsheets together to allow boxes connected by arrows in a flow di- encapsulation of data and functionality. agram. Users can create programs that TANGIBLE PROGRAMMING WITH TRAINS: MIT modify and react to sensor data by send- MEDIA LAB, 1996 [Martin et al. 1999]. ing the sensor data through a sequence of Tangible Programming with Trains is a modules. Programs are always live, allow- train set and collection of active train toys ing the author to immediately see the re- that influence the behavior of the train. sults of changes. This allows worlds to be The Tangible Programming with Trains quickly prototyped, tested, and modified. system was designed to allow children FABRIK:APPLE COMPUTER, 1988 [Ingalls to explore “preprogramming concepts— et al. 1988]. Fabrik is a computational con- causality, interaction, logic, and emer- struction kit in which pieces of function- gence” [Martin et al. 1999] (i.e., a stop sign ality (procedures) appear as boxes with that causes the train to stop or a sign that connectors. These boxes can be wired to- asks the train to turn on its lights). The gether to create a variety of programs (see active train toys and the train can com- Figure 26). The user is supplied with a municate via IR signals so that when the parts bin that includes simple computa- train is close to one of these toys, the train tional elements such as string and inte- will change its behavior appropriately.

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 117

Fig. 26.AFabrik program to create a simple text file editor. In the top-left text field, the user can enter a search string for file names. The user’s string is passed to a file name pattern matcher and then to a GUI list element. The user can then select the file they want to edit. When a file is selected, the name of the file is passed to a module to retrieve its contents, and the contents are passed into a text field for the user to edit.

Children can place these objects around to build programs that control the behav- the path of the train so that it will stop at ior of the object. Programs can change the a station or turn its lights on when it goes position, orientation, size, and appearance through a tunnel. of objects as well as play sounds. Users can ETOYS:DISNEY, 1997 [Kay]. create simple if-statements in their pro- Squeak Etoys are designed to allow chil- gram, but no other standard control struc- dren to learn ideas by “building and tures are included in the Etoys system. playing around with them” [Kay] either Users can trigger object behaviors based through interacting with simulations oth- on a variety of mouse events, or the behav- ers have built or creating their own sim- iors can be started, stepped and stopped ulations (see Figure 28). The Etoys envi- with a set of premade buttons users can ronment provides students with a variety add to their simulations. of premade objects from simple shapes to ALICE99: CARNEGIE MELLON UNIVERSITY trashcans, and a simple drawing tool with [1999]. The developers of Alice98 (see which students can create their own ob- Section 3.1.1) noticed that typing was jects. All objects have viewers that contain difficult for many users. This system is a object-specific information as well as tiles follow-on system to Alice98 that focuses that the student can drag out of the viewer on exploring ways to reduce the amount

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 118 C. Kelleher and R. Pausch

Fig. 27.AForms/3 program which creates a graphical representation of a Person. The value for the is computed with a nested if-statement that selects an appropriate face based on the age (young < 20) and gender of Person. The width and height of the body box are based on the Person’s weight and height. To view or edit the equation associated with a given cell, the user can press the arrow symbol below the bottom-right corner of the cell. of text users have to type. In Alice98, more complex programs, users must still users create both animations and events type. The animation editor can create by typing statements in a programming only fully specified, linear animations. language. In Alice99, users create basic The scripting system was left in place to animation using drag and drop: the user allow advanced users to build complex selects the character of interest from worlds. Alice99 also introduced an event the tree of characters on the left of the editor that allowed users to specify events screen and drags that character into the in a table form in which they selected the animations window. When the user drops event and the animation they wanted to the character in the animations window, trigger in response to that event. a series of menus appear showing the AUTOHAN: UNIVERSITY OF CAMBRIDGE, actions the character can take, such as 2001 [Blackwell and Hague 2001]. The move, turn, resize, and so on, and the op- AutoHAN project grew out of the desire tions for each of those choices; a character to provide a single programming interface can move forward, backward, left, right, for the many home appliances that are and so forth. The drag and drop system in being shipped with customization or pro- Alice99 does not provide support for many gramming features. The goal of the project of the traditional programming constructs is to provide a language and interface present in the Alice98 system—to create that home users can use to program their

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 119

Fig. 28.AnEtoys simulation that makes the LadyBug follow the track. The user has dragged statements from the LadyBug’s viewer (right) into a script (left) so that the LadyBug continually moves forward, turning right when she is over red and left when she is over yellow. The script is currently paused, but if the user pressed the “go” button, the LadyBug would start following the track. appliances to do simple tasks such as later use. The designers proposed two lan- recording a particular TV show, switch- guages for the media cubes: one based on ing on an outside light when the doorbell ontological abstraction, the other based on rings, or starting the coffee pot when the linguistic abstraction. The ontological lan- alarm goes off in the morning. This lan- guage includes event cubes which refer- guage must be usable by people who can ence changes of state in the home, channel operate remote controls. The AutoHAN cubes which grant access to different chan- project elected to create a variety of phys- nels of information, and aggregate cubes ical media cubes for this purpose. At their which allow cubes to be grouped together simplest, they operate as single-button re- to form a set (a set of events to react to, mote controls that can be associated with for example). The linguistic language in- a wide variety of appliances. For example, cludes cubes that are linked to particu- a play cube can be associated with a lar words in English, for example, stop, player by holding it close to the CD player. go, and play. Cubes that support more ab- Once the association has been created, the stract data roles such as variables and user can press the cube’s button to play lists are also included. aCD. The user can later associate that PHYSICAL PROGRAMMING:UNIVERSITY OF same play cube with a VCR and use it MARYLAND, 2002 [Montemayor et al. 2002]. to play a movie. Additionally, the cubes The Physical Programming work de- can be composed together to form pro- scribes a method for children ages 4–6 to grams such as starting the coffee pot when build interactive story spaces using Story- the alarm goes off. These programs can Room Kits that provide sensors and actua- be stored by the AutoHAN system for tors that can be used to augment everyday

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 120 C. Kelleher and R. Pausch objects such as chairs or teddy bears. The JIVE: OTTO-VON-GUERICKE UNIVERSITY OF StoryRoom kits allow children to create MAGDEBURG, 2004 [Hintze and Masuch stories in which objects in the real world 2004]. JiVE is a programming environ- represent characters or elements in the ment inspired by Squeak Etoys that was story the children are telling. Seeking sto- designed to allow children to easily cre- ries in which one character is asking a ate 3D-interactive virtual worlds while series of other characters where to find learning mathematical concepts. The au- an object, character, or piece of informa- thors of the system believe that if chil- tion work very well in this context. The dren draw their own characters, they will Physical Programming method was proto- be more motivated to animate them. In- typed using Wizard of Oz techniques and stead of providing a of 3D-objects, the following tools: a foam hand to indi- JiVE allows users to draw 2-dimensional cate touch, a light for lighting up objects to sketches of characters. The system then draw attention to them, a sound box which inflates these drawings into 3D-objects had a different sound associated with each for the world, using a modification of the side of the box, and a magic wand for users Teddy algorithm [Igarashi et al. 1999]. As to indicate when they were programming in Etoys, all objects have viewers that con- and when they wanted to tell a story using tain information about the object and tiles their augmented story room. To create a the user can drag out to create programs. program, a child associates sensors, actu- While the Etoys system only allows users ators, and props using the magic wand. For to create if-statements, JiVE includes for, example, to have the teddy bear say some- while, and repeat loops. thing when it is touched, the child would Integration with Environment To write tap the hand and the teddy bear to indi- a program in most general-purpose lan- cate that the bear should respond when guages, a user must type their program touched, and one side of the sound box into a text editor, compile the program, fix to indicate which sound should be played any syntax errors, build the program, and when the teddy bear is touched. When the then run it. For a novice programmer, this wand is put away, the StoryRoom goes into is a lot of steps, and the time and effort “story” mode and the rules the child cre- involved in making changes to a program ated are active. can discourage experimentation. The FLOGO: MIT MEDIA LAB, 2001 [Hancock systems in this category integrate the en- 2001]. Flogo is a visual dataflow lan- vironment in which users write programs guage designed to enable children to build with the environment in which users run more complex robotic behaviors with their programs. Many of these systems also lego robotics kits. The designers of the allow users to test the effects of individual system believe that visualizing the tem- program statements so that they can poral structure of a program is helpful experiment while building programs. in understanding how it works (or why BOXER:UNIVERSITY OF CALIFORNIA AT it does not work). The visual dataflow BERKELEY, 1986 [diSessa and Abelson model is well suited to showing the tempo- 1986]. Boxer presents a hierarchical ral structure of a program. Consequently, world composed of boxes that can con- Flogo programs use a visual dataflow tain other boxes (see Figure 29). Rather model. Sensor outputs can be connected than separating the act of programming, in the box and wires style to arithmetic programming is integrated into an en- operations, Boolean tests, and motor con- vironment that a typical person might trols. Flogo programs are always live; a use primarily for text editing and graphi- change in the inputs to the sensors will cal layout. Boxer programs contain three be immediately reflected in the repre- types of boxes: standard boxes which can sentation of the program, making Flogo contain text or program code, data boxes a tinkering-friendly language even when which contain string literals for use in pro- the program a child is working on is grams, and graphics boxes which contain incomplete. graphical displays. The composition of the

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 121

Fig. 29.Aphone number look-up program written in Boxer. If a user enters a name in the “name” box and presses the Function-1 key, Boxer will search through the entries in “list”, another box shown at the top of the screen, and display the phone number associated with that name. boxes has meaning; it indicates that sub- constructs such as the “first card” and procedures are parts of procedures and the “last card,” descriptors that are easily records are part of . In general, understandable to most users. In design- subboxes are only accessible from inside ing the system, Atkinson concentrated a box. The boxes provide the novice pro- on the user’s first experience with the grammer with a simple mechanism for tool. He focused on supporting the user’s abstracting program and data elements. immediate success using Hypercard and Boxes also allow the novice to view pro- tried to reveal features gradually. A gram elements as black boxes that they beginning user could learn to create cards can use in their programs without fully and used text-editing tools before moving understanding them. As users gain ex- on to graphics editing. The user could perience, they can return to these black learn about using the message box as boxes and open them to discover how they a calculator before moving onto placing work. values in fields. By the time the user HYPERCARD:APPLE COMPUTER, 1987 was ready to write a full script, they [Atkinson 1987; Goodman 1987]. would already be familiar with how to Hypercard is described by its creator access information in different parts of Bill Atkinson as “an authoring tool and the interface. a of cassette player for information.” CT: CARNEGIE MELLON, 1988 [Sherwood The application itself allows users to and Sherwood 1988]. This system at- create stacks of cards, somewhat like a tempts to simplify the process of creating Rolodex program, that contain images, graphics-oriented programs by providing text, and buttons. At their simplest, higher-level primitives. Programs are cre- buttons can trigger visual changes, make ated in an integrated environment where sounds, or show a new card. A scripting users can see the results of their pro- language called Hypertalk is provided to grams immediately. The cT environment allow users to build more functionality also provides a method for users to specify into the stacks they author. Spoken shapes using mouse clicks on the screen. English heavily influenced the Hypertalk Finished programs can be executed as sep- language itself; the language provides arate programs.

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 122 C. Kelleher and R. Pausch

VISUAL AGENTALK:UNIVERSITY OF portunities to explore particular domains. COLORADO, 1996 [Repenning 1993; Rather than trying to create full general- Repenning and Ambach 1996]. Visual purpose programming environments, the AgenTalk is a programming environment designers of these systems have tailored based on an approach the designers of the functionality in the programming lan- the system call “Tactile Programming” guages to specific domains. which focuses on allowing users to ma- nipulate code in multiple contexts to aid comprehension, the construction of more 4.2.1. Entertainment. These systems use complex programs, and sharing between programming to support entertaining ac- programmers. The designers of AgenTalk tivities. They use programming models in- believe that users should be able to spired by earlier systems to make pro- drop code pieces (either commands or gramming more realizable to novices and conditional statements) in three contexts: provide activities that the designers be- the program editor, the programming lieve users will find enjoyable. world (the grid-based world in which PINBALL CONSTRUCTION SET:EXIDY SOFT- the program runs), and the collaboration WARE, 1983 [Budge 1983]. The Pinball Con- world. Allowing users to drop code in the struction Set was written in 1983 to allow programming world allows users to test users to design and build their own pin- the behavior of individual pieces of code ball machine simulations (see Figure 30). without running the whole program. This It provided a construction space, a set gives users a way to explore and under- of pinball parts, and bitmap editing ca- stand code that they did not create. Visual pabilities to allow users to build themed AgenTalk also allows users to easily pinball machine simulations. Physical share code with other users through the laws and behaviors were written into each Web. part; each part provided could be seen CHART NART:UNIVERSITY OF COLORADO, as acting on balls that collide with it 1996 [DiGiano 1996]. Chart N Art is a in defined ways. In this system, users graphical editor similar to MacDraw that can program by placing pinball parts in reveals a programming language. As de- well-defined relationships. For example, signers manipulate the interface to cre- users may want to specify that when a ate drawings and charts, the equivalent ball hits a certain target, it is diverted programming statements are printed in a onto a ramp and its path affected by a scrolling history area at the bottom. These magnet. statements can be copied from the his- THE INCREDIBLE MACHINE:SIERRA ENTER- tory area into an interaction pane, edited, TAINMENT [1993]. In the Incredible Ma- and executed. The interface provides oper- chine, the player is given a series of Rube ations on sets of objects as well as single Goldberg style challenges (see Figure 31). objects, allowing designers to learn how to For example, the player may be asked to specify sets of objects to manipulate using construct a way to get a ball to fall into the scripting language. The goal of the in- a basket. Each challenge includes a short terface is to allow designers to automate description and all the parts necessary to the creation of custom designed charts, create the machine described. Players can giving them more control than graphing select parts and position them in the world and charting packages, but removing the and then start the simulation to test their necessity to draw every aspect of the chart machine. When the simulation is running, by hand. the parts respond as they would in the physical world. If users run into trouble, they can ask for hints. More advanced 4.2. Activities Enhanced by Programming users can use a freez-play mode to create The systems in this group look at program- their own machines. ming as a way to enhance activities either WIDGET WORKSHOP:MAXIS [1995]. Wid- by allowing greater control or creating op- get Workshop provides a series of puzzles

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 123

Fig. 30.Ascreenshot of the Pinball Construction Set. On the right is an empty pinball game; on the left are a variety of parts that users can put into their pinball games.

that players attempt to solve by connect- supplies a command center that allows ing different components together using users to test out code and observe its graphical wires. Each puzzle poses a spe- results. cific question (e.g., what colors of light do MINDROVER:COGNITOY [2001]. Mind- you add together to get white) and pro- rover is a commercial game in which the vides a context in which to experiment user is a researcher on Europa, one of with that question (e.g., red, green, and the moons of Jupiter. In the researcher’s blue lights controlled by switches that con- freetime, he or she programs robotic nect to a light box where they are com- rovers to race around hallways and bat- bined). Widget Workshop also provides a tle other rovers. The game allows users free-play mode in which users can create to program their rovers using a drag their own widgets by connecting premade and drop programming system inspired parts together. by a dataflow visual programming model BONGO: MIT MEDIA LAB, 1997 [Begel and The Incredible Machine (see Section 1997]. Bongo enables children to create 4.2.1). Users select prebuilt components their own video games and share them (such as thrusters and steering wheels) with others on the Web. Bongo builds and sensors, place them in a limited num- upon Starlogo (see Section 4.2.2) and adds ber of slots on their rovers, and wire the primitives for playing sounds, changing components and sensors together to give shapes, and detecting collisions between their vehicles certain behaviors. The pro- characters on the screen. It customizes gramming model is similar to the box and Starlogo for use in the domain of games wires approach seen in Fabrik, Flogo, and programming. High-level movement of Body Electric. Wires contain information objects in the system can be done using about when signals are sent from sen- drag and drop but procedures are cre- sors to components and the actions trig- ated with text-based programming. Bongo gered by those signals. Boolean gates are

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 124 C. Kelleher and R. Pausch

Fig. 31.Aneasy challenge in The Incredible Machine: the player needs to help Mel (top left) get back to his house. The puzzle has been solved by positioning the grey pipe, ramp, and a trampoline so that Mel will go through the pipe, slide down the ramp, and bounce off the trampoline and over the barrier to get home. provided to allow users to create more simple of triples. Each triple complex behaviors. represents a relationship, for example, “Fido isa dog”. The language provides 4.2.2. Education. These systems use 10 commands that allow students to programming to allow users to build, store triples, remove triples, test for re- explore, and experiment with models lationships via pattern matching, define from different domains of knowledge to procedures, iterate through triples, and gain a stronger understanding of those view and edit procedures. Students are models. The programming languages are able to quickly create simple models of tailored for these specific domains. human memory and reasoning, similar to SOLO: THE OPEN UNIVERSITY, 1983 those discussed in introductory psychol- [Eisenstadt 1983]. Solo is a Logo- ogy classes, and use these programs to inspired, interpreted textual program- reason about how cognition works. ming language designed for cognitive psy- GRAVITAS:THE OPEN UNIVERSITY, 1992 chology modeling. The typical psychology [Sellman 1992]. Gravitas is an object- student has little computer experience, oriented discovery-learning environment no programming experience, occasional that allows students to experiment with access to a computer, and often works Newtonian Gravitation. The environment on projects in groups. The Solo language includes both a graphical interface con- provides psychology students with a trolled by the mouse and a textual Logo- simple way to model cognitive processes based programming interface. Students through accessing and manipulating a can control the x and y position, x

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 125 and y velocity, x and y accelerations, a workspace where information can be and the mass of the spherical objects worked upon (i.e., short-term memory), in the world. Students typically start and an executive component that carries with the graphical interface to Gravi- out processing, input, and output. Data is tas, and then, as they gain more ex- represented with fact cards that typically perience, they progress to typing Logo represent relationships between entries commands. similar to a typical spreadsheet. Programs STARLOGO: MIT MEDIA LAB, 1996 are expressed on instruction cards using [Resnick 1996]. Starlogo is a pro- queries for entries on cards and arrows to grammable modeling environment indicate what to do when entries are found designed to allow students to explore de- or not. The execution model is explained centralized systems such as ant colonies using a dog named Fido who performs and traffic patterns. Users can write programs according to a few simple rules. simple rules that control thousands of ob- The authors designed Fido to be similar jects and observe the patterns that arise to the Logo turtle in the sense that he as a result of these rules. The Starlogo gives students a physical being to imagine programming language is based on Logo executing their programs, increasing (see Section 4.1.2.). However, instead of the likelihood that they will be able controlling a single turtle, users control to accurately simulate their programs thousands of turtles. The Starlogo turtles on paper. In addition, the environment have improved senses: they can detect provides a comic strip representation of each other, nearby turtles, and scents the execution of each program—by double in the world. Each pixel in the world clicking on a cell in the comic strip, at has additional capabilities. Rather than student can view the related part of the containing a single piece of information program. (color), each pixel is modeled as a turtle that cannot move; it can contain an arbi- trary amount of information. Pixels in the 5. ADDITIONAL SYSTEM INFORMATION world can affect the state of other pixels, causing growth or dispersal of scent, for We placed systems in our taxonomy based example. on the primary problem that a particu- HANK:THE OPEN UNIVERSITY, 1998 lar system was trying to address. How- [Mulholland and Watt 1998]. Hank is a ever, many of the systems described in visual programming language designed this article have incorporated ideas drawn for the same audience as Solo, psychology from earlier systems. In this section, we students who are constructing cognitive try to pinpoint some of the most influ- models of human behavior. Consequently, ential systems, identify which approaches the Hank language was designed with five to making programming more accessible goals in mind: support the creation of cog- each system has incorporated, and pro- nitive models; consider the requirements vide information about which program- of the non-programmer; support group ming constructs are included. work; clearly show the execution path; and support paper-based use of the language. 5.1. System Influences Based on findings that spreadsheets tend to allow a number of interested people to Table I attempts to provide some insight understand how the spreadsheet is being into which systems have most influenced developed, Hank is a spreadsheet-based the design of later programming systems language. The architecture of Hank is for novice programmers using the num- similar to the information-processing ber of citations. The system with the most architectures taught to psychology stu- citations (from papers referenced by this dents. There are three components: a survey) appears first. Underneath the sys- database where information can be stored tem name is the list of all references to and represented (i.e., long-term memory), it.

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 126 C. Kelleher and R. Pausch System Influences Table I.

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 127

5.2. System Attributes to explain the world in which programs execute and what actions are possible Each system appears in our taxonomy only within those worlds, (ii) debugging sup- once but many have built on the lessons port, (iii) choosing commands with a phys- of systems that have preceded it. Table II ical interpretation (for example, move for- attempts to show the major design influ- ward or turn right) so that users can “act ences, including those that were not the out” their programs, (iv) allowing users primary contribution of the system. The to make changes to a running program table is also intended to address the fol- so that users can immediately see the ef- lowing questions. fects of those changes (liveness), and (v) (1) What style of programming does the ability to generate example programs the programming environment or lan- that correspond to users’ interface actions. guage support? The systems in the tax- (6) Does the programming environment onomy fell into six categories: procedural, attempt to prevent syntax errors in any functional, object-oriented, object-based, way? Environments help to prevent users event-based, and state-machine based. from making syntax errors by (i) using the (2) What programming constructs are shape of objects to suggest to users what available? We categorized each program- program elements can be connected to- ming language as having a particular pro- gether (physical shape affordance), (ii) al- gramming construct only if the language lowing users to select from valid options included a single statement corresponding based on their current position within the to that construct. This excludes languages program, (iii) using syntax directed edit- which do not explicitly support a given ing, (iv) allowing users to drop graphical construct even if users can replicate the objects only in places where they would behavior of that construct using a combi- be syntactically correct, and (v) provid- nation of other elements in the language. ing better syntax error messages to enable For example, in a system that does not in- users to more easily recover from syntax clude a “for” loop, a user can create the be- errors that do occur. havior of a “for” loop using a “while” loop (7) Have the designers of the language and a variable. This system would be clas- made any explicit attempt to make the sified as supporting “while” loops but not language easier to learn? Language de- “for” loops. signers used a number of techniques to (3) How does code look in the program- make programming languages easier for ming environment or language? The sys- novices to learn. These included (i) lim- tems in our taxonomy represent programs iting the domain so that there are fewer using text, pictures, flow charts, anima- commands for users to learn, (ii) select- tion, forms users can fill in, finite-state ing user-centered keywords, (iii) remov- machines, and physical objects users can ing unnecessary punctuation, (iv) making manipulate. statements in the programming language (4) What actions do users take to con- as close to natural language as possible, struct programs? Users can construct pro- and (v) removing any redundancy in the grams by typing code, assembling graphi- language. cal objects, demonstrating actions through (8) Does the environment support users an interface, selecting from valid options collaborating on programs? Environments or filling values into a form, and assem- enabled three types of collaboration be- bling physical objects. tween users (i) side-by-side-based collab- (5) Does the programming environment oration in which two or more users were provide additional support to enable users manipulating the same program on com- to better understand the behavior of their puters that were located in the same room, programs? Environments in our survey (ii) networked-shared manipulation in used several techniques to help users un- which users were in different locations but derstand the behavior of their programs. connected to a common network and could These included (i) back stories designed collaborate while building a program,

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 128 C. Kelleher and R. Pausch

Table II. System Attributes

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 129

Table II. (Continued)

(Continued)

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 130 C. Kelleher and R. Pausch

Table II. (Continued)

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 131 and (iii) networked-shared results in for interacting with technology in daily which users were in different location life. but connected to a common network and could share completed programs or pro- 6.1. Mechanical Barriers to Programming gram fragments. (9) What were the primary considera- Most of the programming systems built for tions behind what the authors of the system children and novice adults have focused envisioned users creating with it? The sys- on making the mechanics of programming tems in the taxonomy fell into three cate- more manageable. Systems have removed gories (i) fun and motivating systems were unnecessary syntax, designed languages designed to support a task the creators of that are closer to spoken English, intro- the system believed users would find en- duced programming in visible contexts joyable, (ii) useful systems were designed (such as the Logo turtle) in which students to enable users to solve a particular type can see the immediate results of their com- of problem, (iii) educational systems were mands, and explored alternatives to typ- created specifically to aid in teaching ei- ing programs. Using these ideas, it is pos- ther programming or another topic. sible to create a system that will allow a wider audience of people to begin pro- gramming. While these systems do not 6. SUMMARY AND FUTURE DIRECTIONS take all of the challenges out of program- The systems presented in this article have ming, they can allow students to focus tried to make programming accessible in on the logic and structures involved in three main ways namely, by simplifying programming rather than worrying about the mechanics of programming, by provid- the mechanics of writing programs. How- ing support for learners and by providing ever, even with these improvements to students with motivation to learn to pro- a beginner’s first programming experi- gram. The majority of the systems have fo- ence, there are a number of questions that cused on the mechanics of programming. remain. Clearly, beginners need to feel that they Many of the teaching languages have can make progress in learning to program. been heavily influenced by the prevalent However, pure difficulty is not the only general-purpose languages of their time. reason that people hesitate to learn to pro- Designers of these systems chose to make gram. There are a variety of sociological the programming constructs and syntax factors (including students not seeing the very similar to those of the general- relevance of programming or perceiving purpose languages to ease the transition computer science as being a socially iso- from teaching languages to general- lating career path) that can prevent people purpose languages. While it seems obvi- from learning to program. Creating envi- ous that students need to understand the ronments that address some of these soci- parallels between the programming con- ological barriers to programming by sup- structs in teaching and general-purpose porting learners or providing interesting languages, it is not clear how closely and reasons to program have the potential to in what ways teaching languages must attract a more diverse group of people to resemble general-purpose languages. We the computer science field. If the popula- can now more easily introduce beginners tion of people creating software is more to programming; perhaps it is time to be- closely matched to the population using gin studying the intermediate program- software, the software designed and re- mer, someone who has been introduced to leased will probably better match users programming through a system designed needs. In addition to the potential bene- for beginners and wants to apply that ex- fits to society of having a diverse computer perience to learning a general language. science population, we believe that learn- What are the hardest aspects of that tran- ing to program benefits individuals both sition and how are those aspects affected as a mode of thought and as preparation by the teaching system? What are the

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 132 C. Kelleher and R. Pausch trade-offs between presenting issues of texts for programming that are relevant syntax and program expression earlier or to under-represented groups in computer later in the process? science.

6.2. Sociological Barriers to Programming In some ways, sociological barriers can be APPENDIX harder to address than mechanical ones A. SYSTEM LIST because they are harder to identify and some cannot be addressed through pro- Below is an alphabetical list of the sys- gramming systems. However, by studying tems included in this survey article. Each particular groups of people who choose not system name is followed by the section in to learn to program, identifying the rea- which the system is discussed and its Web sons behind their decisions, and trying to page (if applicable). address those reasons in our programming AgentSheets: 4.1.1 under Demonstrate systems and textbooks, we may be able to Conditions and Actions, agentsheets.com attract a broader audience of people to pro- Alice 2: 3.1.1 under Find Alternatives to gramming and computer science. The sys- Typing Programs – 1. Construct Programs tems in the taxonomy have identified, and Using Graphical and Physical Objects, are beginning to address, two kinds of soci- www.alice.org ological barriers to programming, the lack Alice 98: 4.1.2 under Make the Language More Understandable, www.alice.org of a social context for programming, and Alice 99: 4.1.2 under Improve Interaction with the lack of compelling contexts in which to the Language. www.alice.org learn programming. AlgoArena: 3.2.2 AlgoBlock: 3.2.1 under Side by Side 6.2.1. Social Support. It can be easier Alternate Reality Kit: 41.1 under Specify and more fun to learn with a group of Actions people. Moose Crossing [Bruckman 1997] Atari 2600 BASIC: 3.1.3 under Tracking and, later Pet Park [DeBonte 1998] added Program Execution support for social interaction so that stu- AutoHAN: 4.1.2 under Improve Interaction with the Language dents using these systems could share BASIC: 3.1.1 under Simplify Entering Code – projects, provide examples for each other, 1. Simplify the Language and chat. Future communities might pro- Blue: 3.1.1 under Simplify Entering Code – 1. vide support for students helping each Simplify the Language, www.bluej.org other learn the interface and program- Blue Environment/BlueJ: 3.1.2 under Making ming constructs, support students work- New Models Accessible, www.bluej.org ing on projects together, or try to capture Body Electric: 4.1.2 under Improve Interaction and strengthen the positive feedback that with the Language members of the community give to each Bongo: 4.2.1 other through looking at and using each Boxer: 4.1.2 under Integration with Environment other’s work. Chart N Art: 4.1.2 under Integration with Environment 6.2.2. Reasons to Program. Several sys- ChemTrains: 4.1.1 under Demonstrate tems have tried to provide motivating Conditions and Actions contexts such as building robots, fight- Cleogo: 3.2.1 under Networked Interaction ing battles, and constructing machines COBOL: 4.1.2 under Make the Language More in which to learn programming. While Understandable these systems have been very effective Cornell Program Synthesizer 3.1.1 under Simplify Entering Code – 2. Prevent Syntax for a segment of the population, they do Errors not have broad appeal. What program- cT: 4.1.2 under Integration with Environment ming activities can we provide that will Curlybot: 3.1.1 under Find Alternatives to interest girls or artistic or musical stu- Typing Programs – 2. Create Programs dents? Future systems could provide con- Using Interface Actions

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 133

Drape: 3.1.1 under Find Alternatives to Logo: 4.1.2 under Make the Language More Typing Programs – 1. Construct Programs Understandable Using Graphical or Physical Objects, LogoBlocks: 3.1.1 under Find Alternatives to www.cs.uu./people/markov/kids/ Typing Programs – 1. Construct Programs Electronic Blocks: 3.1.1 under Find Using Graphical or Physical Objects, Alternatives to Typing Programs – 2. llk.media.mit.edu/projects/ Construct Programs Using Graphical or cricket/software/index.shtml Physical Objects, www.itee.uq.edu. MacGnome: 3.1.1 under Simplify Entering au/∼peta/ ElectronicBlocks.htm Code – 2. Prevent Syntax Errors Emile 4.1.1 under Specify Actions Magic Forest: 3.1.1 under Find Alternatives to Fabrik: 4.1.2 under Improve Interaction with Typing Programs – 1. Construct Programs the Language Using Graphical or Physical Objects, Flogo: 4.1.2 under Improve Interaction with ns.logotron.co.uk/magicforest the Language Mindrover: 2.2.1, www.mindrover.com Forms/3 4.1.2 under Improve Interaction with Mondrian: 4.1.1 under Demonstrate Actions in the Language, http://web.engr.oregonstate. the Interface edu/∼burnett/Forms3/forms3.html MOOSE Crossing: 3.2.1 under Networked GNOME: 3.1.1 under Simplify Entering Interaction, www.cc.gatech.edu/elc/moose- Code – 2. Prevent Syntax Errors crossing GRAIL: 3.1.1 under Simplify Entering Code – My Make Believe Castle: 3.1.1 under Find 1. Simplify the Language Alternatives to Typing Programs – 1. Gravitas: 4.2.2 Construct Programs Using Graphical or HANDS: 4.1.2 under Make the Language Physical Objects, www.microworlds.com More Understandable Pascal: 3.1.2 under New Programming Hank: 4.2.2, kmi.open.ac.uk/projects/hank/ Models Hypercard: 4.1.2 under Integration with PetPark: 3.2.1 under Networked Interaction Environment PetPark Blocks: 3.1.1 under Find Alternatives Incredible Machine, The: 4.2.1 to Typing Programs – 1. Construct Programs JiVE, 2.1.2 under Improve Interaction with Using Graphical or Physical Objects the Language Physical Programming: 4.1.2 under Improve JJ: 3.1.1 under Simplify Entering Code – 1. Interaction with the Language Simplify the Language, www.publicstatic- Pict 3.1.1 under Find Alternatives to Typing voidmain.com Programs – 1. Construct Programs Using J Karel: 3.1.2 under Making New Models Graphical or Physical Objects Accessible, www.cs.tufts.edu/comp/ Pinball Construction Set: 4.2.1 10F/JKarel.htm Play: 3.1.1 under Find Alternatives to Typing Josef: 3.1.3 under Make Programming Programs – 1. Construct Programs Using Concrete: Actors in Microworlds Graphical or Physical Objects Kara: 3.1.2 under New Programming Models, Playground: 3.1.2 under New Programming www.educeth.ch/compscience/ karatojava/ Models Karel: 1.1.3 under Make Programming Programming by Rehearsal: 4.1.1 under Concrete: Actors in Microworlds Demonstrate Actions in the Interface Karel++: 3.1.2 under Making New Models Prototype 2: 3.1.3 under Models of Program Accessible, csis.pace.edu/∼bergin/ Execution karel.html Pygmalion: 4.1.1 under Demonstrate Actions Karel J Robot: 3.1.2 under Making New in the Interface Models Accessible, csis.pace.edu/∼bergin/ Roamer: 3.1.1 under Find Alternatives to KarelJava2ed/Karel++JavaEdition.html Typing Programs – 1. Create Programs Klik N Play: 4.1.1 under Specify Actions, Using Interface Actions, www.clickteam.com/English/ www.valiant-technology.com/ LegoSheets: 3.1.1 under Find Alternatives to Robocode: 3.2.2, robocode.alphaworks. Typing Programs – 2. Create Programs ibm.com Using Interface Actions Robot Odyssey: 3.2.2 Leogo: 3.1.1 under Find Alternatives to Typing Rocky’s Boots: 3.2.2, www. Programs – 3. Provide Multiple Methods for warrenrobinett.com/rockysboots Creating Programs Show and Tell: 3.1.1 under Find Alternatives Liveworld: 3.1.2 under Making New Models to Typing Programs – 1. Create Programs Accessible Using Interface Actions

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 134 C. Kelleher and R. Pausch

Smalltalk: 3.1.2 under New Programming BEGEL,A. 1997. Bongo: A kids’ programming en- Models vironment for creating video games on the Web. SOLO: 4.2.2 Electrical Engineering and Computer Science SP/k: 3.1.1 under Simplify Entering Code – 1. Department, MIT, Cambridge, MA. Simplify the Language BEGEL,A. 1996. LogoBlocks: A graphical program- Squeak eToys: 4.1.2 under Improve ming language for interacting with the world. Electrical Engineering and Computer Science Interaction with the Language, www. Department. MIT, Cambridge, MA. squeakland.org BELL,B.AND LEWIS,C.1993. ChemTrains: A Stagecast: 4.1.1 under Demonstrate language for creating behaving pictures. In Conditions and Actions, www. stagecast.com IEEE Symposium on Visual Languages, 188– Starlogo: 4.2.2, education.mit.edu/starlogo/ 195. Tangible Programming Bricks: 3.2.1 under BERGIN,J.,STEHLIK, M., ROBERTS,J.,AND PATTIS, Side by Side R. 2001. Karel J. Robot: A gentle introduc- Tangible Programming with Trains: 4.1.2 tion to the art of object-oriented programming. under Improve Interaction with the Available at http://csis.pace.edu/∼bergin/ Karel- Language Java2ed/Karel++JavaEdition.html. Thinkin’ Things Collection 3: Half Time: 3.1.1 BERGIN,J.,STEHLIK, M., ROBERTS,J.,AND PATTIS,R. under Find Alternatives to Typing 1996. Karel++: A Gentle Introduction to the Art Programs – 1. Construct Programs Using of Object-Oriented Programming.John Wiley & Graphical or Physical Objects, Sons, Inc., New York, NY. www.riverdeep.net/edmark/ BLACKWELL,A.AND HAGUE,R. 2001. AutoHAN: An architecture for programming the home. TORTIS-Button Box 3.1.1 under Find In IEEE Symposia on Human-Centric Comput- Alternatives to Typing Programs – 2. ing Languages and Environments, Stresa, Italy. Create Programs Using Interface 150–157. Actions BLANCHARD,C.,BURGESS,S.,HARVILL,Y.,LANIER, TORTIS-Slot Machine: 3.1.1 under Find J., LASKO, A., OBERMAN, M., AND TEITEL,M. Alternatives to Typing Programs – 1. 1990. Reality built for two: A virtual reality Construct Programs Using Graphical or tool. In Symposium on Interactive 3D Graphics, Physical Objects Snowbird, UT. 35–36. Turing: 3.1.1 under Simplify Entering Code – BRUCKMAN,A. 1997. MOOSE crossing: Construc- 1. Simplify the Language, tion, community, and learning in a net- www.holtsoft.com/turing/ worked virtual world for kids. MIT Media Lab, Turingal: 3.1.3 under Make Programming Cambridge, MA. Concrete: Actors in Microworlds BRUSILOVSKY,P. 1991. Turingal—the language for Toon Talk: 3.1.3 under Models of Program teaching the principles of programming. In the 3rd European Logo Conference,Parma, Italy. Execution, www.toontalk.com 423–432. Visual AgenTalk, 4.1.2 under Integration with BRUSILOVSKY,P.,CALABRESE, E., HVORECKY,J., Environment KOUCHNIRENKO, A., AND MILLER,P.1997. Widget Workshop: 4.2.1 Mini-languages: A way to learn programming principles. Educat. Inform. Technol., 2,1,65–83. BUDGE,B. 1983. Pinball Construction Set, Exidy ACKNOWLEDGMENTS Software. BURNETT, M., ATWOOD,J.,DJANG, R., GOTTFRIED, H., We would like to thank the many authors of many REICHWEIN,J.,AND YANG,S. 2001. Forms/3: A of the systems included in this survey for their first-order visual language to explore the bound- comments and clarifications, our anonymous review- aries of the spreadsheet paradigm. J. Funct. Pro- ers for their helpful suggestions, the members of gram. 11,2,155–206. the Stage 3 Research group at Carnegie Mellon for CARNEGIE MELLON UNIVERSITY. 2003. Alice 2. Avail- their support and assistance, and, especially, Peter able at www.alice.org. Scupelli who spent more than a few hours trying to CARNEGIE MELLON UNIVERSITY. 1999. Alice 99. make our diagrams interpretable. Available at www.alice.org. CATLIN,D. 1989. Roamer. Valiant Technologies. Available at www.valiant-technology.com. REFERENCES CHENG,A. 1998. A graphical programming inter- face for a children’s constructionist learning ATKINSON,B. 1987. Hypercard. Apple Computer. environment. Electrical Engineering and Com- BECKER,B. 2004. Robots: Learning to Program puter Science Department. MIT, Cambridge, with Java. Self-published. Waterloo. MA.

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 135

COCKBURN,A.AND BRYANT,A. 1998. Cleogo: Col- GOODMAN,D.1987. The Complete Hyper- laborative and multi-metaphor programming card Handbook. Bamtam Computer Books, for kids. In the 3rd Asia Pacific Conference Birmingham, AL. on Computer Human Interaction (Japan). 187– GUZDIAL,M. 1994. Software-realized scaffolding to 192. facilitate programming for science learning. In- COCKBURN,A.AND BRYANT,A. 1997. Leogo: An equal teract. Learn. Environ. 4,1,1–44. opportunity user interface for programming. J. HANCOCK,C. 2001. Children’s understanding of Visual Lang. Comput. 8, 5-6. 601–619. process in the construction of robot behaviors. COGNITOY. 2001. Mindrover. In Symposium on Varieties of Programming Ex- CONWAY,M. 1997. Alice: Easy-to-learn 3D script- periences, Seattle, WA. ing for novices. School of Engineering and HARTMANN,W.,NIEVERGELT,J.,AND RIECHERT,R. 2001. Applied Science, University of Virginia, Kara: Finite state machines, and the case for Charlottesville, VA. programming as part of general education. In CYPHER,A. 1993. Watch what I do: Programming IEEE Symposia on Human Centric Comput- by Demonstration. MIT Press, Cambridge, MA. ing Languages and Environments, Stresa, Italy. 135–141. DEBONTE,A. 1998. Pet Park: A virtual learning world for kids. Electrical Engineering and Com- HAYS,J.AND BURNETT,M. 2001. Guided tour of puter Science Department. MIT, Cambridge, Forms/3. Available at http://web.engr. oregonst- MA. ate.edu/∼burnett/Forms3/Tour/tour.html. DIGIANO,C.1996. Self-disclosing design tools: HINTZE,J.AND MASUCH,M. 2004. Designing a 3D An incremental approach toward end-user authoring tool for children. In the 2nd Inter- programming. Computer Science Department. national Conference on Creating, Connecting University of Colorado at Boulder, Boulder, and Collaborating through Computing,Kyoto, CO. Japan. 78–85. DIJKSTRA,E.W. 1969. Structured programming. In HOLT,R.AND CORDY,J. 1988. The turing program- Proceedings of Software Engineering Technolo- ming language. Commun. ACM 31, 12, 1410– gies, Rome, Italy. 1423. DISESSA,A.AND ABELSON,H. 1988. Boxer: A re- HOLT, R., WORTMAN,D.,BARNARD,D.,AND CORDY, constructable computational medium. Commun. J. R. 1977. SP/k: A system for teaching com- ACM, 29,9,859–868. puter programming. Commun. ACM 20,5,301– 309. EDMARK CORPORATION. 1995. Thinkin’ Things Col- lection 3: Half Time. IGARASHI,T.,MATSUOKA,S.,AND TANAKA,H. 1999. Teddy: A sketching interface for 3D freeform de- EISENSTADT,M. 1983. A user-friendly software en- vironment for the novice programmer. Commun. sign. In the International Conference on Com- ACM, 26, 12, 1058–1063. puter Graphics and Interactive Techniques. ACM Press, 409–416. FENTON,J.AND BECK,K. 1989. Playground: An object-oriented simulation system with agent INGALLS,D.,WALLACE,S.,CHOW,Y.-Y., LUDOLPH, rules for children of all ages. In Proceedings F., AND DOYLE,K.1988. Fabrik: A visual on Object-Oriented Programming Systems, Lan- programming environment. In Object Oriented guages and Applications, New Orleans, LA. 123– Programming Systems, Languages, and Appli- 137. cations, San Diego, CA. 176–190. FINZER,W.AND GOULD,L. 1984. Programming by KAHN,K. 1996. Drawings on napkins, video-game rehearsal. Xerox Palo Alto Research Center, Palo animation, and other ways to program comput- Alto, CA. ers. Commun. ACM 43,3.104–106. FREI,P.,SU,V.,AND ISHII,H. 2000. Curlybot: De- KATO,H.AND IDE,A. 1995. Using a game for signing a new class of computational toys. In social setting in a learning environment: the Conference on Human Factors in Computing AlgoArena—A tool for learning . Systems, Los Angeles, CA. 129–136. In Computer Supported Collaborative Learning, Bloomington, IN. 195–199. GILLIGAN,D. 1998. An exploration of programming by demonstration in the domain of novice pro- KAY,A. 1993. The early history of smalltalk. ACM gramming. Comput. Science.Victoria Univer- SIGPLAN Notices 28,3,69–96. sity, Wellington, Victoria, 176. KAY,A.Etoys and simstories in squeak. Available at GINDLING,J.,IOANNIDOU, A., LOH,J.,LOKKEBO,O., http://www.squeakland.org/author/etoys.html. AND REPENNING,A. 1995. LEGOsheets: A rule- KIMURA,T.,CHOI,J.,AND MACK,J. 1990. Show and based programming, simulation and manipula- tell: A visual programming language. In Glinert, tion environment for the LEGO programmable E. P., Ed. Visual Programming Environments: brick. In IEEE Symposium on Visual Languages, Paradigms and Systems. IEEE Computer Sci- Darmstadt, Germany, 172–179. ence Press, 397–404. GLINERT,E.AND TANIMOTO,S. 1984. Pict: An in- KOLLING, M., QUIG,B.,PATTERSON, A., AND ROSEN- teractive graphical programming environment. BERG,J. 2003. The BlueJ system and its ped- Computer 17, 11, 7–25. agogy. J. Comput. Science Educ., Special Issue of

ACM Computing Surveys, Vol. 37, No. 2, June 2005. 136 C. Kelleher and R. Pausch

Learning and Teaching Object Technology 12,4, cal programming: Designing tools for children 249–268. to create physical interactive environments. In KOLLING,M.AND ROSENBERG,J. 1996a. Blue—A the Conference on Human Factors in Computing language for teaching object-oriented program- Systems, Minneapolis, MN. 299–306. ming. In Proceedings of the 27th SIGCSE Techni- MOTIL,J.AND EPSTEIN,D.1998. JJ: A lan- cal Symposium on Computer Science Education, guage designed for beginners (less is more). Philadelphia, PA. 190–194. Available at http://www.publicstaticvoidmain. KOLLING,M.AND ROSENBERG,J. 1996b. An object- com/JJ A Language Designed For Begin-ners oriented program development environment for LessIsMore. pdf. the first programming course. In Proceedings MULHOLLAND,P.AND WATT,S.1998. Hank: A of the 27th SIGCSE Technical Symposium on friendly cognitive modelling language for Computer Science Education, Philadelphia, PA. psychology students. In IEEE Symposium on 83–87. Visual Languages, Nova Scotia, 210–216. KURTZ,T. 1981. BASIC. In Wexelblat, R., Ed. NELSON,M.2001. Robocode, IBM Advanced History of Programming Languages. Academic Technologies. Available at http://robocode. Press, New York, 515–537. alphaworks.ibm.com/home/home.html. LEGO SYSTEMS,INC. 1998. Lego Mindstorms NORMAN,D.1986. Cognitive engineering. In Robotics Invention System. Available at http:// Norman, D. and Draper, S., Eds. User Centered mindstorms. lego.com. System Design: New Perspectives on Human- LIEBERMANN,H.1993. Mondrian: A teachable Computer Interaction.Lawrence Erlbaum graphical editor. In Cypher, A. ED. Watch What Associates, Hillsdale, NJ. I Do: Programming by Demonstration. MIT OVERMARS,M.Drape: Drawing programming environ- Press, Cambridge, MA. ment. Available at http://www.cs.uu.nl/people/ LIONET,F.AND LAMOUREUX,Y. 1994. Klik and Play. markov/kids. Maxis. PANE,J. 2002. A programming system for children LOGO COMPUTER SYSTEMS,INC. 1995. My Make that is designed for usability. Comput. Science, Believe Castle. Carnegie Mellon University, Pittsburgh, PA. LOGO COMPUTER SYSTEMS,INC. 1995. Availablle at www.microworlds.com. PAPERT,S. 1980. Mindstorms: Children, Comput- ers, and Powerful Ideas. Basic Books, New York, LOGOTRON. 2002. Magic Forest. NY. MARTIN,F.,COLOBONG,G.L.,AND RESNICK,M. 1999. PATTIS,R. 1981. Karel the Robot: A Gentle Intro- Tangible programming with trains. Available at duction to the Art of Programming with Pascal. http://el.www.media.mit.edu/projects/trains. John Wiley & Sons, New York, NY. AXIS M . 1995. Widget Workshop. PERLMAN,R.1976. Using computer technology MCIVER,L. 1999. Grail: A zeroth programming to provide a creative learning environment language. In Conference in Computers in for preschool children. Electrical Engineer- Education. ing and Computer Science, Department MIT, MCIVER,L. 2001. Syntactic and semantic issues Cambridge, MA. in introductory programming education. Com- REPENNING,A. 1993. Agentsheets: A tool for build- put. Science Softw. Eng., Monash University, ing domain-oriented visual programming. In Melbourne, Australia. the Conference on Human Factors in Computing MCNERNEY,T. 2000. Tangible programming bricks: Systems, 142–143. An approach to making programming accessible REPENNING,A.AND AMBACH,J. 1996. Tactile pro- to everyone. MIT Media Lab, Cambridge, MA. gramming: A unified manipulation paradigm MERRILL,D.C.AND REISER,B.J. 1993. Scaffolding supporting program comprehension, compo- the acquisition of complex skills with reasoning- sition, and sharing. In IEEE Symposium on congruent learning environments. In Workshop Visual Languages, Boulder, CO. 102–109. in Graphical Representations, Reasoning, and REPS,T.AND TEITELBAUM,T. 1989. The Synthesizer Communication from the World Conference on Generator: A System for Constructing Language- Artificial Intelligence in Education. University Based Editors. Springer-Verlang, New York, NY. of Edinburgh, 9–16. RESNICK,M.1996. StarLogo: An environment MILLER,P.,PANE,J.,METER,G.,AND VORTHMANN,S. for decentralized modeling and decentralized 1994. Evolution of novice programming envi- thinking. In Human Factors in Computing ronments: The Structure Editors of Carnegie Systems,Vancouver, BC. 11–12. Mellon University. Interac. Learn. Environ. 4,2, ROBINETT,W. 1979. Atari 2600 Basic Cartridge. 140–158. Atari Co. MINSKY,M. 1986. The Society of Mind. Simon and ROBINETT,W.AND GRIMM,L.1982. Rocky’s Schuster, New York, NY. Boots/Robot Odyssey. The Learning Co. MONTEMAYOR,J.,DRUIN, A., FARBER, A., SIMMS,S., SAMMET,J. 1981. The early history of cobol. In CHURAMAN,W.,AND D’AMOUR,A. 2002. Physi- Wexelblat, R. Ed. History of Programming

ACM Computing Surveys, Vol. 37, No. 2, June 2005. Lowering the Barriers to Programming 137

Languages. Academic Press, New York, NY. Supported Collaborative Learning, Blooming- 199–241. ton, IN. 349–355. SELLMAN,R. 1992. Gravitas: An object-oriented TANIMOTO,S.AND RUNYAN,M. 1986. Play: An iconic discovery learning environment for Newtonian programming system for children. In Chang, gravitation. In Proceedings of the East-West Con- S. K., Ichikawa, T. and Ligomenides, P. A., Eds. ference on Human-Computer Interaction. 31– Visual Languages. Plenum Publishing Corp. 41. 191–205. SHERWOOD,B.AND SHERWOOD,J.1988. The cT TEITELBAUM,T.AND REPS,T. 1981. The Cornell Language. Stipes Publishing Company, Cham- program synthesizer: A syntax-directed pro- paigne, IL. gramming environment. Commun. ACM, 24,9, SIERRA GAMES. 1993. The Incredible Machine. 563–573. SMITH,D. 1993. Pygmalion. In Cypher, A., Ed. TOMEK,I. 1983. TheFirst Book of Josef: An In- Watch What I Do: Programming by Demonstra- troduction to Computer Programming. Prentice tion, MIT Press, Cambridge, MA. Hall, Englewood Cliffs, NJ. SMITH,D.,CYPHER, A., AND SPOHRER,J.1994. TRAVERS,M. 1994. Recursive interfaces for reac- KidSim programming agents without a pro- tive objects. In Human Factors in Computing gramming language. Commun. ACM, 37,7,54– Systems, Boston, MA. 379–385. 67. WIRTH,N. 1993. Recollections about the develop- SMITH,R. 1987. Experiences with the alternate ment of pascal. ACM SIGPLAN Notices 28,3, reality kit: An example of the tension between 333–342. literalism and magic. In Human Factors in WYETH,P.AND PURCHASE,H.C. 2000. Programming Computing Systems, 61–67. without a computer: A new interface for chil- SUZUKI,H.AND KATO,H. 1995. Interaction-level dren under eight. In the 1st Australasian User support for collaborative learning: AlgoBlock— Interface Conference, Canberra, Australia. 141– An open programming language. In Computer 148.

Received May 2003; revised January 2005; accepted March 2005

ACM Computing Surveys, Vol. 37, No. 2, June 2005.