Programming for Designers (2020): Creating the Digital World of Tomorrow

We believe programming to be an exciting, inspiring and powerful way of creative expression, and an essential skill for game designers. To know something about programming is arguably the only way to use a computer to full extend and to substantially participate in and contribute to the brave new digital world. This course offers a potentially disruptive change of perspective, and participants will experience the world of digital media in a different way, and be able to participate and contribute in ways they could not before.
This course is all about the application of programming in practical, genuine design challenges; not about gathering abstract knowledge, to be used in the future in some other context, or in other courses; but hands-on skills, to be used here and now. The course aims to facilitate the making of projects people want to have. And this does not imply little learning or learning on a low level. But learning that centres on motivation and builds on curiosity.
Arguably, the most interesting things to program are interactive systems for people to use productively, express themselves and play with each other. (There might be one or two other approaches, but for this course, I suggest to focus on interaction.) The computer has been used and it is still often used as a tool to model other media, for example, to paint pictures and cut movies. But increasingly, the computer is coming into its own, and people start to question its uses and experiment with it, and interact with it in novel, provocant, and playful ways that were unimaginable before, and which have no precedent.

Participants of this course will see how programming can significantly benefit their own design practice and gain:

  • A basic understanding of general programming principles, paradigms and practices, with an emphasis on graphics and interaction;
  • Hands-on programming skills in Processing, a modern, popular, well-supported, C-based language;
  • Their own collection of game-related routines (such as real-time input, collision detection, hardware-speed independence and simple game AI); and
  • Their own, custom-made (2D) game-making tools (such as a pixel art drawing program, and a tiled level editor).

The course is an introduction to the basic concepts of computing and programming using a general-purpose language (Processing). It is intended for a general audience with no prior programming experience, and taught with an emphasis on user interaction and graphics.
As an introductory course, there are no prerequisites. Except a curiosity and the willingness to learn a challenging but rewarding skill!

With a clear focus on applications in interaction and graphics, the course covers basics of coding in a modern, imperative programming language (program statements such as loops, conditions and functions, data structures such as variables and arrays), object-based programming and event-driven programming, as well as special-interest game-related topics such as movement, collision detection, frame-based animation, graphics tiling, real-time input controls, hardware speed independence, audio, and simple game AI.

Daniel Cermak-Sassenrath, Max Wrighton. Programming for Designers: Creating the Digital World of Tomorrow, Course, ITU, Copenhagen, Autumn 2020.