Ian Lamont sent me the following:
Thought you might be interested in an MIT class project: Developing a basic computer science curriculum around Lua scripting in WoW. We published it earlier this month at the following location:
Now, I'm a software dev by trade, so this was pretty interesting. Games have traditionally been a path into programming, and WoW does have some interesting features for aspiring devs.
One thing about WoW is that it is an "information-rich" environment. There's all sorts of API calls you can make to get information about different parts of the game world. Then you can easily change things, and make the same calls and get different data.
In the link above, this is illustrated with simple calls like "IsOutdoors()". You can move your character in and out of buildings to get different results.
That's something which is actually somewhat hard to set up from scratch at the beginner level. You have to set up a datasource, and then connect to it, then learn how to query it and interpret the results.
As well, it's easy to move into simple, useful mods in WoW. Sometimes it seems like it is pretty hard to make a simple app these days. Making a small mod is a lower bar.
On the other hand, WoW does have one huge philosophical negative as an environment to learn to program in. Programming is more than just processing data and displaying it. The other half of programming is automation. Not just slicing and dicing information, but "doing" multiple actions.
And here WoW goes to great lengths to prevent the user-programmer from being able to automate actions. You'd have to make clear the idea of what is theoretically possible to automate, like moving your character in a pattern, but is prevented by the game company.
Either way, it's an interesting idea. Learning to program can be challenging at first, because it often seems like there's this entire framework that needs to be set up before you can accomplish anything. But in WoW, that framework already exists and has useful data. And mods and the mod community provides a ready path for the new programmer to make small apps that may even be useful to other people.
But in the long run, I wonder how a programmer who doesn't grasp the concept of automation is going to fare.