I wanted to kick off my writing about computing education by talking about what is really the big idea that we’ve had at Goldsmiths: Creative Computing. As a department we have worked very hard at developing an interdisciplinary approach to computing, but particularly a creative approach, which takes cues from disciplines such as Fine Art, Music and Design. This has happened throughout the department, but in terms of undergraduate teaching this started with our BSc Creative Computing programme, which has since developed into a suite of programmes: Music Computing, Games Programming and most recently Digital Arts Computing.
All of these programmes treat computer programming as a creative discipline. We teach our students the technical aspects of programming but also how to use it creatively to develop innovative artistic projects.
This idea really comes from two directions. The first is enabling artists to use computing programming as a powerful new medium for their work, that enables them to create procedural, generative and interactive work without the constraints that using pre-existing software brings. This is a really important part of our work, which has resulted in some fantastic, innovative student work, but in this post I want to focus on the other direction: how can creative disciplines inform the way we teach computing and computer programming in particular.
We’ve based how we teach creative computing as much on how art is taught as how computing is traditionally taught. Of course we teach the basic programming structures and suggest basic practical exercises to get used to them, but we also encourage students to develop their own practice which is driven by their own creative ideas. Students work on projects of their own devising, to relatively open briefs. These projects are assessed on their technical challenge, but also on their creative outcomes: the quality of execution of the end result and the innovation in the concept. Teaching in these courses primarily happens in terms of feedback on the projects, both by teachers and by fellow students (peer feedback is going to be a topic of a future post), just as it would be in an art school “crit” session.
What do these art school methods bring to computing teaching? I would say there are lots of benefits. Some are really specific to doing artistic work with programming, but many can help inform any kind of computing teaching.
Creativity. Creative computing is dsigned around getting our students to be creative and pay attention to the design aspect of their software. This is vital to artistic work but also increasingly important in mainstream computing as it becomes more user centric and design focused on the era of the iPhone and the Web app. If nothing else, students that end up working in games or Web development where mixed teams of coders and designers will have experience of both types of work. This is really valuable because communication across those domains has traditionally been difficult.
Motivation. This links in to mark Guzdial’s (let’s see if I can ever get through a computing ed post without mentioning him) idea of Media Computing, which is pretty close to Creative Computing in some ways. Traditional geeks might be intrinsically interested in programming but most people are more interested in what you can do with it. Creative and artistic are simply more interesting toand most people. I also think our approach adds something to media computing because we focus on independent creative work. Students work on their own projects, which they define and which they are (hopefully) passionate about. This will make them more engaged with the project. The more engaged they are the more time they will spend programming and the most important thing when learning programming is time spent programming.
Independence. The fact that students are working on their own projects of their own devising early on also means they have to be more independent. They are working on something that only they are doing and that won’t necessarily only require elements they learn in class. This means that they will have quite a lot to figure out themselves (with our support, of course). This encourages them to be more independent both in terms of defining projects and solving problems, but most importantly it encourages them to be independent in their learning. They have to go out and figure out stuff (libraries, techniques, sometimes even languages) that we haven’t taught them. That is probably the one most important skill we, as university teachers, can help students learn. Particularly in computing, where technology changes so rapidly that graduate will have to constantly be learning new things to keep up to date.