Thoughts from a reflective educator.
I did two things I've never done before - I taught 3rd graders, and I introduced elementary school kids to programming.
Yesterday, I started off by talking to the kids about how programs work on a computer, using the analogy that a programming language is like talking to a computer. If you can speak the language of the computer, you can make it do what you want it to do. I pointed out that all of them were much smarter than a computer since they can speak and understand English, and no computers can do this - at least they can't carry on a conversation that passes the Turing test (yes, I mentioned the Turing test with a group of 3rd graders).
The first activity we did I called "Program your partner." It's a pretty easy activity to set up. I told the students that computers only understand simple instructions, like step forward and turn left. So I partnered up the students, and I had one act as the programmer, and the other act as the computer. The programmer was to tell the computer what to do but they could only use the commands 'step' (which meant take one step forward) and 'turn' (which meant turn one quarter turn left).
The first challenge was to get their computer to trace out the path of an L on the floor with their movement. They switched roles for the next challenge, which was to trace out a T. The next challenge was to trace out a square, and then I introduced a new commend which I called repeat. I asked the students, "How could you use the repeat command to make tracing out a square easier?" They had a bunch of ways of describing the command, which all boiled down to exactly what one student said which was "Repeat 4 times - Step then Turn." The final challenge was to trace out 4 squares connected to each other, and for this activity I asked them to double check their program by tracing it out using pencil and paper. It was interesting to me that none of the groups seemed to have any difficulty abstracting from taking steps on the floor, to writing those steps on paper. In fact, every group came up with a slightly different way of writing down the output of their program (many of them included arrows so that they could keep track of the path actually traced).
We then gathered together in front a projector, where I showed the students how to start the Turtle Art software, and showed them the Forward and Right functions. At this point, I got stuck! I had used Turtle Art in Ubuntu, which has a slightly different interface, and I didn't know how to actually run my program! So we experimented together and played around with the buttons on the screen, making sure to make copious use of the help button, and eventually we discovered the magic wand together. Getting stuck here was a valuable lesson for all of us, because while I explored how to debug my problem, the students got to see my thinking process live.
Next, we had the students self-organize into pairs and get a computer out, and try out Turtle Art for themselves. The first few programs the students created were pretty simplistic, but fairly quickly the students learned how to create more and more complicated shapes. One of their favourite things to do was to use the Forever loop, and see the screen flickering as a particular square or other shape they had created was repeatedly drawn. I didn't really have anything specific for the students to do with the program at this stage, as I thought some free exploration would be more valuable.
Some of the students created complicated loops, and others used the commands to draw. This particular student, as you can see from their screen, had 4 different commands, which she learned how to alternate to produce the diagram above. So she hadn't learned how to create a procedure to draw the figure above in one go, instead she had internalized what each of the commands did, and then used them as one would use a paint brush.
At the end of the sessions, the students gave it an enthusiastic thumbs up. I discussed the success of the two days with their teacher, and she was pretty impressed with the students ability to come up with representations of their own, and to create somewhat complicated figures within a few minutes of using Turtle Art. We are considering doing a longer unit next year related to the use of Turtle Art.
The popularity of the event was summed up by one student who told me "I give this activity an infinity out of ten!"
David is a mathematics teacher and a learning specialist for technology at Stratford Hall in Vancouver, BC. He has been teaching since 2002, and has worked in Brooklyn, London, and Bangkok before moving back to Canada. He has his Masters degree in Educational Technology from UBC, and is the co-author of a mathematics textbook. He has been published in ISTE's Leading and Learning, Educational Technology Solutions, The Software Developers Journal, The Bangkok Post and Edutopia. He blogs with the Cooperative Catalyst, and is the Assessment group facilitator for Edutopia. He has also helped organize the first Edcamp in Canada, and TEDxKIDS@BC.