Cynthia Seymour Specialissue1
Cynthia Seymour Specialissue1
Cynthia Seymour Specialissue1
Cynthia Solomon
Author of Computer Environments for Children and Co-author of Twenty Things to
Do with a Computer
NCWIT Pioneer in Tech Award, 2016, National Center for Women and Information Technology, Las Vegas
Constructionism Lifetime Achievement Recognition, Constructionism 2016 Thailand
Its July 1967 and Seymour Papert is teaching a brand new programming language called
Logo to a group of children at the Hanscom School, Lincoln MA. Wally Feurzeig and I are
observers. Before and after each class Seymour and I hold debugging sessions. The result
was a totally revised Logo ready for implementation on a time-shared Digital Equipment
Corporation (DEC) PDP-1 at Bolt Beranek and Newman (BBN), Cambridge, MA. This system
was ready for the school year 1968-69 when Seymour and I team-taught fourteen 7th
graders at Muzzey Junior High School, Lexington, MA.
We all had a Lisp background so procedural thinking was a natural component. In fact, we
initially thought of it as Baby Lisp or Lisp without parentheses. The group included Wally,
Dan Bobrow, Dick Grant and me. Dan immediately started implementing Logo in Lisp on
BBN's SDS 940. He gave it over to me and I gave it to Dick. The guiding idea was that Logo
would be a language to play with words and sentences. I can hear Seymour say: What is
one of the chief activities of children? Why, playing with words and sentences. By summer
1967 we had a working Logo.
The unpublished and unfinished paper that follows was first written in 1970. The paper was
intended to be a book on learning Logo based on our year-long teaching experience with 7th
Seymour and I in the spring of 1969 looking at Cathys project printed on her teletype.
It is necessary to clarify a methodological point about the relation of the expensive teaching
experiment, to the ideas and teaching materials we developed during the year. The general
pattern of evolution of the material is to pass through several stages from a clumsy initial
idea to a much smoother integrated and elaborated form. In practice, we were not able to
generate material of the same quality without the help of children. Subjectively, contact
with the children seemed to produce a deeper sensitivity to their needs and reactions.
Be all this as it may, the fact is that our major output is rather literary in character
consisting of exposition of ideas about teaching rather than of empirical truths that
can be listed and verified statistically. There are, nevertheless, relatively minor
points that can be so listed.
For example:
b) It is interesting to observe that the class did not fall behind the control group in
arithmetical performance as measured by the Iowa Tests.
Before the Muzzey experiment we had some experience in teaching children to program in
Logo and other languages. The operational status of the Muzzey class, however, forced us
rather brutally to recognize misleading facets of previous experience. The most important
was that our personal teaching methods depended heavily on what we shall call our
computer culture. The meaning we attach to the term will become clearer as we go along: it
includes the effects of long experience seeing the world in terms of programs, so that we
have at our fingertips many examples, analogies, ways of looking at programming, jokes,
turns of phrase and other useful aids for developing a lively, stimulating and supple
interaction with children. The Muzzey experience brought out this facet first by making us
[Note: A wonderful math teacher started as the teacher. She was not adept at thinking in terms of
projects. Instead she emphasized the Logo language and syntax. After a month I took over. The class was
in place of the childrens regular math and met 4 days a week. Seymour taught with me two days a
week.]
Our reaction to the problem was to recognize the need for an extensive formulation of
teaching ideas, and an even more extensive formulation of relevant elements of computer
culture. The following pages represent a first stab at this dual purpose To provide a
consistent basis for choices of material and level of sophistication we have written them
with an imaginary audience in mind consisting of a class of student teachers with no
previous experience with computers. We discuss the programs and topics we have taught to
children; but we present them in the form we now think, in the wisdom of hindsight, they
ought to have been presented. We also include more comments, alternative forms,
systematic classifications, and so on, than can be presented in one pass to an elementary
class of children; teachers can and should know a little more than they teach.
Our discussion, especially side remarks, gives substance to the phrase computer culture
and shows that it is misleading in its apparent restrictiveness. They are more concerned
with the description and manipulation of concepts like process, project, procedure,
and of course, description, manipulation, and concept.
The initial parts of the Muzzey course concentrated on teaching the meaning and syntax of
Logo operations. Children worked with problems like:
Answer: D
We think now that this was a mistake. It is possible to write exciting active programs with
a small subset of Logo commands and without any idea that operations can be composed
(or chained). Our present theory is that early teaching should ignore syntax and variety of
operations and should concentrate on concepts that have an immediate pay-off in
programming and in excitement for children.
Programs can be written on the very first day without prior knowledge of anything more
than PRINT, the definition syntax, and the use of quotation. (Quotation can either be
slipped in by saying we use it as in He said, Hi or be prepared by the lesson on Quote
and Slash described in the next section.)
LOGO commands can be introduced one at a time when they are needed. The chained form
is best conceptualized as an abbreviated description of a program (in which each line
performs one operation and each intermediate result is properly named.)
TO GREET
HELLO
GOODBYE
HELLO
GOODBYE
HELLO
GOODBYE
.
.
.
With GREET as a model, children can be asked to make programs that will print:
HI
BYE
HI
BYE
.
.
.
JOHN
JOHN
JOHN
.
.
.
and
HI MOM
HOW ARE YOU?
LOVE, JOHN
HI MOM
HOW ARE YOU?
LOVE, JOHN
.
.
.
We do not share the prevalent general prejudice against rules and verbal statements
in teaching mathematics. But we find we can develop language best by first
establishing models or experiences to be used in defining terms.
We also feel firmly that introducing the infinite-looping recursive program is best done at
the very beginning. This creates a first image of the program as a living active agent. It
avoids initial confusions between definition and run by making their effects qualitatively
different running goes on by itself indefinitely. Later we will face the problem of making a
run stop on its own. Loop-free programs can come later still and appear as a curious case
rather than as the natural starting point.
As a matter of fact, children will soon discover the loop-free program by carelessly leaving
out (or wrongly stating) the recursion line. Perhaps, this is the best reason for not teaching
it!
It is worth a great effort to establish a good initial image of programming and good habits of
work. Many habits develop much faster than they can be changed. Some anecdotes will
illustrate the point, perhaps, in a sense slightly deeper than its obvious one.
Example 1
Child X is bored at the teletype during a very early session. Not understanding
enough to do anything constructive he toys idly with the keys. He accidentally finds
that the repeat key can bring the machine to life. This has a positive effect
boredom has gone, the teletype has turned into a fascinating living creature. But it
has a negative effect too: the next week is dominated by non-constructive games
with the repeat key. By contrast child Y made a discovery just a little later in his
development and was able to integrate the spectacular effect of repetition into the
fun of programming. For example, a very simple procedure to count the number of
repetitions led to games depending on guessing the number, aiming at particular
numbers, and so on.
The first child lost more than the time spent on his game: during this period
programming appeared to him not as fun but as a chore that interfered with his fun.
Example 2
A very bad habit that transfers too easily from the math class is to throw away
incorrect programs rather than understanding and debugging them. By starting
children on programming with a small subset of Logo and with no concept of
composing operations we increase the intelligibility of the programs they write, and
so, increase our chance of being believed when we insist that the bugged program
can be understood.
2.3 Naming
B: Your name
Teacher: How do you spell it?
A: J-O-H-N
B: I-T
Teacher: How do you spell your name?
B: Y-O-U-R-N-A-M-E
Children are familiar with this kind of game and enter easily into the spirit. The point of the
trick is that we can introduce quotation as a helpful device, a way out of a real difficulty,
rather than as a formalistic restrictive convention.
He said, Hi
We show that they are valuable when we actually need to distinguish between
and
The example illustrates the fact which can be presented in a very informal, relaxed way that
sometimes we talk about a word itself and sometimes we talk about the thing of the word.
Most often everyone knows which we mean. But people sometimes get confused and
computers do very easily. To make the distinction we introduce the notation of quote and
slash used at this stage informally in English. To facilitate speaking aloud we read A as
QUOTE A and /A/ as SLASH A.1 Now we develop dialogs like:
1In this version of Logo the name of a thing had to be one word. To get at the thing the word had to
be enclosed in slashes. Later versions of Logo used a prefix mark we called dots : .
and so on.
With some persistence and hinting, but never easily, we eventually get the class to say talk
about them and, even more reluctantly, give them names.
The exercise is useful for later reference. For reasons that might be worth a thorough
psycho-social study, children are shy about naming things especially unusual things like
bricks, words, numbers. The brick story can be used to keep children sufficiently aware of
this reluctance this bug in them, some might say for them to work at removing it or at
least be ready to recognize it when it operates.
To fight the shyness at this stage we introduce some terms for talking about the naming
situation. Can we call the number 3 Joe? If so Joe is the name (or a name) of the number.
It is strange that English has no common word to fill into:
As an exercise we make each member of the class give their name a name. Why should
words not have names?
Since the following dialog is meant to be spoken we have not written quotes:
It pays to set up in advance of its need in programming a model for the important need to
name things. A good example for the class is the following class exercise about building
airplanes.
We find a volunteer who knows how to make the dart kind of model airplane.
We ask him to tell us how to make one. The point to bring out is that confusion will arise if
he does not either resort to pointing or naming the new corners and edges, as they come
into being. We invent some excuse for not pointing (e.g., we are telling someone by
telephone). A conversation like the following might ensue:
The point is made by creating confusion and then salvaging the situation by giving
everything names so that instructions are now like:
Fold the corner A onto the center line L. This makes two new corners, one on L and
one on the edge R. Call these D and E.
Another example is a set of instructions working a complicated machine: turn dial A until
light C goes on, push switch D, etc.
As we have worked with Logo we have greatly extended this way of thinking, particularly in
the direction of very simple programs. So much so that it now appears strange that anything
as untidy as Pig Latin could ever have presented itself as an attractive example though the
point that it makes remains acutely important in our thinking. We have now come to
recognize a number of very simple paradigm forms for programs. In teaching each new
form, particular examples are presented to the children to be used as models for other
To appear in a special issue of International Journal of Child-Computer Interaction 4/3/17 11
programs of increasing complexity. As we do so, we also introduce the children to a
descriptive language appropriate to the form and develop their understanding of where it
can be used, of the typical bugs associated with it, and how it relates to informally familiar
procedures. To show what we mean by this we shall develop in some detail these various
aspects of a particular program form. A similar discussion of the other forms will be found
elsewhere. Perhaps we should mention again that our discussion includes more material
than can reasonably be given to most children at one time.
TO HI TITLE line
PRINT HI ACTION line
HI RECURSION line
END
Notice the terminology: ACTION and RECURSION. It will be used repeatedly to give
structure to the process of writing and talking about writing a procedure. Interspersed with
examples, we develop numerous analogies with recursion, e.g., many cyclic processes like
automobile engines and sewing machines are like this model of recursion.
Example of Use
HI JOHN
JOHN
JOHN
JOHN
.
.
.
The introduction of a STOP TEST is easy at this point, yielding the most general version of
the Straight Recursion program form:
TO COUNTUP /NUMBER/ /TOP/ TITLE line This procedure has two inputs
TEST IS /NUMBER/ /TOP/ TEST line
IF TRUE STOP
MAKE MODIFICATION line
NAME: NEW
THING: SUM /NUMBER/ AND 1
COUNTUP /NEW/ /TOP/ RECURSION line
END
This program form is far from universal the reader should peek at the next section2 where
some very different forms are listed. But recursion is extremely powerful and we try to give
children enough examples to sense this power. In addition to developing this sense of where
it can be used, teaching a program form includes achieving a number of objectives, which
are illustrated by the following list. All the examples in the list are couched in terms of the
simple recursive program form. Similar formulations of objectives for other program forms
will be found in later sections (not available January 1970).
Fluency in the use of a descriptive language illustrated by the names TEST, ACTION,
MODIFICATION, etc. This ensures articulate communication between the children
themselves and their teacher. It also helps the child formulate and perceive more
precisely what they are about particularly when in trouble.
Familiarity with common bugs. For example, the class can collect and name the ones
it has seen often or finds tricky. Among the commonest are:
E.g., a procedure to count by 2s from 21 to 50 might slip by the STOP TEST with , 47,
49, 51, The remedy is to use an inequality instead of an equality for the STOP TEST;
stopping when the number exceeds some limit. (Thereby, incidentally, the children
meet inequalities as a life-saving device rather than as a formal horror.)
You can think, loosely, of many recursive programs as successively reducing some
LOGOTHING until there is nothing left. But the loose concept of reducing covers several
different processes such as decreasing numbers until zero is reached, et alia. The
Muddled Reduction Bug is the result of muddling these reductive processes.
The following STOP TEST and MODIFICATION lines are wrongly paired:
This very common bug gets its name from the confusing fact that a fence with ten posts
has nine spaces. The bug could also be called the Inclusive-Exclusive Bug since it is
related to frequent ambiguity about whether to count in the end objects (e.g., how many
days from the 4th to the 9th of March?).
Example
TO GREET /TIMES/
PRINT HI
TEST IS /TIMES/ 0
IF TRUE STOP
GREET SUM /TIMES/ AND -1
END
This extremely common bug can be introduced into a good program when editing. One
might want to change a certain name but inadvertently leave one occurrence in its old
form. Or a spelling mistake might produce the same effect. It is related to the important
heuristic principle that anything can be called anything but always the same anything.
Mechanical Recursion
Heuristic Analogs
MEMBER 3 A B C D = C
MEMBER 1 CAT DOG X = CAT
So we begin by writing
The obvious one is /NUM/ = 1. In this case the problem is trivial since we can use
the Logo operation FIRST to get the answer. So we have the first two lines of our
procedure:
TEST IS /NUM/ 1
IF TRUE OUTPUT FIRST /LIST/
We note that the STOP TEST part of the recursion form often corresponds to the
easiest case of the problem. Next we apply the
The problem
MEMBER 3 A B C D
MEMBER 2 B C D
MEMBER 1 C D
MAKE
NAME: NEWNUM
THING: DIFFERENCE /NUM/ 1
MAKE
NAME: NEWLIST
THING: BUTFIRST OF /LIST/
Pictures
PRINT MEMBER 2 A B C
The key point is that it gives us a model for the push-down mechanism that is vivid, simple
and entirely adequate for these simple programs.
MEMBER 2 A B C MEMBER 1 B C
We did write another paper involving this group of students, NIM: A Game Playing Program,
January 19704. It detailed the one-pile NIM game that these children worked on.
What we had planned was to continue writing about activities and reflections on our work
with the 7th graders at Muzzey Junior High in 1968-69. Their content included Pig Latin
programs, sentence generators, math quiz programs, games like one-pile Nim, concrete
poetry and haiku, stories and so on.
We shared our view that different computer environments can give rise to different
computer cultures. The idea that a culture forms around computing was novel then and
unusual even now. In our computer culture expressivity, creativity, and curiosity were
shared elements. We talked about projects, procedures, processes and debugging. We talked
about computational thinking, about being a computer, giving things names, Polya-esque
dividing problems into sub-problems, being willing to try things out, re-thinking and
debugging. Having procedures do unexpected or unwanted things was not shameful. It was
considered part of the process and through debugging students gained a deeper
understanding of themselves, their bugs and their features. Each student seemed to find
their own short cuts, aids, or heuristics. And then it was like there was an underground
communications system as students shared their findings with their classmates.5
.
Here are some ideas we emphasized.
Playing computer, being a computer, stepping through a procedure were all part of
debugging strategies.
Logo Development
This work set the stage for what was to become a powerful, flexible and useable
programming language for children and highlighted the ease with which learners quickly
became expert in using this tool. This work is also an important early example of involving
children in the design of new technology and how the technology can benefit from the
design expertise and feedback from children. Each time Seymour and I worked with
children Logo was radically redesigned incorporating their feedback
Our next collaborative writing project was in 1971 after we worked for a year with 5th
graders. By the start of the 1970-71 school year I had joined Seymour at MIT (and so there
were two Logo efforts as the BBN folks continued work with Logo). Thanks to the talent and
cooperation of Marvin Minsky and other AI folks we had a floor turtle, a display turtle, a
music box and new ideas for expanding procedural thinking and debugging as we taught
children to walk on stilts, juggle, and more. This work spawned lots of ideas that became
part of the Twenty Things to Do with a Computer.
Our work foreshadows what has become the participatory design movement, the
interaction design and children field, and the computer science advances in programming
languages for novices.