Printing Code

Printing Code is a graduate course taught at the Interactive Telecommunications Program at New York University. In this course students explore the use of computational techniques to produce physical prints, focusing on the intersection between graphic design and code. Class time will be divided between exploring design topics like colors, grids and typefaces, and applying these towards computational topics like randomization, repetition, transformation and generative form.

Weekly readings include relevant writings from the history of graphic design (Josef Muller-Brockmann, Paul Rand), articles from the history of computation (Vannevar Bush, Douglas Englebart) and everything in between (Sol Lewitt, Edward Tufte).

Weekly homework can be produced using the digital printers at NYU’s Advanced Media Studio, however students are encouraged to utilize whatever physical printing techniques they prefer, that being stencils, letter press, silk screen, weaving or home-made printers.

The class aims not only to teach the students how to create physical prints via code, but also to have something interesting to say about it. The class requires ICM or similar programming background.

Github Repository

All code examples and frameworks used in the class can be found on Github:

Teacher Info

Students

Introduction

It’s important to use your hands, this is what distinguishes you from a cow or a computer operator - Paul Rand

For many years graphic design education has been a separate field. You learn about color, grids, form, scale, typography, and books on the subject are geared towards individuals with visual creativity. The opposite can be said about the field of programming that for a long time has been geared towards technically skilled people. During the last decade this line has obviously blurred, but not to the degree one would expect.

For someone who grew up as a part of the computer generation, this divide might seem problematic. My first experiments with color and form was also when learning HTML and CSS, so how do I know where design stops and programming begins? Graphic design and programming are so intermingled today that a term like Computational Design seems like a much better explanation of the two merging fields. Design is how it works, not just a last layer of make-up.

As I’ve grown more experienced as a graphic designer, it has become obvious that a great deal of this experience is built on a very systematic approach to design. Graphic design can at times seem like algorithms controlled by a creative vision. Grids are just basic measurements. Typography is spacing and curves. Color schemes are proportional spacings placed on the color spectrum. This class is about investigating what happens when we start creating graphic art only by writing code. It’s an experiment in replacing already exiting tools (that too long has dictated the visual look of computational design - hello drop shadow) with our own software programs. We will investigate graphic design systems, distill them into algorithms, and eventually let them spin out of control.

It’s important to note that this class is not so much about generative design, as it’s about graphic design through code. I see no value in splattering a shape 5000 times on a canvas, calling it generative art, just because we can. It’s about distilling already existing graphic design techniques into code, making valid and reasonable assumptions, and then - only then - letting things spin out of control.

Week 1: Hello World

Beauty is a function, after all, of any relevant visual message. Just as prose can be dull and straight-forward or well edited and lyrical, so too can a utilitarian object be designed to be more than just simply what it is.

Timothy Samara, Design Elements

In this class we’ll introduce ourselves, and talk a little bit about the class, graphic design and computation. Please read these texts before coming to the class.

Readings for this week

Class Overview

Assignment for next week

Week 2: Form

Without aesthetic, design is either the humdrum repetition of familiar cliches or a wild scramble for novelty. Without the aesthetic, the computer is but a mindless speed machine, producing effects without substance. Form without relevant content, or content without meaningful form.

Paul Rand

This week we’ll look at the most basic subject in the visual arts: manipulation of form. We’ll talk about techniques for creating form in Processing, look at examples from the history of graphic design, and introduce basic ways of using randomization and repetition.

Readings for this week

Class Overview

Assignment for next week

Week 3: Color

In this class we’ll dive into color theory and look at color handling in Processing. We’ll talk about the history of color, the difference between RGB and HSB, and investigate how to generate color schemes in code.

Assignment for next week

Week 4: Typography

To create a typeface that is easily malleable in the computational medium, the constituent shapes must be reduced to compact numerical forms.

John Maeda

This week we’ll look at typography. We’ll go through the basic unit measurement that make up a typeface, and how we can manipulate these in Processing.

Class Overview

Assignment for next week

Week 5: Grid Systems

A grid system is not just a set of rules to follow… but it’s also a set of rules to play off of–to break, even. Given the right grid – the right system of constraints – very good designers can create solutions that are both orderly and unexpected.

Khoi Vinh, New York Times

In this class we’ll look at grid systems and how to use them as guiding constraints for your designs. We’ll go through different types of grids, implement these in code, and see how it translates to the world of computational design.

Class Overview

Assignment for next week

To make a well-designed logo requires skills in form, color, type and grid. We’ll look at everything from traditional logos to organic, computational logos, and we’ll go through different techniques for making generative logos in Processing. This week’s assignment is a 1 week midterm project.

Class Overview

Assignment for next week

Week 7: Midterm Presentations

This week will be midterm presentations.

Week 8: Randomization

Randomization is about letting the computer choose for us. This week we’ll look at ways to create programs that create unique graphics. We’ll look at basic randomness, Perlin noise, and how a simple thing like randomness can help you create unexpected things.

Readings for this week

Class Overview

Assignment for next week

Week 9: Repetition

Repetition is highly computational, still human beings have created patterns as long as we have known creative expression. In this class we’ll focus on the use of patterns in graphic design, and look at different repetition techniques and ways of creating custom patterns.

Class Overview

Assignment for next week

Week 10: Transformation

What happens to graphic files when we start to manipulate the pixels in code? Can we still preserve meaning while creating beauty with algorithms? This week we’ll look at different techniques for manipulating pixel arrays. We will look at examples of transformation in graphic design even before the computer, compare these to recent examples of transformation in graphic design products, and go through photo filter algorithms in Processing.

Class Overview

Assignment for next week

_From now on and until the end of the semester, we will be working on final projects.

Week 11: Motion

Can a still image have movement? In this class we’ll experiment with animation and movement in graphic design. We’ll see what happens when we introduce physics in our graphic designs. Like a photograph is a snapshot of a moving world, so too can a printed graphic be a snapshot of a moving virtual world.

Class Overview

Week 12: 3D

In the same way as motion can be used in the graphic arts, so too can 3D. Even though we are printing on paper, we can still simulate 3D in our code, twist and turn objects, and randomize the resulting print. We’ll look at recent developments in graphic design and 3D, including 3-dimensional typefaces and logos.

Week 13 + 14: Final Presentations

We will combine 2 classes into one long final class presentation. I will invite critics from the design, coding, and curating world, and you will each do a 6-8 minute presentation, followed by a short discussion.

Libraries

These books might come in handy before, during or after the semester. You will not need to purchase or read these, but all of them are highly recommended reading.

Studios / People

Navigation