Back in April I mentioned teaching bits of LOGO to my Fluency in Technology class using the Tortue interpreter. I actually did not get to it last semester so this experiment had to wait. I finally managed to cover it in the last lab, and it turned out better than I expected. Strangely enough most of my students were more confused by Access than by LOGO. Some even seemed to enjoy it. I think I lost them when I attempted to show them how to calculate a factorial using a loop and a temporary variable. So note for the future: do not do that again. I’ll just keep it simple.
I do think that it was actually a useful exercise. Why? Because it allowed me to show students somewhat abstract concepts such as variables, loops and functions with working examples. When I was explaining these things in lecture using pseudo-code snippets from the book I saw a wall of blank stares. But LOGO makes these things astonishingly simple. For example, I show them how to draw a square:
FORWARD 100 LEFT 90 FORWARD 100 LEFT 90 FORWARD 100 LEFT 90 FORWARD 100
Then I point out how the two lines are repeated over and over again, and show them a shortcut:
REPEAT 4 FORWARD 100 LEFT 90 END REPEAT
They can try it themselves and easily see that it does indeed draw a square. I can put both these things on the screen and show them how the loop unrolls back to the sequential statements, and then show them any repetitive code can be rolled up into a short and succinct loop to save a lot of typing.
Same goes for functions/subroutines. It seemed fiendishly hard to convey this concept to my students in lecture. And yet, when I used Tortue to Explain it in the lab I saw people actually doing the “Oooh, I get it!” expression. I started my explanation with that loop to draw a square and asked them how would I draw another one or two on the canvas. There is the hard way (type in more loops) or the easy way – create a subroutine and then call it.
LOGO actually has an interesting syntax for it:
TO DRAWSQUARE REPEAT 4 FORWARD 100 LEFT 90 END REPEAT END TO
It almost suggests an approachable way to explain what you are doing here. You are telling LOGO “how to draw a square”. You are defining a new keyword, and below you explain what should this keyword do. You set aside some code, and give it an explicit name which you can use later to invoke it. I used all these explanations and they all seemed to somewhat resonate with different people.
When I was going over these concepts the second time around, while preparing them for the final exam, and I referred back to the LOGO lab, I saw people nodding with new found understanding. So I consider the LOGO experiment a success and will definitely do it again next semester. I just need to remind myself to keep it simple.
Also, it may be worth it to re-write some of the code snippets on my lecture slides to use something as simple as LOGO. Again, these students are not going to be programmers. If they wanted to be programmers they would not be in my class. They would be taking Intro to Java instead. So I’m not really concerned about teaching them practical stuff. I want them to know basic concepts and keep it short, sweet and simple. My goal would be to give students an impression that programming is actually not all that scary and mysterious as they might have thought.