Job security requires kids in my classes. Not really but having three kids in a class is not being fiscally responsible in a private school. My school has a computer requirement for graduation. It can be an apps class, a technology class (hardware and basics on how the thing works) or programming. The majority of the kids we get in the Programming I classes are main stream kids than cannot get their schedule to fit the apps class. Programming is the last thing they want to take. So I need to make the course attractive to get kids in it initially but also to get kids to stay in the CS program. If my class titles have the word “game” in them or if the syllabus says “game design and writing” I will get kids, guaranteed. Not only will I get the usual computer geeks (I say that in a good way) but I will also attract a lot of the main stream kids. Since computer geeks are few and far between I want the main stream kids. It is amazing how many stick with programming once they get a taste. So, let the games begin.
There are enough professional languages out there with a game writing component that I can find a good variety to teach. VB is not the greatest language for games but the syntax is fairly easy and there are some fun turtle graphics that can be done if the Small Basic turtle library is imported. It also helps that I can program in VB. I will start there to get the kids familiar with a “professional” line code language with a professional IDE. Transitioning from Scratch or Small Basic to line code with a fancy IDE can be a bit of a shock for the kids. If I am not comfortable with the language the transition would be even worse. Game platforms that the kids can identify with that I know of are iPod Touch/Xcode, Droid/Java, Win 7 Phone/C#, and Xbox 360/C#. The school has some iPod Touches and the required Macs. We also have an Xbox. There are enough kids with Droids in school that I am bound to have a kid in the class with one. As soon as Win 7 Phone shows up I plan on replacing my present five year old Win Mobile phone with something a little newer. Using my own phone to install games may be a bit risky but anything for the cause. The Win 7 Phone needing Windows 7 issue has been solved thanks to Alfred Thompson and MSDN Academic Alliance. I have all the platforms covered. Now I just have to decide where to go.
There are languages like GameMaker out there but they lack the transferability that I want. GameMaker is tempting because it is quick, easy and gets cool results. One of my sophomores dabbled in it last year and was able to produce a nice simple game rather quickly. Anything that interests the kids and tempts them farther is worthwhile. What is super cool with the iPod/Droid/WinPhone approach is the kids can stick their program on a mobile device and show people what they did. Now that is a recruiting scheme for a programming curriculum.
Primarily I want languages that are used for other purposes than strictly games. If, for some strange reason, they want to solve Project Euler problems or even want to write a coffee house point-of-purchase program, I want them to have a language to do so. Heading off to college with an intimate knowledge of GameMaker may not be a winning approach. The main problem for me is that these are not the greatest languages for beginners (compared to something like Small Basic). It does not help that I know little to nothing about these languages. I can do a little C# if I follow Rob Miles’ directions closely and there are no typos in the textbook. I took a Java course many years ago. (If I remember right I connected my phone handset to an acoustic connector and dialed something called Gandalf to turn in programming assignments. Things from that far back are a little vague.) And I can spell Xcode. Alfred Thompson, as usual, suggested a solution to the problem in his blog “Teaching real-world programming”. I know the guy who wrote the iPod game “Jake”. He lives in town. I have a parent who knows a guy who has written a couple of high level Droid apps and he lives in town. This may solve a couple of problems. And I have a feeling that soon Microsoft will have something available like “Win 7 Phone Game Writing for Idiots”. The iPod Xcode has a limited access issue, the Mac lab is in a math classroom and I only have two Mac Books so I am going to save that for next year. Attrition will thin out the kids advanced enough to work on it and it will give me a summer to learn to do more than spell Xcode.
Narrowing things down to just Java and C# not only makes life easier but it suits my purposes. I want the kids to see more than one language. Java may be an antique but it is still very commonly used. It is the introduction to programming language at many college CS departments. C# is a comparative new comer but it appears to have a strong future. Being a Microsoft language guarantees support and longevity.
I think the only reason we cannot get kids into programming is because it looks, sounds and, in many cases, is boring. We do not need to attract the computer geeks, they are already hooked. We need to attract the “normal” kids that typically would never think of taking a programming class. Let’s admit it; learning to program is a lot of brain sweat. If we give the kids a goal they are interested in perhaps we can reduce the CS shortage; in kids, teachers and courses.