I’m please to announce that I am working on expanding all of these tutorials into a book! You can buy PDF drafts!.

Spring 2010 Syllabus: http://itp.nyu.edu/varwiki/Syllabus/Nature-of-Code-S10
Spring 2009 Syllabus: http://itp.nyu.edu/varwiki/Syllabus/Nature-of-Code-S09
Spring 2008 Syllabus: http://itp.nyu.edu/varwiki/Syllabus/Nature-of-Code-S08

Tutorials

Numbers and Vectors

  • Class Intro / Overview
  • Processing review
  • Randomness, Probability, and Perlin Noise
  • Object Oriented Programming Review & Vectors
  • Vectors and Forces

  • Object Oriented Programming Review & Vectors
  • Attraction/Repulsion
  • Friction/Drag
  • Oscillations

  • 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
  • Particle Systems

  • ArrayLists
  • Advanced Object Oriented Programming — Inheritance and Polymorphism
  • Physics Libraries

  • Box2D
  • Toxiclibs (coming soon!)
  • Steering Behaviors

  • Autonomous Agents
  • Path Following
  • Craig Reynolds’ Boids — Alignment, Cohesion, Separation
  • Fractals and Recursion

    L-Systems and Cellular Automata

    Genetic Algorithms

  • Searches
  • Interactive evolution
  • Neural Networks

    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:


    www.learningprocessing.com


    13 Responses to “The Nature of Code”  

    1. 1 Minoru Genda

      Very interesting syllabus

    2. 2 Markus Sandy

      Interesting syllabus. I am curently exploring Quartz Composer on my new mac and it seems that much of this could apply. I have a strong background in mathematics and OO software development. Glad to see use of Wolfram text.

    3. 3 Daniele

      A world of lightness, bound by “mathematical particles”: the jump of a philosopher, that will create little “imaginations”.

    4. 4 Songul Aslanturk

      Very exciting. I am taking this course this Spring and can not wait to explore to express my thoughts through programming strategies and techniques.

    5. 5 Alessandro Sabatelli

      This is indeed a fantastic resource. Thank you for making this publicly available.

    6. 6 Olaf

      Hello Daniel,

      I am a computer science major at berlin’s technical university and i must say that your course is by far the most beautiful and inspiring approach to this rather complex field of topics i have seen so far.
      Thank you for publishing all of this, especially your reading resources. I ordered some of them today.

      Regards,
      Olaf

    7. 7 k.conor

      I am looking for the most general, universal patterns-paradigms that are evident in nature, particularly as they carry through paleontology from ancestor life-form to more advanced; I also wish to correlate this with chemical
      patterns, not just gross physical appearances. There should be interlinking to
      underlying the mathematics.

    8. 8 AKEM

      Hi,
      I learned a great deal out of your applets. I was able to get the necessary inspiration to write my own version in JAVA. I would like to know if you can come up with an applet simulating water.
      Thanks

    9. 9 AI AN

      so amazing!!! this is exactly the kind of stuff i am looking for :)
      thanks for this

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


    Leave a Reply