At a recent workshop Alexander Repenning said that sometimes teaching programming is “one semi colon away from disaster.” How true that is. Minor syntax issues, especially when dealing with beginners, can make a program look like a complete disaster.
Last school year I had more than a few students come close to panic when a compiler reported dozes, scores or even hundreds of errors. Typically adding a semi colon or a curly brace in the right place made most of the errors “go away.” The words “in the right place” are bold for a reason. At times is seems as though beginners start putting in semi colons or curly braces closely to random locations in hopes of making the errors go away. Sometimes the syntax errors go away but create interesting logic errors. Since too often students associate compiling and running with success the results are not happy for grading purposes.
I’ve been thinking about decorations for my computer lab. I’m starting to think that a couple of signs might be useful. One would say “Don’t panic” and another one just say “Think” like the old IBM signs used to say. And maybe “slow down to make faster progress.”
Panic is bad as it prevents sound thinking. And speed without thought seldom seems to get people where they want to know.
Returning to semi colons, yes we have to, they are one of the reasons so many people like to use block programming languages. Or other forms of drag and drop programming. They do help with talking about concepts and helping students to achieve some success with programming. But do they help when it is time to move on to “real” or traditional programming languages. It seems like a big jump and research seems to be light on the subject.
I had a conversation at the CSTA Annual Conference and found that there are others who are skeptical of the transference from block languages to traditional ones. We could use some more research on this. Does it work? How can we make it work better? What is the best way to help students with the progression? A lot of questions but in the mean time there are days when we still walk one semi colon from disaster.
Late edit but it belongs here:
What are we trying to transfer? If teaching with a block language we are not trying to make programmers, we are trying to let kids have some fun with programming and teach a little thinking skills, some concept of sequence, decision and iteration. In my experience these seem to transfer to a line code language. How to read documentation, search the internet for help also seem to transfer. Coding skill does not seem to transfer. A good Scratch programmer does not necessarily make for a good line code programmer. I find this is more a case of attitude and desire than ability. Kids think Scratch is fun, line code is boring and usually work.
ReplyDeleteYou can buy a Think plaque at the IBM logo store: http://logostore-globalid.com
ReplyDeleteI am going to put it above my whiteboard so I'll look like this Mr. Watson, Sr:
http://imacsteacher.blogspot.com/2014/07/mr-olson-in-his-cs-classroom.html
Thanks for the link. My THINK plaque is now on order.
ReplyDelete