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

  • ArrayLists
  • Advanced Object Oriented Programming — Inheritance and Polymorphism
  • Steering Behaviors

  • Autonomous Agents
  • 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.

    Reading Materials

  • The Computational Beauty of Nature, Gary William Flake (required)
  • Mathematics and Physics for Programmers, Danny Kodicek.
  • Algorithmic Beauty of Plants, Przemyslaw Prusinkiewicz
  • Turtles, Termites, and Traffic Jams: Explorations in Massively Parallel Microworlds (Complex Adaptive Systems), Mitchel Resnick
  • Creative Code, John Maeda
  • Just about any book by Ian Stewart

  • 11 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

    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


    Leave a Reply