Many of the attributes of good computer-based learning environments such as support for collaboration, creativity, and community are widely agreed upon. Interfaces should be seamless. Content should be challenging without being frustrating. Authoring support should be flexible and powerful.
But what about universality in learning environments? Should learning environments support the specification and execution of arbitrary computations? And if one does support universality, should it be for more than just expert users?
I argue here that universality for all is both desirable and attainable. Furthermore, by universality I mean more than a theoretic equivalence to a Turing Machine, but rather an elegant and cognitively appropriate model of general computations. The classical notion of universality only addresses the ability to compute the values of functions, ignoring the ability to effectively use the input and output devices typically associated with desktop computers. Ideally, learners should be able to describe computations, including those involving the display, mouse, keyboard, or sound card. And they should be able to describe those computations in a language that is well-suited to their cognitive abilities.
A computer becomes whatever software instructs it to be. A learning environment that does not restrict the range of software that can be created and run is able to exploit all that a computer can be. Most learners can find something that is personally compelling among the literally millions of different kinds of things a computer can be. Software is a fundamentally new kind of medium. It is a medium where one expresses ideas that are given life by machines called computers.
Ideally, educational software should be transparent. To be transparent, software needs to be composed of modules that can be understood and changed by students as well as authors.
Previous attempts to provide universal universality (i.e., fully general computational tools for everyone) have had limited success. Logo [Papert 1980] and Smalltalk [Kay 81] both strive to be general purpose programming languages for all. To master these languages or their successors (e.g. Boxer [Boxer 02], StarLogo [Resnick 1997], and Squeak [Squeak 02]) requires a set of skills that many students fail to acquire. To program in these languages one needs to be fluent in a set of computational abstractions (e.g. procedures, variables, and conditionals). And programs are constructed in the realm of abstract variables and not concrete values.
Everyone, however, can master tools capable of constructing arbitrary computations. (By “everyone” I mean students who are capable of learning other school subjects.) ToonTalk ([Kahn 96], [Kahn 02]) is a programming environment that greatly lowers the difficulty of programming without sacrificing power or expressibility. It does this by replacing computational abstractions with tangible concrete analogs and by supporting the ability to program with examples and subsequently remove details to obtain generality.
Download the entire chapter as an Adobe Acrobat file (PDF) file (2.4MB).
home | search | purchase | manual | news | info | games | faq | support | downloads | endorsements | press | contact us