Code Sourcery: Algorithmic Practices

Art and Technology Studies 2125 001
Tuesday, 6 p.m.–9 p.m.; Thursday, 6 p.m.–9 p.m
Spring 2013, January 28–May 9

Paul Hertz, Instructor

tw: ignotus_mago
fb: ignotus_mago
flickr: ignotus
ut: Ign0tu5

This is the syllabus from 2012, currently being revised to offer more readings from Daniel Shiffman's book (now published) The Nature of Code, our primary text for the course.


About the course

Syllabus in PDF format.

Prerequisites: Students should have a basic familiarity with programming techniques in any language, and with Photoshop, Illustrator, digitization, and digital output techniques.

Description: Algorithms (rules) for creating patterns in time and space are as old as pottery or drumbeats and as new as computers. Through selected readings and an introduction to programming in Processing, this course will provide an art historical perspective on algorithmic practices from tiling patterns to generative systems. Students will develop a course project based on algorithmic procedures in disciplines as diverse as painting, weaving, ceramics, music, computer graphics or animation.

This course divides its time between lectures that consider the history and social implications of algorithmic practices and studio time where students use algorithmic techniques to produce art. The final section of the course extends the notion of algorithmic practices to a wide range of cultural interventions that digital technology has enabled, including sampling, glitching, and software as a source of magic and metaphor in contemporary culture.

The course welcomes students whose primary form of production is not digital. While digital production is an essential part of the course for teaching concepts, the choice of output medium for many assignments and for the midterm and final project is up to the student. Projects can use code as a source for images, media or data that is incorporated into non-digital display or performance. The instructor is a master digital printmaker and will share his expertise in digital printing and color workflow.

Students are expected to gain a basic knowledge of programming in Processing, but the majority of algorithmic techniques will be presented through libraries or sample code where experimentation does not require a complete understanding of the code so much as an understanding of its underlying concepts and the points at which meaningful modification of parameters and code can be made. In this respect, the course is more like a hacking workshop than a formal introduction to programming.

Daniel Shiffman's The Nature of Code is the primary text, but there will be many other readings. Students in need of an introduction to coding in Processing may find several texts at Reas and Fry's Getting Started with Processing and Processing: A Visual Handbook for Visual Designers and Artists, and Shiffman's Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction are all recommended.

Contact hours: Mondays from 6 to 9 p.m. will be dedicated to lectures introducing weekly topics followed by in-class coding exercises. Wednesdays from 6 to 9 p.m. will be dedicated to studio time and reviewing homework.


1. A Brief History of Algorithms
Pattern-making, a fundamental human activity. Prehistoric pottery, weaving, architecture, and music. “Programming” as a framework for Constructivism, Conceptualism, and Computational Art. Fluxus performance and Sol LeWitt’s wall drawings as examples of rule-based procedures.
Reading: Frieder Nake, “The Semiotics Engine,” from CAA Art Journal, Spring 2009; selections from Owen Smith, Friedman & Sawchyn, Fluxus Workbook.
Assignment: Rule-based image, text or performance.


2. Games of Chance
Aleatoric compositional games from Mozart to Cage. Chance as a decision-making process in computational art. Flavors of chance: white noise, 1/f noise, Brownian motion, Gaussian distributions, Perlin noise. Introduction to Processing.
Reading: Allan Kaprow: How to Make a Happening. Guy Debord, Theory of the Dérive. Martin Gardner, "White, Brown, and Fractal Music," essay from Fractal Music, Hypercards and More..., in the class portal.
Assignment: Chance operations image, text or performance.

3. Play it again again: Repetition and Variation
Iteration as a fundamental principal of design and of Industrial Age production. Variation and custom production through digital technologies in the Technological Age. Iteration in Minimalist painting and sculpture and contemporary music, in the computer graphics of Vera Molnar and Manfred Mohr. Loops and conditionals in Processing. Combining chance operations with iteration to create variation.
Reading: Texts by Vera Molnar and Colette and Charles Bangert from Ruth Leavitt, Artist and Computer.
Assignment: Iteration/variation piece.

