I’m please to announce that I am working on expanding all of these tutorials into a book. Support the project (and get advance PDFs) on Kickstarter!
Spring 2011 Syllabus: http://itp.nyu.edu/varwiki/Syllabus/Nature-of-Code-S11
Tutorials
- Class Intro / Overview
- Processing review
- Randomness, Probability, and Perlin Noise
- Object Oriented Programming Review & Vectors
- Object Oriented Programming Review & Vectors
- Attraction/Repulsion
- Friction/Drag
- Trigonometry
- Polar vs. Cartesian Coordinates
- Pendulum
- Graphing waves (perlin noise waves)
- 2D trig equation graphing (“graphing inequalities”)
Collisions (full tutorial coming soon)
- Ball vs. Wall
- Ball vs. Ball
- Wacky shapes
- ArrayLists
- Advanced Object Oriented Programming — Inheritance and Polymorphism
Physics Libraries
- Autonomous Agents
- Path Following
- Craig Reynolds’ Boids — Alignment, Cohesion, Separation
L-Systems and Cellular Automata
- Searches
- Interactive evolution
Description:
Can we capture the unpredictable evolutionary and emergent properties of nature in software? Can understanding the mathematical principles behind our physical world world help us to create digital worlds? This class will focus on the programming strategies and techniques behind computer simulations of natural systems. We’ll explore topics ranging from basic mathematics and physics concepts to more advanced simulations of complex systems. Subjects covered will include forces, trigonometry, fractals, cellular automata, self-organization, and genetic algorithms. Examples will be demonstrated using Processing with a focus on object oriented programming.
Recommended Reading
- The Computational Beauty of Nature: Computer Explorations of Fractals, Chaos, Complex Systems, and Adaptation
- Mathematics and Physics for Programmers (Game Development Series)
- The Algorithmic Beauty of Plants (The Virtual Laboratory)
- Turtles, Termites, and Traffic Jams: Explorations in Massively Parallel Microworlds (Complex Adaptive Systems)
- Creative Code: Aesthetics + Computation
- Just about any book by Ian Stewart
These tutorials use the programming environment Processing. If you are not familiar with Processing, visit www.processing.org. For a beginner’s introduction to programming fundamentals with Processing (everything you need to know to be ready for these tutorials), check out my book:

Pingback: Rizm Blog Archive » Processing.org
Pingback: Tesiture » Blog Archive » Daniel Shiffman: The nature of code
Pingback: loreto martin » Blog Archive » The Nature of Code
Pingback: all manner of distractions » Blog Archive » Links! Hey everyone! Links!