OK, so maybe not hard for other programming teachers but for my sample of two it is by far the most time consuming and can be the most confusing course we teach. The difficulty is there is always something new and interesting to teach. In my usual lifelong rebellion against status quo I am always looking for something new and fun. Yes, we could make a very secure and consistent Java or VB curriculum that we could teach the same way every year. The kids would learn some programming skills and probably, except for the few and far between uber-geeks, never to take another programming course again. Instead we have to make programming interesting and fun. What a couple of idiots.
We already are using Corona (Lua) as our second semester teaching language so the kids can learn a little game writing. So what if we have no real lesson plans, not a lot of experience with the language and a horrible debugger. It is free and it is fun. Kids take a second and third semester of programming because they like programming in this language and making little games. Amazingly enough, along the way they learn some programming!
I have eight Mindstorms robot kits sitting on the shelf. I have not used them in a couple of years because I hate the NXT-G programming environment and I cannot afford enough licenses for RobotC, which I do like. Then last month I stumbled on Enchanting, a Scratch based language for controlling the NXT robot. So why not try this? I only have to learn how to make it work with the NXTs, learn the idiosyncrasies of a new controller language and build a robot. Oh, I also have to figure out a direction to take the students. Details, always details.
A thought comes to mind, there is a Kinect/Scratch interface and there is now a NXT/Scratch interface. Now can I get the Kinect to command the NXT through Scratch? Can I use this to get kids interested in programming? Dang, programming is hard to teach.