It has been two months of teaching programming with Corona. As expected in classes of mixed ability level and interest level there are mixed results. My sharp kids that like programming have no problems, my sharp kids that could care less about programming suffer but succeed; my not so sharp kids (only one or two out of twenty-one) are struggling massively. I did have to abandon the text I was using. There were simply too many leaps of intuitive magic for the kids (and me) in many places. I started writing my own exercises with much smaller programming goals. The really nice thing about Corona is the visual interest. It is easy to make simple programs with moving objects, lots of colors and events which will change the behavior of the program. Some of the kids have installed their simple programs on their Droid phones just to say they did it.
A good thing, and a bad thing, are the Corona error messages. They are usually pretty worthless. After using Visual Basic which has great error messages that will often tell you how to fix the programming mistake you made, Corona was a bit of a shock. If you are actually trying to produce some product the arcane error messages are a real pain. For teaching I actually like the lack of useful messages. The kids have to go back through their code and find the problem. It forces them to write the code in modules. They have to get one module working before going on. The strategy of writing a big mess then testing for errors just does not work.
Doing Corona without a high school level text (which I used to have for Visual Basic) has taught me quite a bit about pedagogy. Show and tell (lecture) is pretty much worthless. So is showing code on the projector. The sharp kids will get the new material in minutes and then tune me out. They want at the computer. The not so sharp kids tune a lecture out in seconds then ask the questions the lecture answered. Or they will stare at the computer and complain they do not get it. Nothing new there. I have known this for years but without a text I have had an inclination to do more talking and projecting than I usually would. What seems to work best is give them an assignment, some code snippets that are related (but not exactly like a tutorial giving all the needed details) and step back. The sharp kids take it and run. The not so sharp kids ask the sharp kids. At first I was worried that the kids that did not get it were going to copy code and be happy. Not so. The assignments are general enough that they all want to make something unique. Out of 21 kids I have about 5 that a pretty good at figuring things out. They are not afraid to read the API or to tinker.
A tool that really helps teach programming is lab management software like LanSchool. Being able to get kids eyes off the computer by over-riding their monitor is great. Being able to show all the kids a piece of code from another kid or put my screen on their screen is really handy. I had a 30 day demo of LanSchool and since it has expired I realize how useful it was. Lab management software is in next year’s dream budget.
Overall I am pretty satisfied with my Corona direction. Corona does have some major, right on the edge of deal breaker, issues. It requires a unique login on each computer for each user. In a lab/school this is a major pain. The kid has to work on a particular computer; they just cannot sit down anywhere and work on their program. The fact that I have to design and write my own book is taking time I simply do not have this year. The up side is that a beginner can play with physics, animation and events without jumping through a whole bunch of hoops. They can make fun things happen and still learn some coding on the way. Now that I have run some kids through the mill I have a better idea as to what they can and cannot do. This gives me more direction on what to write in the way of exercises. Which is what I should be doing instead of working on this blog.