My seven year old is back to computer programming, this time using Scratch, an easy programming language developed by the Lifelong Kindergarten Group at the MIT Media Lab. It is a free easy program to use, and children can share the programs they make with it on the Scratch community website.
So again I’m asking myself, what do I want him to learn from this?
Understanding Coordinates. I like that programming requires him to think in terms of y being the verticle axis and x being the horizontal axis. When we eventually get to doing math using graphs and coordinates he’s going to find it wonderfully easy.
Problem solving. I want him to make mistakes and realize that he can solve them himself or ask for help. I want him to try something, make a change, and try again.
Thinking about different ways of doing things. Yesterday he showed me that command to lower the player’s “health points” could be a part of the programming of the player’s sprite or the ghost sprite, so then the question is, does it work better one way or another? I want them to think about how one problem they face might be similar to another problem, so they can use similar programming strategies.
Looking beyond the conventions of what something is to what it really is. Picture a computer game where you have to use the mouse to control a flyswatter and swat flies. Now think about it. There’s no real fly there. What are you swatting? You’re really selecting coordinates which will be checked whether they compare with other cordinates where a picture of a fly is displayed. Now the picture of the fly changes into a big splat. Did the fly get squashed? No, simply a change in pictures. There isn’t really a fly.
I want my children to be able to think about what is really happening, because so much our lives are filled with things that aren’t really in existence. What is debt? What are stocks? They exist but only as a construction of rules and obligations.
Break Things into their Components. My son made a program yesterday where he moved a person through a maze. He had to think about what that means. It requires having the up-down-left-right buttons changing the y and x co-ordinates, but that when a change would mean bumping into a wall, the co-ordinates couldn’t change. In Scratch he can use the “if touching” command. In a different programming language he might have to think about what the coordinates of the walls are. In any case, I want him thinking about what little steps are included in big steps.
Different games might have different themes, but many are simular. Is it a game of getting timing right? Is it a game of matching or choosing a strategy? A challenge in estimating distances or angles? A combination of things? What makes it fun? How would it be different if the setting was totally different?
I want him to be able to see through and analyze games, partly because I want him to see through and analyze books, arguments, and television shows. Here’s a video clip about analyzing a television show. It demonstrates looking at things in different ways, hearing what is being said but also figuring out the underlying point of little decisions made by the producers. I know it is a bit of a jump between dissecting a computer game and dissecting a book or tv show, but I think the same ability to see things at different levels, and to break them apart applies.
Knowing what I want my children to learn from computer programming allows me to start asking them questions, to encourage them to think about what they are doing in different ways.