Preface A Model A Medium A History Variables Functions Control Loops Classes
Source Overview


“To describe the problem is part of the solution.
This implies:not to make creative decisions as prompted by feeling but by intellectual criteria.”

Karl Gerstner. Designing Programmes. 1964

Introduction to Designing Programs

Designing Programs is a condensed, pedagogical course to computer programming for higher education students working in the visual arts. It serves both as a means for learning how to program and for understanding how the medium of code can be used in the creative process. It follows a structured and methodological approach to acquiring fundamental concepts of programming. I have kept it concise, focusing on the technicalities yet giving reference to a vast number of texts, projects and resources that I hope will enable the learner to deepen his or her knowledge on the subject.

Designing Programs is the fruit of working with a variety of visual artists, designers and schools as well as giving many workshops and lectures on the subject since 2010. The present form has evolved in line with my most recent work as a teacher at l’ésad d’Amiens and for which this course remains an important pedagogical resource. It has therefore been written primarily for my students, to help them understand the key concepts underlying the art of programming and to engage them with its creative possibilities.

Designing Programs takes inspiration from Karl Gerstner’s seminal theoretical book of the same title written in 1964. Gerstner’s work lies at the heart of my thinking about a systemic approach to developing artistic ideas - the imaginative use of a rational process.* This procedural approach has a rich history in art and is intrinsically linked with the introduction of computers for creation and programming as a mode of thinking. I have strived to make links with that history and indeed with the underlying thinking that is an essential part for students who wish to fully understand the potential of the medium.

My main reason for using the web to share this work is quite simply due to its dynamic nature. The printed book, whilst a most perfect medium for reading, is quite a cumbersome form to update and quite incapable of introducing media beyond the printed page. Finally, there is only so much one can achieve in the run of an academic year. It is hoped that this computational edition of my course can expand on my teachings. Ultimately, this work aspires not only to acquire the fundamental concepts, I want it to encourage my students to dig deeper - that you begin to understand the finer mechanisms of what we call algorithmic thinking.

It should be noted that I use two main programming environments and languages as a means to introduce the concepts in this course: Processing is a java based language developed for artists and designers who want to develop specifically desktop applications. It’s sister project, P5js follows in a similar tradition of syntax yet is based on JavaScript and hence more adapted towards web applications. For a detailed introduction to both these technologies, I advise consulting their respective websites.

next chapter...


Gerstner Karl. Designing Programmes
Lars Müller Publishers, 2019, originally published 1964.

Fry Ben, Reas Casey. Processing. A Programming Handbook for Visual
Designers and Artists

MIT Press, 2014.

Groß Benedikt, et al.Generative Design
Princeton Architectural Press, 2019.

Géridan Jean-Michel, Lafargue Jean-Noël. Processing.
Le code informatique comme outil de création.

Pearsons, 2011.

Reas Casey, McWilliams Chandler, LUST. Form & Code
Princeton Architectural Press. 2012

Ultralab et al. Hello World! Processing
Ultralab. 2013