Main Course References:
Course Book – Nature of Code v.2
p5.js Video Tutorials – Nature of Code v.2
p5.js Examples – Nature of Code v.2
WEEK 1 – RANDOMNESS/NOISE/OBJECT-ORIENTED PROGRAMMING
- Class Intro/Overview:
- P5.js Basics/Refresher Tutorials
- Randomness, Probability, Perlin Noise, Object Oriented Programming
ASSIGNMENT – WEEK 1 (Due before Monday 02 Sept.)
1. Read Computational Beauty of Nature, Chap. 1 (post a response on the blog before class) (be prepared for class discussion)
2. Code Production – (post documentation on blog before class)
Your post should contain the following:
- Your concept
- A highlight of some code that you’re particularly proud of
- Embedded sketch
- Reflection and ideas for future work or improvements
Choose one from LIST 1 and combine it with one from LIST 2:
LIST 1: Develop a program that experiments with motion.
- Create a random walker with dynamic probabilities. For example, can you give it a 50% chance of moving in the direction of the mouse?
- Gaussian random walk is defined as one in which the step size (how far the object moves in a given direction) is generated with a normal distribution. Implement this variation of our random walk.
- Try implementing a self-avoiding walk.
- Try to implement the random walk known as a Levy Flight.
- Try a walk in 3D, for example: http://en.wikipedia.org/wiki/Quantum_Cloud.
LIST 2: Apply the rules of motion to another medium of expression: sound, color, number, scale…
- Walk through RGB or HSB space (as opposed to XYZ)
- Walk through Pan, Amplitude, Pitch (as opposed to XYZ)
- Plot an “orchestra” of instruments on an XY plane and move a melody through it like: Bolero
- Create a constantly morphing creature shape using createShape() or curve() or bezier(). Play with how you change the number of vertices and anchor points.
RECOMMENDED (To prep for next week):
- Watch: Vectors: Tutorial 1.1 – 1.6
- Read Chapter 1: Vectors: Nature of Code v.2
————————————————————–
WEEK 2 – VECTORS
Supplemental Reading:
ASSIGNMENT – WEEK 2 (Due before Monday 09 Sept.)
- CODE ASSIGNMENT:
-
- Find an example of something moving in nature. Take a video (preferable) of it or find it online.
- Develop a set of rules for simulating the real-world behavior of this movement. Can you control the object’s motion by only manipulating acceleration? Try to give the movement personality through its behavior (rather than through its visual design).
- Post documentation on the blog.
Your post should contain the following:
-
- Your concept
- A highlight of some code that you’re particularly proud of
- Embedded sketch
- Reflection and ideas for future work or improvements
RECOMMENDED (To prep for next week):
- Watch Forces tutorials 2.1 – 2.6
- Read Chapter 2: Forces: Nature of Code v.2
————————————————————–
WEEK 3 – FORCES
Supplemental Reading:
ASSIGNMENT – WEEK 3 (Due before Monday 16 Sept.)
- WATCH: Mutual Attraction tutorial (No blogpost needed, but essential to grasp and try for your assignment and future topics, please complete it.)
- CODE ASSIGNMENT:
- Using invisible attractors and visible movers, create a pattern/design from the objects moving around attractors. Use other forces to add some turbulence or repulsion to the sketch.
- Your WordPress post should contain the following:
- Well-commented code, especially for confusing or tricky parts
- Your concept + references to any examples or inspiration
- Functions as needed to organize your program
- Excellent names for variables and functions
- A highlight of some code that you’re particularly proud of
- Embedded sketch
- Reflection and ideas for future work or improvements, any problems you ran into
RECOMMENDED (To prep for next week):
- Watch Oscillation tutorials 3.1 -3.3
- Read Chapter 3: Oscillation Nature of Code v.2
————————————————-
WEEK 4 – OSCILLATION
Supplemental Reading:
ASSIGNMENT – WEEK 4 (Due before Monday 23 Sept.)
- CODE ASSIGNMENT: Get inspired by our Artist of the Week: Memo Akten and create your own version of Simple Harmonic Motion.
- WATCH: Coding Challenge – Spring Forces
RECOMMENDED (To prep for next week):
————————————————-
WEEK 5 – PARTICLES SYSTEM
-
- Nature of Code v.2 – Chapter 4: Particles System
- Particles System Videos 4.1 – 4.4
- p5.js Examples
- Supplemental Reading
– “Particle animation and rendering using data parallel computation”, Karl Sims (available via NYU network/proxy)
– “Particle Systems, a Technique for Modeling a Class of Fuzzy Objects”, Reeves (available via NYU network/proxy)
– How my Dog learned Polymorphism
– Particle Systems by Allen Martin
ASSIGNMENT – WEEK 5 (Due before Monday 30 Sept.)
- CODE ASSIGNMENT: MIDTERM PROGRESS 01
- Make progress on your midterm project and post your progress to the blog
- Decide on the concept and design of your generative art
- Start designing your code (functions, classes, interactivity)
- Start thinking of the different states, variations that your sketch could produce
- Identify the most frightening or uncertain or complex part of your midterm project, and do something to minimize that risk e.g. write some code to test a new library, or implement any critical algorithms that you need, etc.
- Document your project concept, design, and what you identified as the most frightening part and what you did to reduce this risk on the blog
RECOMMENDED (To prep for next week):
WATCH: Particle System videos 4.2-4.4
READ: Nature of Code v.2 Chapter 4: Particles System
————————————————-
WEEK 6 – PARTICLES SYSTEM CONT.
ASSIGNMENT – WEEK 6 (Due before Monday 07 Oct.)
- CODE ASSIGNMENT: MIDTERM PROGRESS 02
- Make progress on your midterm project and post your progress to the blog
- Fully developed concept/idea + documented fully
- Significant progress in your code
- At least 3 variations exported as .SVG files and ready for plotting on the pen plotter
- Book a plotting session (Please arrive on time)
————————————————-
WEEK 7 – MIDTERMS DEVELOPMENT
Midterm project: Create a visual generative art system. This system should have different modes/states to produce different images. The system should use techniques we’ve covered in class so far. You should experiment with your system until you find images that really resonate with you. Treat this as a creative endeavor.
– Plot one image that most resonates with you on the XY Plotter
-Print two A3 sheets (exported as high-res images from p5)
Midterm Grading Detailed Rubric Here
————————————————-
MIDTERMS PRESENTATIONS
09th OF OCTOBER: MIDTERM PRESENTATIONS
————————————————-
FALL BREAK
————————————————-
WEEK 8 – AUTONOMOUS AGENTS
- Artist Talk
- Nature of Code v.2 – Chapter 5: Autonomous Agents
- Autonomous Agents Videos 5.1 – 5.7
- p5.js Examples
- Supplemental Projects + Readings
– Reas Process Compendium
– Braitenberg Vehicles
– Craig Reynolds’ Steering Behaviors for Autonomous Characters
– BetterExplained/ Dot Product + Finding The “Normal”
ASSIGNMENT – WEEK 8 (Due before Monday 28. Oct.)
- CODE ASSIGNMENT:
Create an artistic expression of a system of various vehicles and steering behaviors that we’ve learnt so far. Feel free to change up the vehicle’s characteristics and the rules of the different behaviors. An example: https://editor.p5js.org/bobsarea/full/6DaX1CIUj
RECOMMENDED (To prep for next week):
WATCH: Flocking Video Tutorial
READ: Nature of Code v.2 Chapter 5: Autonomous Agents
2. REFLECTION BLOGPOST (Guest Lecture) 100 -words blogpost reflecting on lecture by guest artists.
————————————————-
WEEK 9 – FLOCKING – COMPLEX SYSTEMS
ASSIGNMENT – WEEK 9 (Due before Monday 4 Nov.)
- CODE ASSIGNMENT:
Using a dynamic flocking system as the base, create a system that changes over time. It can tell a story or not, but it should have some tension and release, and development over time. Ryoichi Kurokawa’s work could be a great example. Another would be the visuals for Robert Hodgin. Give some consideration to what the sketch looks like too, not just the motion. Make deliberate choices for the visuals. This assignmnet is about composition.
RECOMMENDED (To prep for next week):
WATCH: Physics Libraries Videos 6.1 – 6.5
READ: Nature of Code v.2 Chapter 6: Physics Libraries
————————————————-
WEEK 10 – PHYSICS LIBRARIES
- Nature of Code v.2 – Chapter 6: Physics Libraries
- Physics Libraries Videos 6.1 – 6.5
- p5.js Examples
- Matter.js Library website
- Toxiclib.js Library website
ASSIGNMENT – WEEK 10 (Due before Monday 11 Nov.)
1. READ (more on Matter.js, no blogpost needed but necessary to apply to Coding Assignment):
2. CODE ASSIGNMENT (Blogpost required): Create a project that utilizes the matter.js library, make sure to explore:
– applying and changing forces acting on the bodies
– creating various Collision Events
4. EXPLORE TOXICLIBS.JS
Book section – Video Tutorial – p5 Examples
————————————————-
WEEK 11 – CELLULAR AUTOMATA
Supplemental Readings & Projects:
- A New Kind of Science
- Elementary Cellular Automaton
- Original Game of Life Scientific American Article
- 2D Water Ripple – Cellular Automata
- Understanding Segregation Through a Simulation
ASSIGNMENT – WEEK 11 (Due before Monday 18.Nov.)
1. CODING ASSIGNMENT (Blogpost required)
- Create a visually compelling and interactive sketch that explores the concept of cellular automata to generate dynamic and aesthetically interesting patterns.
1.Research existing artistic projects or installations that involve cellular automata.
2.Experiment with different rulesets, colors, and shapes to create visually appealing patterns, explore how changing parameters (such as initial conditions, rules, colors, or cell sizes) can impact the visual outcome?
3.Ensure that the sketch is interactive, allowing users to modify parameters or interact with the automata in real-time.
2. FINAL PROJECT DRAFT 1 (Blogpost required)
- The final project should be a creative project that builds off of or is inspired by the concepts we’ve covered this semester.
- The only stipulation for the final project is that it should be interactive. You could use a mouse, computer vision, arduino, kinect, game controller, or anything really, but the interaction should be clear.
- The challenge lies in crafting a visually captivating and dynamic environment where users can influence the ecosystem’s behavior in real-time, altering parameters, observing the consequences of their actions, and witnessing the emergent patterns that arise.
FINAL PRJECT GRADING RUBRIC: (DETAILED RUBRIC HERE)
- Technical Implementation (5%)
- Creativity (5%)
- Nature-inspired, Generative aspect of the project (5%)
- Interaction Design (5%)
- Documentation (5%)
- Going Above and Beyond (5%)
For Tuesday 28th – Final Project Draft 1 Blogpost:
- Design concept/ storyline/ artistic intention/ direction
- Interaction methodology thought of, decided upon and explored in terms of how to implement it. Showcase the interaction design as a diagram, hand-sketch, text, etc.
- Design of canvas in terms of user-interaction instructions, parameters and plan for guiding user experience. Demonstrated as a diagram, hand-sketch, etc.
- A base p5 sketch that you will continue to develop. For example: some initial explorations, or physics logic sketch that we have explored in the course that you will build upon, etc. Try to start digging into the coding of your project.
————————————————-
WEEK 12 – FRACTALS
Supplemental Readings & Projects:
- Fractals- The Hidden Dimension
- The Fractal Geometry of Nature
- The Algorithmic Beauty of Plants
- The Computational Beauty of Nature
ASSIGNMENT – WEEK 12 (Due before Monday 25.Nov.)
FINAL PROJECT DRAFT 2 (Blogpost required)
- The final project should be a creative project that builds off of or is inspired by the concepts we’ve covered this semester.
- The only stipulation for the final project is that it should be interactive. You could use a mouse, computer vision, arduino, kinect, game controller, or anything really, but the interaction should be clear.
- The challenge lies in crafting a visually captivating and dynamic environment where users can influence the ecosystem’s behavior in real-time, altering parameters, observing the consequences of their actions, and witnessing the emergent patterns that arise.
FINAL PROJECT GRADING RUBRIC: (DETAILED RUBRIC HERE)
For Tuesday 5th December – Final Project Draft 2 Blogpost:
Your final project should be almost done. It needs to be in a place for user testing next week.
————————————————-
WEEK 13 – USER TESTING FINAL PROJECTS
ASSIGNMENT – WEEK 13 (Due before Wednesday 04.Dec.)
FINAL PROJECT COMPLETED (Blogpost required)
————————————————-
WEEK 14- FINAL PROJECT PRESENTATIONS & IM SHOW
FINAL PROJECT PRESENTATIONS ON WEDNESDAY 04th of December
FINAL PROJECT SET UP FOR IM SHOW ON MONDAY 09th of December
————————————————-
Timeline and content are subject to change.