4. Symmetries in Time and Space
Scaling, Rotation, Reflection, Shearing, Crystals and Friezes, Symmetry groups in the Plane and higher spaces, Tiling Patterns. Temporal symmetries in music: counterpoint, dodecaphonic music, serialism. Affine transforms in Photoshop and Illustrator. Programming symmetry operations in Processing, useful libraries. Graphics output from Processing, still frames and animations.
Reading: Selection from Washburn & Crowe, Symmetries of Culture.
Assignment: Symmetrical/contrapuntal image, text or performance. Write Midterm Project Proposal.

5. Time, Motion, and Flows
Historical origins of the calculus and its cultural importance in establishing a science of time, space and flows. Modeling motion and time in Processing.
Reading: At, read the tutorial on the PVector class.
Assignment: Work on Midterm Project.

6. Midterm Project
Finishing touches on projects followed by critique.
Reading: Roman Verostko on The Algorists

Generative Systems

7. Growth
The study plant and animal growth in the history of science: Linnaeus, Cuvier, Darwin, D’Arcy Wentworth Thompson. Modeling growth with L-systems in Processing (L-systems are also known as string-rewriting systems, various libraries are available and they are actually easy to build from scratch).
Reading: Selections from D’Arcy Wentworth Thompson, On Growth and Form, (BW PDF edition is best) and from Prusinkiewicz and Lindenmayer, The Algorithmic Beauty of Plants.
Assignment: Use an L-system to produce text or image. The text may be performed.

8. Recursion: Fractals, Chaos and Dynamic Systems
A single mathematical technique, that of recursion, where the results of one iteration of a function are fed back into the function, gives rise to a wealth of modeling techniques for exploring natural forms and processes. Fractal music. Recursion in Processing and its use to model fractal images and probe deterministic chaos.
Reading: Selection from James Gleick, Chaos, the Making of a New Science. Edward Lorenz, The Butterfly Effect.
Assignment: Use a dynamic system to produce and image or text.

9. Cellular Automata and other Generative Systems
An overview of cellular automata, reaction-diffusion systems, swarms, artificial life, and genetic programming. Generative systems in art. Examples of cellular automata and reaction-diffusion systems in Processing.
Reading: Swarm Intelligence, an essay and photos in the National Geographic.
Assignment: Using the genetic algorithm, produce an image or text. Write a final project proposal.

Software and Cultural Production

10. Sampling and Remixing: Copy-and-Paste Culture
An examination of collage, sampling, and remix culture. Image display and image processing in Processing. Web-page scraping in Processing.
Reading: William Burroughs, “The Cut-Up Method of Byron Gysin.” Other selections to be determined.
Assignment: Using code written in Processing, created a sampled bitmap or text.

11. Glitches, Leaks, and Crashes: The Hidden Face of Software
Glitches and system failures. Audio and video feedback. Glitch as a chance operation, manifestation of complexity, signature quality of software and networks. Glitch as tactical media, disruption and symbolic gesture. Glitch as art. Methods of producing image, audio, and video glitching, including some Processing code.
Reading: Selections from Caleb Kelly, Cracked Media: The Sound of Malfunction; and from Olga Goriunova and Alexei Shulgin, “Glitch,” in Matthew Fuller, Software Studies.
Assignment: Create a series of glitched images from a single source image.

12. Software as Magic and Metaphor
Computer code enters society as a new form of text, intimately entangled with other forms of text and with social and cultural interactions. Code brings about virtuality, “the cultural perception that material objects are interpenetrated by information patterns” (N. Katherine Hayles). As software, an executable language, code offers a wealth of new metaphors for the cosmos, the body, and society. It operates as a new logos and a new alchemy—“sourcery,” as Wendy Hui Kyong Chun calls it. Discuss final project proposals in class. Advanced user interaction in Processing.
Reading:View lecture by Manuel Delanda, Deleuze and the Use of the Genetic Algorithm in Architecture. Selections from Claude Levi-Strauss, Cultural Anthropology, and Wendy Hui Kyong Chun, Programmed Visions: Software and Memory.
Assignment: Work on final project.


13. Discussion: Formal Languages as a Framework for Art Production. Work on Projects
Assignment: Work on final project.

14. Work on Projects
Critique week, no classes.

15. Critique