// Pratt ARCH ARCH 522c / Procedural Morphology / Scripting and Form
Spring 2011
  Tuesday, 7 PM - 9:50 PM,  ENG214a  
Theo Calvin (theo at mediumlite dot com)
Course Information:
View the course preview video.
"The rule drives the algorithm and the rule is not a number. The rule is a pressure that is always limited by another rule. Rules do not make forms – the limitations that rules impose on one another do....
		
		Design must not focus uniquely on first order regulatory processes but must target second order controls that regulate the regulatory processes themselves.  The genius of nature and design meet precisely here."
				-- Sanford Kwinter, 2005
			The goal of this class is to explore methods of drawing dynamic, self-organizing, agent-based systems. These systems represent formal ordering methods obtainable only through the effective use of computational models. Computational models don't describe form as a static entity.  Rather, these models use rules as a design medium to capture underlying structures, relationships and hidden organizations. The forces driving these systems can often be fleeting or soft or emergent or locally weak, but ultimately very powerful in the creation of form. This section of ARCH 523C covers core concepts in programming for design.  We will use the Processing programming language.  Processing was developed as a user-friendly way to learn programming for visual output. Despite being appropriate for the first time programmer, Processing is a powerful language, and can be used to create interactivity, animations and even 3D form.  Lessons learned in Processing will be useful as you move to other programming languages.
		
Methods of Assessment
40% Final Project
		  30% Attendance and Participation
  30% Exercises: 5 'sketches'. I expect 2 sketches from Part 1 of the class, 2 from Part 2 and 1 from Part 3. Additional sketeches are recommended but not required. 
		
Syllabus
Part 1: Introduction to Processing
Welcome to Processing for Architectural Design
Week 02 :: Scripting Fundamentals
Variables, Conditionals, Loops, Expressions
Week 03: Modularity, Reusability, Intro to Animation and Transformation
Arrays, Functions, and the Basics of Movement
Part 2: Agency
Week 04: Object Oriented Programming
Introduction to OOP and Agent-Based Programming
Week 05: Guided Work Session [lab]
Applied OOP
        
Vectors and Forces, Non-Linear Physics
Part 3: The 'Creative' Power of Rules-Based Systems
Week 07: Generative Data Forms
Re-Mapping for Creation
Week 08: Guided Work Session [lab]
Data input models
Modeling growth.
Week 10: Guided Work Session [lab]
Working in scripted 3D
Week 11: Emergence and Self-Organizing Systems
Designing with rules
Week 12: Guided Work Session [lab]
Experiments in Emergent Design
Part 4: Design Integration
Week 13: Rules-based Design Working Session [lab]
Working session for final projectWeek 14: Optional Working Session [lab]
Desk crits for final projectInternet Resources
Processing Related
Processing.org
          learningprocessing.com
      Processingblogs.org
			
				Programming in Processing
				Open Processing
				Processing for Android
		
News Sites and Blogs
			bldgblog
			Create Digital Motion
			GeneratorX
			
		  We Make Money Not Art
          
          Creative Applications.net
          algorithmicdesign.net 
          
	
People
Casey Reas
			Ben Fry
			John Maeda
			Complexification.net
			Flight404
			theverymany.net
			Marius Watz
			Thorsten Fleisch
			Andy Lomas
			dextro
			Scott Sona Snibbe
			PostSpectacular
		
Notable Projects
Flight Patterns by Aarron Koblin
			Y-rotation of an attractor
Other Stuff
        	Scripted by Purpose
			Bit Forms Gallery
			Event: Entheocentric Salon (Sat Jan 20th)
			The Impact of Evolutionary Design (Technology Review video)
			Review of Dreaming in Code by Scott Rosenberg
			MediaRuimte: Platform for digital art & architecture (Brussels) 
			Processing Flickr Group
	
Other Graphical Scripting Languages
NodeBox: is a Mac OS X application that lets you create 2D visuals (static, animated or interactive) using Python programming code and export them as a PDF or a QuickTime movie.
VVVV: realtime 3D video synthesis -- fast 3D using the video card. VVVV uses a graphical programming interface.
Scriptographer: is a scripting plugin for Adobe Illustrator™. It allows designers to extend Illustrator with JavaScript.
Max/MSP/Jitter: a graphical programming environment. The basic 'Max' environment includes MIDI, control, user interface, and timing objects. MSP refers to the realtime audio packages and Jitter is a collection of realtime video components to add to the Max environment.
Data Visualization
       		Information Aesthetics
        	Form Follows Behavior
            Visual Complexity
            Flowing Data
            Data is Nature
            Well Formed Data
        	
    
Bibliography
Processing specific books are finally starting to be published. There are many processing resources online, but these are available. (disclosure: I'm using the Amazon affliate links to provide previews of the covers and links to more information. Do not feel obligated to purchase books through these links.)
            Processing: Creative Coding and Computational Art Ira Greenberg
            
            Processing: A Programming Handbook for Visual Designers and Artists  Casey Reas
Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction Daniel Shiffman
Algorithms for Visual Design Using the Processing Language
Kostas Terzidis
Visualizing Data: Exploring and Explaining Data with the Processing Environment
Ben Fry
Getting Started with Processing 
Ben Fry and Casey Reas
	
The following books and articles will enhace your understanding of the subject matter.
			Aesthetic Computing Paul Fishwick
			Animate Form Greg Lynn
			Cities and Complexity Michael Batty
			The Computational Beauty of Nature Gary William Flake
			Concepts of Modern Mathematics Ian Stewart
			Contemporary Processes in Architecture   Ali Rahim
			Contemporary Techniques in Architecture   Ali Rahim
			Creative Code: Aesthetics + Computation John Maeda
			Digital Tectonics Neil Leach
			Emergence   Steven Johnson
			Emergence: Morphogenetic Design Strategies   Michael Hensel
			Informal (Architecture)   Cecil Balmond
			Pamphlet Architecture 27: Tooling   Aranda and Lasch
            
            Responsive Architectures : Subtle Technologies
Beesley, Hirosue, Ruxton, Trankle, and Turner
			Turtles, Termites, and Traffic Jams Mitchel Resnick
			Versioning: Evolutionary Techniques in Architecture SHoP/Sharples Holden Pasquarelli 
		
Student Work
Student work is posted here. Please set up your website for the class assignments and send me the URL. 
		  To learn more about setting up your free Pratt web space click here. 
    
Spring 2010  Meredith L Atkinson  | 
  ||
Spring 2008  Adam Grassi  |