I have been contemplating my proposed game programming course for next year. Previous experience has taught me that teaching a game programming course is different from a regular programming course. With a regular programming course the purpose is to solve a problem with a particular language. The problem is usually pretty well defined, especially if teaching the course with a textbook, and is usually fairly limited. In a game course not so much. Yes, the kids can be given a game to write with well-defined rules and objectives but there always seem to be refinements and add-ons.
That got me thinking of what is the objective of a “game” course? Originally my intent was to give the course a very tempting label to attract kids into the course. I would teach a programming course with a game building language (Corona, GameMaker, TouchDevelop) by working through the various tutorials. In other words, a syntax course. The students in the course have already had at least one programming course so there is less need for teaching the basics of programming: sequence, loops, etc. This is what I have done before. It was a semester long Corona course were we built an oil drop program just to play with gravity and shapes bouncing, a whack-a-mole game for Android phone, and a very basic Angry Birds game for Android. Overall I was satisfied with the course and the kids learned some more programming. Giving a course a title and objective that would tempt kids into the course is a perfectly reasonable strategy, at least as long as programming is an elective that has the reputation of being “hard”. But it was not really a “game” course.
I have been thumbing through the Microsoft Creative Coding with Games and Apps (CCGA) with the intent of offering it next school year. It is tempting to have a nice cookbook to follow. From what I have seen so far it is also a syntax course built around games. Again, this is not a bad thing, it just is not a real game course.
What I would like to do is start out with the typical syntax through a game language pretty much like I do now and then migrate into a game design course. The objective would not be to design the next Angry Birds but to understand the philosophy of game design. One of the commenters on my last post, Brian Sea, suggested “The Art of Game Design” by Schell as a starting point. I hate dropping $60 for a book but it looks like a worthwhile read. Missoula also has some small programming based businesses. One of them that I have visited with my class, OnXMaps, writes an original software product. Although it is not a game it is an original product that requires more than just programming skills. I need to dig up some software design people to come into the class.
All of this is part of my desire to teach Computer Science and not just programming. No matter how I look at it programming is no different than teaching welding or wood shop. It is a job skill. It is a pretty handy job skill, just like wood working and welding are handy, but still just a job skill. I am thinking if I can introduce a design and concept thread in the game course I can get more of a higher level thinking skill going.
And besides, maybe one of my students will develop the next Angry Birds and remember who got them started and contribute to my retirement fund.