The Nature of Code

     

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

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

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

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:

Daniel Shiffman's Learning Processing
www.learningprocessing.com

  • http://none Minoru Genda

    Very interesting syllabus

  • http://apperceptions.org 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.

  • Daniele

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

  • Pingback: Rizm Blog Archive » Processing.org

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

  • Pingback: Tesiture » Blog Archive » Daniel Shiffman: The nature of code

  • Pingback: loreto martin » Blog Archive » The Nature of Code

  • http://www.decathexis.com Alessandro Sabatelli

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

  • 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

  • http://ambrotek6x8.googlepages.com 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.

  • 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

  • AI AN

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

  • Pingback: all manner of distractions » Blog Archive » Links! Hey everyone! Links!

  • http://www.udjuni.com Simon

    Interesting syllabus. I reviewed quick basic code and algorithm for the mandelbrot in college years back. It is good to see that somebody may still have that. Thanks for sharing.

  • http://ale2x72.blogspot.com/ Alessio

    Hi Daniel,

    fantastic approach! I think it’s truly a step ahead in the direction of new sensibilities about nature and the way we approach it. I put a link on my blog (http://ale2x72.blogspot.com/) to your page.

    Again, congratulations for your approach.

    Cheers,

    Alessio

  • http://www.e11world.com e11world

    I wish I had sometime to actually sit and work on things like this. It’s amazing but time consuming!

  • http://davidderiso.com Dave Deriso

    Excellent project! I just backed you on kickstarter with $25. Best of luck!

  • Erwin

    Super! How can I support the project? Note that kickstarter funding was successful 3 April.

  • Anonymous

    Funding is over sadly!  The book will hopefully be out later this summer though. 

  • Anonymous

    Funding is over sadly!  The book will hopefully be out later this summer though. 

  • bassemmeid

    looking at structuring a genetic algorithm for space layout planning! any help?

  • David

    Hello,

    what is the current state of the book. I couldn’t pledge back then since due to the amazon checkout not being available in other countries.

    It should be quite ready soon? *hope*

    cheers
    David

  • Anonymous

    9 out of 10 chapters drafted!  Then design, illustrations, and printing.  So hopefully this fall.  Feel free to contact me via e-mail if you need a sneak preview.

  • Larry

    Hi Daniel!
    Just like David, I did not pledge for your new book and that´s because I found about it a month ago, is there any way to pre-order (not sure If you have a price for the book in mind) so I can get access to the drafts? Thanks!