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!"
I have been in education for many years and hear all the time that programming is too difficult for young students. Your experience shows that this is simply not the case. I have seen other teachers use Scratch successfully with students as young as kindergarten in fact. I really liked how you introduced the concept of programming by having the students trace letters and shapes in a kinestheitic manner. That is something I had not seen before. Thank you for also sharing your experience with trying to find the run button in Turtle Art. I think there is nothing wrong with showing students how to navigate through problems. Thanks for the post, David.
June 14, 2012 — 7:01 am
John at TestSoup says:
This is awesome!
June 14, 2012 — 2:50 pm