CPSC 120: Project 3

Due at noon on Monday, 12/09/2013

Home | Announcements | Assignments | Example Code

Generative Art

For your last work of this semester, you are to complete the "Lesson Four Project" on page 162 of Shiffman. Of course, the Lesson Four Project requires completion of Lesson Three (p. 137), which requires completion of the Lesson Two Project (p. 98), which requires Lesson One (p. 42). Yes, you're to do it all!

We'll put it another way. Your job is to construct a program in Processing that is an original work of art. The work should use primitive shapes, lines, color (RGB and/or gray, with or without varying degrees of transparency), images (if you want them). What you do with this is up to your own vision.

Minimum Requirements

  1. Your work must interact in some way with user input (mouse clicks at a minimum, and perhaps also mouse movement and keyboard input).

  2. At least one aspect of interaction with the user must be affected by a conditional statement (obviously, more than one is fine).

  3. There must be at least one use of a loop (again, that's a minimum number, not a maximum).

  4. Your work should organize significant pieces of code into functions that you define (definitions of setup(), draw(), keyPressed(), and mousePressed() are fine, but they don't count here). At a minimum, you should have one function that does not return any value (i.e. void return type) and another one that does (of any type: int, float, boolean, array, an object, etc.). You should have at least one function that takes no arguments and another that takes at least one argument (your choice of type(s)).

  5. You must use at least one array, anywhere in your work.

  6. There should be at least one class definition, each one in a separate file from your main program. The object you define with this class should have a constructor and at least one method in its definition. You main program should use at least one and perhaps many more objects of this defined type, creating (an) instance(s) via constructor invocations and making use of the methods defined for the object.

Other Criteria

  1. Your work will be assessed in part on the elegance and clarity of your code, that is, the clarity an simplicity with which you accomplish complicated tasks. This is a somewhat subjective criterion, but it mainly boils down to the idea that there should be exactly as much code as you need to get a job done, neither more nor less, and what's there should be comprehensible to an independent reader.

    As a partial (but not complete list), variables should be used instead of hard-coded values, but the scope of a variable should be neither more nor less than what is needed (e.g. only make a variable global if there's no other choice). Loops should be used instead of repeating a related series of operations one at a time. Tasks that are repeated should be defined as functions that are called, rather than copying and pasting the same text over and over.

  2. Work whose visual presentation reflects a particularly thoughtful attention to grace, detail, and coherence of presentation will count favorably.

  3. Somewhere in your work, there must be a tiny picture of a frog. If this compromises your artistic vision, it need not be present at all times, but it must appear some of the time.

  4. Each file you submit must have a "header" comment of the following form:

       <file name> ( < n > of < number of files > )
       Author: <your name>
       CPSC 120, Project 3
       Last modified:  < the date > 
  5. Extra credit may be given for the incorporation of ideas you learn on your own that we have not covered in this class. Examples include effective use of the noise() function (see "Perlin noise"), manipulation of PImage values (above and beyond the basic work we have learned), L-systems, etc. For any such "extra", you should document clearly what idea you have learned and give a clear citation of your source (even if it is page numbers in later chapters of our textbook).


The term "generative art" encompasses more than just interactive visuals constructed by computer programs, though this has become the dominant tool for making such works. Here's a general overview: http://en.wikipedia.org/wiki/Generative_art.

Generative.net (http://generative.net) has a good collection of links to various works

There's a particularly nice (and cheap) book by Matt Pearson that you might enjoy. He keeps a website for it at http://zenbullets.com. Pearson keeps a second gallery at http://abandonedart.org.

There is a particularly beautiful work called "Silk", which you'll find at http://weavesilk.com

Turn In:

Submit the folder containing your Processing sketch. This should be a single folder named "project3", which will contain all source code files. Again, the turnin directory is


PLEASE NOTE: Unlike other assignments this semester, I'd appreciate it if you'd turn in your own printout of your work, as this will save me a considerable amount of time. Please deliver these either to my mailbox (the Science office, in Eaton Hall) or to my office at Lansing 300.

John H. E. Lasseter