As usual my Programming I is a mess. I have one kid smarter than me and loves programming, one kid not smarter than me but a hard worker and wants to like programming. Then ten kids that are the usual main stream group, willing but not overly impressed. And a girl that thought programming meant playing computer games and is doing everything she can to get out of the class. In an effort to make things work and not have two bored kids I have taken the two overachievers and put them in a separate room with a Corona book. The girl is probably not going to be able to transfer out and, I have a feeling, is going to decide “this class sucks” and is going to pout her way into a terrible grade. Too bad, she is not stupid, just not very mature. Hopefully I can find something to tweak her interest. The other ten are going to have some fun and incidentally learn some programming and computer tech.
As usual I started with Scratch. I am not a big fan of Scratch. For simple programs and as a pure introductory language I think it is great but as soon as kids get a general idea of how programming works I like to switch to Small Basic. Scratch can be a little frustrating when the sprites do not behave as expected. Some cool things can be done with Scratch but as the program gets more complicated I think it starts teaching bad habits. I guess I am also a bit of a traditionalist when it comes to languages; I like my code in lines. The other programming teacher stays with Scratch much longer and has good results with his classes. He is a business teacher that learned his programming with Scratch and Small Basic so his expertise is different than mine. He is much better with the beginning kids than I am. I am a geek, he isn’t.
The two kids I gave the Corona book to should be an interesting study. The uber-geek kid is going to be the teacher for the non-geek but smart kid. The uber-geek has very little programming experience and had definitely never seen Corona. We will see how good Brian Burton’s “Beginning Mobile App Development” really is. Brian has a new book for high school; I probably need to give the kids that one instead. Both kids are interested so I should not have a problem with them getting off task. Come on, I can dream can’t I? With them in a separate room next door that does present a bit of a problem for me jumping back and forth but it seemed the best option. I guess we will see.
My advanced class is going winningly. We went through the little problem solving exercise with the series problems. The kids figured out the algorithms rather quickly. We are now working in Codea. Why Codea you ask (or not)? Why not? It is a nice C based language (Lua), it has fairly good documentation and some nice beginner level books and tutorials, it is free (this is a biggie), and best of all it will write apps for the iPad which is of great interest to the kids. Over the years I have decided that the language I teach with is totally irrelevant to the student’s future in college. It is more important to get the kids excited about what they are doing. Beating a boring language into their head just means most of them will not consider a future in computers. I would rather generate a lot of average programmers out of my little high school program than 1 or 2 high speed types. Those high speed types seem to be able to take care of themselves. So long as they can problem solve the language is irrelevant.
The first issue with Codea was finding 6 Ipads for the kids to use. I borrowed 4 from the elementary school and had a couple spares in my office so we were good to go. Originally I thought Codea was very similar to Corona. Both are based on Lua so I thought that would give me a leg up on the kids and my knowledge would transfer over. Opps. Yes, they are both based on Lua, which is the only similarity. In Corona you build an object, make it touch and physics aware and away you go. In Codea there is no connection between an object and the screen. It is possible to move an object around the screen but the approach is completely different.
Teaching a new language is always interesting. There is learning the language itself of course but that is usually the “easy” part. What is more work is building assignments and a teaching plan for the kids. I have to go through the documentation and sometimes rewrite it for the kids level. Dreaming up assignments so I have something to base a grade on is often the biggest pain. I will get a good idea, give it to the kids then discover the project is a bit more than I expected. I try and base my assignments from the reading but sometimes I forget what their knowledge level is and over think a problem. I try and do the assignment before I assign it but I am often doing the course on the fly just a couple days ahead of the kids. Then sometimes what I think will take a couple weeks takes them a couple of classes. Win a few, lose a few. Taking on a new language keeps it interesting for me too.
Computer Science is a fast changing subject unlike math, history, English or most science classes. There is always something new and interesting to try out. I could make life easy and teach the same Java or Visual Basic class that has been taught by programming teachers for 20 years but how boring. There are enough boring teachers teaching boring subjects. Teaching is way too much fun to screw it up with boredom.