Pico is a tiny but expressive programming language that was especially designed to teach advance computer science concepts to students in other sciences than computer science (such as Physics and Chemistry). In a sense, Pico can be seen as a non-trivial marriage between the power of languages like Scheme, and, the standard infix notation students are used to from ordinary calculus. A.o., Pico features garbage collected tables (i.e. arrays), higher order functions, objects, meta programming and reflection. But above all, Pico is small! Really small!
Currently, Pico is used at our university in a number of undergraduate and undergraduate courses on programming language design and implementation.
From a research point of view, Pico and its implementation are used as a simple, yet extremely expressive, vehicle to build academic toy languages in order to investigate the linguistic and implementational principles that underly phenomena like code mobility and sharing of distributed resources.
In conceiving Pico we were driven by two insights:
Pico can actually be viewed as an effort to render languages like Scheme palatable
and even enjoyable to people unable or unwilling to make the intellectual effort
necessary to grasp its elegance and power. We do so by adapting Scheme's syntax
(significantly) and semantics (subtly) in order to use what (little) understanding
the novice science student has of (specification) languages.
The word Pico should be interpreted as synonymous with very small (according to Webster's). The idea was indeed to have a very small language with a very general impact.
We were also strongly driven by the ambition to return to the original attraction exerted by computer programming on young people; we strongly deplore the current situation where most of these regard programming as a mind numbing chore. Pico is essentially the result of sugarcoating the hard essentials of computer programming in such a way that students cannot help but enjoy it.
The basic rules for establishing Pico as a programming language resulted from the following concerns:
We have briefly considered using Scheme for our target group. On the basis of our (extensive) experience with using Scheme in the Computer Science curriculum we chose not to do so. Although extremely well-suited for the more computer science oriented student, Scheme's cryptic notation made it unsuitable for our purposes.
Currently Pico is no longer used as a tutoring language for its target group, but this is more a consequence of politics than of the astounding results we got with teaching Pico. Today, Pico is used as a means to teach principles of language design, interpreters and virtual machines in a sophomore course for computer scientists and in an adjacent course in a masters program in applied computer science (see the section on courseware). From a research point of view, Pico is still actively used to experiment with new language features (see the section on research).