This book review has been reprinted from it's source with the permission of the author. Although the book uses the LOGO programming language, the Python language also has a turtle module and we felt many Python educators will also be interested in the book.


Mindstorms is a book by Seymour Papert that was first published in 1980. Seymour Papert is the inventor of the LOGO programming language, and the book lays down the motivation for creating LOGO as a teaching aid for children.

When we talk about teaching aid, we probably conjure up something different from what Papert had in mind. An educational app today is mostly a reinforcement of what a child may learn in school. For example, an app to teach multiplication would involve showing multiplication sums and asking the child to solve it. It may be disguised in various forms, like wrapping a game around it, but the core is still a way to get them to do various school drills.

Papert's vision is different.

Take the example of how children learn their first language. They don't go to classes to learn the language, instead they automatically pick it up from the environment by listening to it being spoken. The second language is a different story. Many children find it harder because it is not spoken in the environment, and children have to learn it formally in class. Some children grow up in multilingual environments and have no trouble picking up three or four languages.

In the same way, Papert imagines what it would be like if a child grows up in an environment where Maths or Physics is a 'language'. Papert calls this environment Mathland. In Mathland, the child converses in 'maths language' and becomes proficient in Maths. The important thing to note here is that this 'maths language' is not a formalised math, like one learns at school. A child does not learn a first language by first learning alphabents and grammer and using that to build more complex structures. Instead they learn the language by using the language daily, and in doing so they deduce the patterns of correct grammer. In the same way, 'maths language' is something the child daily in the environment and deduces patterns without necessarily going through a formalisation.

The next question to ask is: What is this Mathland and where is it found?

Some children may be lucky enough to grow in a household where maths or science is spoken daily, but most children do not grow up in such an environment. This is where the computer comes into the picture. Papert visualises an environment, built into the computer, that children can use to 'talk math' to. And the LOGO language was created as the language to carry this communication between the child and Mathland.

The key innovation in LOGO is the concept of a Turtle. A Turtle is a point on the screen (though initial versions of the turtle were physical robots) that you can give commands to. You can tell the turtle to move forwards or back, turn left or right. As the turtle moves, it draws along its path.

The children might start by doing something simple, like drawing a square.

from turtle import Turtle

t = Turtle()
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)
t.forward(100)
t.right(90)

(Although the book is about LOGO, Python also comes inbuilt with a turtle module, so I will show code examples using that. If you want to know more about LOGO, go here)

Next, they might try to draw a triangle. Now this part is interesting - children with formal maths background usually try turning right 60 degrees at each step because they have learnt in school that the sum of angles of a triangle is 180. Younger children, on the other hand, try tracing a triangle by physically walking on the floor, and they quickly realise that you need to turn right 120 degrees to draw a triangle.

What if you want to trace a pentagon? The children may need to play around with some numbers, trying higher and lower numbers until they hit upon 72 as the number that will form the pentagon. Eventually, they notice a pattern - all these angles seem to add up to 360. This discovery leads them to create a generalised routine that can take the number of sides as input and draw the appropriate shape.

def polygon(sides, length):
    for i in range(sides):
        t.forward(length)
        t.right(360/sides)

Now the child can easily create shapes with many more sides. Eventually, every child's curiosity makes them want to know what a hunded sided figure would look like. Another discovery follows - its almost like a circle. Increase it to thousand sides and it very much is a circle. And what about a two sided shape? Already they are exploring concepts of limits - something that is taught only in senior secondary school.

The Turtle inside the computer being a person that you can talk 'maths language' to. By frequently speaking the language, children develop intuitions on how maths works - without any maths formalisms in sight.

Papert then goes on to describe the notion of Microworlds.

The geometry microworld is described above. Similar microworlds can be created to explore other concepts. For example, a physics microworld allows one to create Turtles with mass and gravity. Using these as building blocks, childen can create simulations. For example, how would a ball travel when it is thrown in the air? At what angle should one throw it to make it go as far as possible? The child just needs to play around with different angles before they understand that 45 degrees goes the maximum distance. Children naturally want to know what happens if you throw the ball really hard - wow, it can escape the gravity of the Earth and fly off into space. Hmm, so if you throw the ball lightly it comes back to Earth, and if its really hard, it flies away to space, so what about some number in between. By playing with some numbers, they hit upon a number where the ball neither flies away or falls back to Earth - it just keeps going round and round the Earth. A very exciting discovery indeed! With these explorations, even a primary school child can develop an understanding of how gravity works.

In formal school education on the other hand, the student first learns Newtons laws of motion and gravity, followed by equations for the same. They then learn the parabolic curve and then have to know differentiation to find the angle that gives the maximum distance. The whole process is abstract without the student building any intuition about what it going on.

That's the vision of Papert using computers as a teaching aid, creating these microworlds where young children can talk mathematics and science and build up an intuitive knowledge of the subjects without having to go through the path of algebraic formalisms.

This book was written in 1980, and at that time Papert imagined the world that was just starting to emerge - a world where everyone had access to a personal computer, and by extension every child had access to microworlds to which they could talk maths and science. He imagined children growing up for whom talking maths and science is as natural as talking their first language.

It is now 43 years since the book came out. Where do we stand today? Papert was certainly right that everyone would have access to some sort of computing device. Yet his vision, where every child can talk maths and science, still stands sadly unfulfiled.

Finally, some trivia to end with:

  • Did you know that LOGO is a offshoot dialect of LISP?
  • The Scratch programming environment extends Papert's ideas to a visual programming environment (Both LOGO and Scratch were developed at MIT Media Labs)
  • The LEGO Mindstorms programmable robot kit was named after this book

Did you like this article?

If you liked this article, consider subscribing to this site. Subscribing is free.

Why subscribe? Here are three reasons:

  1. You will get every new article as an email in your inbox, so you never miss an article
  2. You will be able to comment on all the posts, ask questions, etc
  3. Once in a while, I will be posting conference talk slides, longer form articles (such as this one), and other content as subscriber-only

Tagged in: