ToonTalk(ID:5762/too003)Visual programming environment for concurrent programming, decigned for children People: Related languages
References: in ICOT Staff (Eds.): Fifth Generation Computer Systems '92: Proceedings of the International Conference on Fifth Generation Computer Systems. 1992, June 1-5, Tokyo, Japan. 1262p, IOS Press 1992 view details I discuss the history and rationale of the metaphor design of my ToonTalk system -- an animated programming environment for kids. For example, I needed to provide the user with the ability to copy, remove, restore, grow and shrink items. The first design used three different colored magic wands. The wands were further distinguished by displaying an abstract animation of their function. Preliminary informal user'studies showed that this scheme was non-obvious and users got the wands confused despite the animation. Because of this I replaced the size changing wand with a bike pump and the removing and restoring wand by a hand-held vacuum. Other examples of ToonTalk metaphors discussed are the use of carrier pigeons for communication, cities on the back of pictures for sprite programming, and a mouse with a big hammer for arithmetic. External link: Online copy in Proc. Computer Game Developers Conf., Apr 1995 view details When Logo was first built, a critical aspect was taking the computational constructs of the Lisp programming language and designing a child friendly syntax for them. Lisp's "CAR" was replaced by "FIRST", "DEFUN" by "TO", parentheses were eliminated, and so on. Today there are totally visual languages in which programs exist as pictures and not as text. We believe this is a step in the right direction, but even better than visual programs are animated programs. Animation is much better suited for dealing with the dynamics of computer programs than static icons or diagrams. While there has been substantial progress in graphical user interfaces in the last twenty-five years, we chose to look not primarily at the desktop metaphor for ideas but instead at video games. Video games are typically more direct, more concrete, and easier to learn than other software. And more fun too. We have constructed a general-purpose concurrent programming system, ToonTalk, in which the source code is animated and the programming environment is a video game. Every abstract computational aspect is mapped into a concrete metaphor. For example, a computation is a city, an active object or agent is a house, birds carry messages between houses, a method or clause is a robot trained by the user and so on. The programmer controls a "programmer persona" in this video world to construct, run, debug and modify programs. We believe that ToonTalk is especially well suited for giving children the opportunity to build real programs in a manner that is easy to learn and fun to do. External link: Online copy in Proceedings of the National Educational Computing Conference (NECC'95). view details in Sterling, Leon (Ed.): Logic Programming, Proceedings of the Twelfth International Conference on Logic Programming, June 13-16, 1995, Tokyo, Japan. MIT Press 1995 view details ToonTalk has been described in detail elsewhere. Here we show how systolic programs can be constructed and animated in ToonTalk. Systolic computations run on multiple processors connected in a regular topology, where all communication is via local message passing. A ToonTalk city can be seen as a systolic multi-processor and each house in the city as an active processor. One is able to construct systolic algorithms and watch their execution as houses are built and destroyed (i.e., processes are spawned and terminate) and birds carry messages between houses. in Proceedings of the IEEE Symposium on Visual Languages (VL), 1996 view details Program sources need not be static collections of text or even text and pictures, but can be animated, tactile, enhanced with sound effects, and physical. External link: Online copy in [ACM] CACM 39(08) 1996 view details in Journal of Visual Languages and Computing 7(2) 1996 view details It is possible that there is a style of learning that dominates others in effectiveness and appeal. The position taken here, however, is that children differ, and that all these learning styles have their place. Even an individual child may switch styles as circumstances and experiences change. Given the wide variety of ways that children learn, how should we design software for children? This chapter attempts to answer this question by looking closely at our experiences with the design and testing of ToonTalkä . ToonTalk (Kahn 1996, 1998) is an animated world where children build and run programs by performing actions upon concrete objects. The child builds real computer programs by doing things like giving messages to birds, training robots to work on boxes, loading up trucks, and using animated tools to copy, remove, and stretch items. ToonTalk has been tested with 4th grade classes for the last 3 years. Initially, it supported only an exploratory learning style. Some children quickly began exploring and tried to figure out what each item does and how to combine them. Most, however, asked for guidance. This led to the development of enhancements of ToonTalk that cater to children with different learning styles. ToonTalk now includes a puzzle game that plays the role of a tutorial. This appeals most strongly to children who tend to like to solve problems but are less comfortable exploring on their own. An animated character named Marty was added to ToonTalk that acts like a coach or guide in ToonTalk. Some children like to hear suggestions from him and follow them. Others quickly send Marty away because they find him annoying. A set of narrated demos of ToonTalk was created for those who like to sit and passively be shown how to make things. Illustrated instructions on how to build some programs were produced. These too appeal to a subset of the children. Children of different ages, experiences, and learning styles approach the same software in very different ways. The main lesson we can take away from this experience is that children differ in the degree to which they are motivated and effective at exploring (on their own or with an animated guide), or following instructions, or solving a puzzle sequence. Even the same child will prefer different styles of interaction depending upon her prior experience with the software. Ideally, a software program should be designed so that a wide variety of children might enjoy and benefit from it. in Druin, Alison (ed) The Design of Children's Technology, Morgan Kaufmann, 1998 view details This paper describes the design and preliminary testing of an interactive puzzle game that functions as a ToonTalk tutorial. Children are presented with a series of interactive puzzles in a game-like narrative context. The puzzles gradually introduce programming constructs and techniques. Each puzzle presents the player with a very limited selection of ToonTalk objects. Even some very young children are able to solve the puzzles because the search space is so strongly constrained. And yet players do not behave as if the puzzles are too easy – the children are clearly challenged. The sequence of puzzles is carefully designed to gradually introduce new concepts one at a time. Testing has shown that both children and adults enjoy the puzzles and have learned some sophisticated programming skills. External link: Online copy in Proceedings of the National Educational Computing Conference June 1999 view details ToonTalk is a synthesis of ideas from concurrent constraint programming, video games, and programming languages for children. In the spirit of Logo, ToonTalk is an attempt to take the best ideas in computer science and make them accessible to children. When Logo was designed over thirty years ago, the best programming language ideas could be found in the Lisp language. The design of ToonTalk is based upon the belief that the best programming language ideas can be found in concurrent logic programming and concurrent constraint programming languages like Janus, Linear Janus, FGHC, Vulcan, DOC, AKL, and Oz. These languages, in turn, borrow heavily from earlier languages like Concurrent Prolog and Parlog that in turn grew out of research on Prolog. While these languages have many desirable aspects - they are powerful, elegant, theoretically well grounded, and expressive - they are not generally considered easy to learn. If it takes substantial time and effort for computer scientists to understand one of these languages, then how can one hope to make the underlying ideas accessible to young school children? An answer lies with video games. Many of these games present a large and complex world with many kinds of objects and possible actions. And yet, children as young as 4 years old learn to master these game worlds without help. The fundamental idea underlying ToonTalk is that a game world can be created in which the objects and actions map directly onto programming language constructs. In ToonTalk, a clause becomes a robot, a term or tuple becomes a box, a number becomes a pad, and so on. The act of putting a box and a team of robots into a truck becomes a way of expressing a process spawn or procedure call. The act of dropping a number pad on another number pad becomes a way of expressing an arithmetic operation. And so on. External link: Online copy in ICLP 1999 view details There is a very important interplay between the way in which programs are created and generalized in ToonTalk and the underlying model of computation. A program is executed as a collection of autonomous processes that communicate asynchronously where the behavior of a process is specified by a set of guarded clauses. A clause is constructed by performing operations on a single sample data structure. To make the clause capable of operating on other data structures, the programmer needs only to remove details from the guard or conditional part of the clause. ToonTalk is built upon the idea of animated programming. Animated programs are not constructed by typing text or by constructing diagrams or stringing icons together. Instead, the programmer is placed as a character in an animated virtual world where programming abstractions are replaced by tangible analogs. A data structure, for example, is a box whose holes can be filled with number or text pads, other boxes, birds, nests, and robots. Birds and nests are concrete analogs of send and receive capabilities on communication channels. A robot is a guarded clause that has been trained by the programmer to take actions when given a box. The thought bubble of a robot displays the guard or conditions that need to be satisfied before the robot will run. To generalize a robot, a programmer needs only to use an animated vacuum to remove details from the box inside the robot’s thought bubble. External link: Online copy Extract: Background After thirty years of mixed results, many educators today question the value of teaching programming to children. It is hard, and there are now so many other things children can do with computers. Proponents of teaching programming argue that programming can provide a very fertile ground for discovering and mastering powerful ideas and thinking skills [Papert 80]. Furthermore, programming can be a very empowering and creative experience. Children who can program can turn computers into electronic games, simulators, art or music generators, databases, animations, robot controllers, and the multitude of other things that professional programmers have turned computers into. Why do we rarely see these wonderful results from teaching children to program computers? The answer seems to be that programming is hard — hard to learn and hard to do. ToonTalk started with the idea that perhaps animation and computer game technology might make programming easier to learn and do (and more fun). Instead of typing textual programs into a computer, or even using a mouse to construct pictorial programs, ToonTalk allows real, advanced programming to be done from inside a virtual animated interactive world. The ToonTalk world resembles a twentieth-century city. There are helicopters, trucks, houses, streets, bike pumps, toolboxes, hand-held vacuums, boxes, and robots. Wildlife is limited to birds and their nests. This is just one of many consistent themes that could underlie a programming system like ToonTalk. A space theme with shuttlecraft, teleporters, and so on would work as well. So would a medieval magical theme or an Alice in Wonderland theme. The user of ToonTalk is a character in an animated world. She starts off flying a helicopter over the city. After landing she controls an on-screen persona. The persona is followed by a dog-like toolbox full of useful things. An entire ToonTalk computation is a city. Most of the action in ToonTalk takes places in houses. Homing pigeon-like birds provide communication between houses. Birds are given things, fly to their nest, leave them there, and fly back. Typically, houses contain robots that have been trained to accomplish some small task. A robot is trained by entering his "thought bubble" and showing him what to do. The focus of this paper is on how robots remember actions in a manner that can easily be generalized so they can be applied in a wide variety of contexts. in Lieberman, Henry "Your Wish Is My Command: Programming By Example" Morgan Kaufmann 2001 view details in Proceedings of the EuroLogo Conference, August 2001 view details Resources
|