1 Some researchers make distinctions between the terms "concurrent" and "parallel" and "multiprocessing," but there are no standardized definitions or distinctions. In this paper, I use these terms interchangeably to refer to languages that allow programmers to control multiple processes.

2 The current version of MultiLogo is implemented on a single-processor computer. So the agents do not actually perform actions at the same time. Instead, MultiLogo time-slices between the agents, doing a little of one action, then a little of another. But this time-slicing is implemented at a "low level," so it runs very quickly, making the actions seem concurrent. Most importantly, this low-level time-slicing is completely invisible to the user. As far as the user is concerned, the agents perform actions concurrently.

3 MultiLogo's use of agents and message passing was motivated, at least indirectly, by previous work on object-oriented languages like Smalltalk (Goldberg and Robson 1983) and Actor languages (Hewitt 1977).

4 In my examples, I use suggestive names for the agents. Students typically did not name their agents: they used the default agents, which were identified by numbers 1 to 10.