Programming for Designers (2022): Programming and the Digital World of Tomorrow

The computer has entered all areas of people's lives, media and culture - with digital games and their popularity being one of the very visible expressions of this trend. Because of their lack of technical expertise, non-tech people regularly have limited possibilities to participate in and contribute to the creation of the digital world, and their innovative ideas might never be known or realized. To know something about programming is arguably the only way to use a computer to full extend and a key skill to substantially participate in and contribute to the brave new digital world. This course aims to offer an accessible pathway into fun, meaningful, skillful and competent computer use. It 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.
Learning to program appears desirable for multiple reasons. It is an inspiring and powerful way of creative and artistic expression. It is clearly much in-demand in today's and tomorrow's job markets. Basic programming knowledge is an asset in communication: Project work benefits from non-tech people being able to understand and effectively negotiate with all team members, including the tech people, and to appreciate their roles and contributions.
This course approaches and presents programming from a hands-on, non-tech, application-centred perspective. It 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 to 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.
The course connects the endeavour to learn programming with a focus on (digital) games. The audience this course addresses, is people interested in games who have no previous experience in coding: Students of Game Design and other (design) students, DIY indie game designers, freelance design professionals, game enthusiasts, but also ordinary people just wanting to learn to program.
Learning to program is not just learning another program or tool; it is a meta skill similar to learning the principles of an universal language; people will be able to read one another's programs and create their own, share, discuss and collaborate: In this course, in other courses and in future projects.
Participants of this course will see how programming can significantly benefit their own design practice and gain:

  • An 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, tiled graphics, scolling, frame-based animation and basic 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 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 basic game AI.

Daniel Cermak-Sassenrath. Programming for Designers: Programming and the Digital World of Tomorrow, Course, ITU, Copenhagen, Autumn 2022.