The Nature of Code

Go to class
Write Review

Free Online Course: The Nature of Code provided by Kadenze is a comprehensive online course, which lasts for 5 weeks long. The course is taught in English and is free of charge. Upon completion of the course, you can receive an e-certificate from Kadenze. The Nature of Code is taught by Daniel Shiffman.

Overview
  • Can we capture the unpredictable evolutionary and emergent properties of nature in software? Can understanding the mathematical principles behind our physical world help us to create digital worlds? This class focuses on the programming strategies and techniques behind computer simulations of natural systems. We explore topics ranging from basic mathematics and physics concepts to more advanced simulations of complex systems. Subjects covered include physics simulation, trigonometry, fractals, cellular automata, self-organization, and genetic algorithms. Examples are demonstrated using the p5.js environment with a focus on object oriented programming.

    Video featuring original artwork in P5.js by:
    Particle Equalizer #1 by Sehyun Kim
    Look at me! by Muqing Niu
    Dancing Spring by Yue Hu
    FireWork by Yue Hu
    Nature Of Code final at ITP by Joe_Mango
    Nature of Code - midterm by Marcela Nowak
    Sound And Motion Coding by Marcela Nowak


Syllabus
  • Session 1: Introduction / Overview 
    In this session we’ll review the basics of p5.js and get everyone up and running with posting sketches online. We’ll look at how object-oriented programming works in JS and create simple sketches of objects moving around a canvas. Session 2: Vectors / Forces 
    This session will look at the concept of a vector and implement sketches using a p5.Vector object. By creating objects with vectors for position, velocity, and acceleration, we’ll build a simple “hello world” physics engine. Session 3: Steering Behaviors 
    This session, we’ll examine a special kind of force (pioneered by Craig Reynolds) — a steering force — that moves an object according to its own goals or desires. Examples are wandering, seeking a target, path following, obstacle avoidance, and more. We’ll then look at how group behaviors can be simulated by combining multiple steering behaviors according to local interactions between objects. Session 4: Fractals 
    In this session we will cover the concept of a fractal and look at ways of generating fractal patterns with code. Session 5: Genetic Algorithms 
    This session will look at the key concepts of Darwinian evolution — variation, selection, heredity — and examine how they can be applied in a computer simulation.