Innovations in Visualization

Creative Programming for Digital Media

CPSC 601.28

Fall 2014 | MW 5:00-6:15pm | MS 680A

Instructor: Lawrence Fyfe

An introductory course for teaching the basics of programming media, including both visual and sonic output. The focus is on using programming skills to build creative projects. Topics covered include image manipulation, animation, interaction, and sound programming. Students use the Processing development environment to create media projects.


There is no textbook for this course. Books about programming have a tendency to become outdated quickly. Students will use on-line resources because they are more current and so that students can develop a feel for finding the information they need without a textbook. The Processing web site contains all of the information that students will need for this course.

Processing Language Reference


The course grading is entirely based on projects created by the student. For each project, the student must turn in their Processing code for evaluation. The Processing sketch must run or it cannot be graded. Grades are based on whether the sketch meets the specification for the project. A sketch that runs and meets the project specification will get an A grade. Each missing feature or feature that does not work correctly will result in a lower grade. The final grade for the course will be an average of the grades given for each project with each project grade weighted equally.


Each project is graded separately. However, each successive project can build on a previous one.

1) Create an image collage:

* Create a layout based on the Processing coordinate system.
* It should use basic shapes and colors.
* Use at least two lines and one curve
* There should be at least one image with some manipulation.
* It should have some text.

2) Create an animation:

* Create an object to animate using a class in Processing.
* Have the object move in a meaningful way.
* Have the object change size or have it move on a curve.

3) Create an interactive sketch:

* Add some kind of interaction (mouse or otherwise).
* Make a substantial change in the sketch based on the interaction.
* Create a shape and manipulate it via interaction.

4) Create a sketch with sound:

* Use the Minim library for Processing to make sound.
* Manipulate the sound via interaction.
* Map the sound to some kind of animation.

Use the following scheme to name your project files:


Week 1
September 8

1. Variables, methods, control structures, and the coordinate system

September 10

2. Shapes and colors

Week 2
September 15

3. Lines and curves

September 17

4. Arrays and images

Week 3
September 22

September 24


Project 1 due at midnight on Friday, September 26.

Week 4
September 29

6. Introduction to classes and objects

October 1

Week 5
October 6

8. Animating shapes and images

October 8

9. More animating shapes

Week 6
October 13

Thanksgiving - no class!

October 15


Project 2 due at midnight on Friday, October 17.

Week 7
October 20

10. Recursion, noise, and generative techniques

October 22

11. More generative techniques

Week 8
October 27

12. Interaction and event-based programming

October 29

13. More interactions

Week 9
November 3

November 5


Project 3 due at midnight on Friday, November 7.

Week 10
November 10

Reading days - no class!

November 12

15. Libraries for Processing

Week 11
November 17

16. Sound basics

November 19

17. Digital audio

Week 12
November 24

18. Programming sound

November 26

19. Interactive sound

Week 13
December 1,3

Discussion + finish final project.

Project 4 due at midnight on December 5.