By Duncan Buell
I have just finished leading a three week workshop for faculty and grad students from the humanities. The topic was serious (digital) games for research and pedagogy. When we teach students about computing, we try to emphasize that computing usually starts with a good application, and that the nontechnical description and definition of the application is as much a part of computing as is the technical part of producing code. I have been struck in the last three weeks by how much this is actually true when one talks with people who have great ideas but will need help turning those ideas into working programs.
Some of our visitors, for example, were interested in building simulation games for teaching history. These would be games that provided a sense of history, a sense of decision making and the social dynamics that existed in different periods of history. Part of the goal of our workshop is to help frame these games and get their development started. To build out a history game like this will require graphics and animation, and of course there is some programming. But that’s only part of the process.
Although the imagery and the logic of the programs will be crucial, more important even than these technical issues is that the history be presented. To do that, the historians have to do something they don’t normally seem to do…present history as a set of rules. If you say nasty things about your unpleasant neighbor, then yes, you could get your neighbor banned from the village. But maybe your neighbor will call in some favors from the local baron’s manager, and instead you will find yourself up on charges of witchcraft.
The graphics and imagery are important, yes. Programming the rules may not be all that difficult. But sitting down with the historian to get all the rules spelled out. That could be tough. This isn’t just crunching numbers, whether for science or a business application. This is artificial intelligence, in that the goal is a program that simulates human behavior. And it is going to be hard to work out the rules for an experience that is both historically and culturally accurate but also rich enough and complex enough to be interesting and worth doing in a classroom setting.
Is this computer science? Yes, I think it is. Computer science is not just the programming of an application. It includes all the work that leads up to the programming. This involves quantifying the world and building out and organizing the rules that describe the world. If it can’t be described algorithmically, then it can’t be programmed. And who best to try to create that algorithmic description except someone trained in turning algorithms into programs?
Duncan Buell
CSTA Board of Directors
One thought on “Computer Science Is More Than Just Programming”
Leave a Reply
You must be logged in to post a comment.
I completely agree with your comment that computer science includes all the work that leads up to the programming. I’ve recently started learning Test Driven Development (TDD). It addresses this part of the programming cycle and actually, depending on the languages you are using, can provide some tools to assist in creating the “rules.” For example, I’m using Ruby and Rails and both of those frameworks are able to utilize Cucumber and RSpec for testing. Cucumber was developed to allow both the programmers and end users to be able to develop and read rules that are written in layman’s terms. These are just a couple of tools that can help to turn great ideas into working programs.