/The-Nature-of-Code-JTerm-2016

Repository for NYU JTerm class 2016

Primary LanguageJavaScript

The Nature of Code, NYUAD, JTerm 2016, NYC

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 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 forces, trigonometry, fractals, cellular automata, self-organization, and genetic algorithms. No computer programming experience is required, the course will start with the basics of code using HTML, CSS, and JavaScript (with the p5js framework). In addition to learning technical skills and discussing scientific concepts, students will have the opportunity to visit science museums, art galleries, and artist studios in the NYC area.

Field Trips

Class 1 -- Introduction -- Monday, Jan 4

  • Meets 2-4:30pm today (as to not conflict with morning orientation).
  • What is computational media?
    • What is programming?
    • How can I apply programming to my field of interest?
    • Example projects.
    • What is the potential for software within the visual arts?
    • As a ____________, why would I want or need to write software?
  • Programming language discussion
    • General discussion of programming languages
    • History of creative coding frameworks
      • Processing and p5.js (and what's processing.js?): What is p5.js video
      • openframeworks, cinder
      • max/msp dataflow programming
      • How does arduino fit in?
  • p5.js in the context of the browser
    • Landscape of HTML, CSS, and JavaScript
    • Other JS frameworks
    • Server-side vs. client-side
    • What is the difference between p5 and JavaScript?
    • Development options -- p5.js web IDE, p5.js desktop IDE, your own local server
    • Though this will be unnecessary since we are using the web IDE, you might also want to check out how to upload
  • Participating in an open-source community
    • What are git and github?
    • When should you post to a forum vs. file a github issue?
    • Who makes these things?
  • Basics of blogging
  • Supplemental Reading / Watching
    • Read p. 8-41 of Form + Code
    • Getting Started with p5.js: Chapters 1-3
    • Videos 1.0-1.3

Class 2 -- Drawing and Animation -- Tues, Jan 5

Class 3 -- Interaction and Functions -- Wed, Jan 6

Class 4 -- Object Oriented Programming -- Thurs, Jan 7

  • Transformations
  • Perlin Noise
  • Modulo
  • Object Oriented Programming

Class 5 -- Arrays and Loops, Museum of Math Field Trip -- Fri, Jan 8

  • New schedule!
    • Class will meet at our usual location at ITP from 10:30am - 12:00pm
    • We will then reconvene at the Museum of Math for a tour from 2:00-3:30pm
  • Review loops (while and for)

Class 6 -- AMNH field trip -- Monday, Jan 11

Meet at museum at 1:45pm, tour and planetarium from 2:00-4:00pm, time to explore 4-5:45pm. Check e-mail for details.

Class 7 -- Images and Pixels and Second Story Trip -- Tues, Jan 12

Class 8 -- Data and Rockwell Labs Visit -- Wed, Jan 13

  • Meet at 10am to go to Rockwell Labs for a tour starting at 11:00am
  • Regular class will be from 2-3:30pm
  • Intro to Data
    • events and callbacks
  • Query strings
  • Web services: AJAX, JSON, and APIs
  • Homework 6

Class 9 -- Intro to Physics -- Thurs, Jan 14

Class 10 -- Queens Hall of Science -- Friday, Jan 15

  • New schedule!
    • Class will meet at our usual location at ITP from 10:00am - 11:30am
    • We will then reconvene at the NY Hall of Science for a tour from 2:00-3:30pm

Class 11 -- Final Project Proposals -- Tuesday, Jan 19

  • Meet at Eyebeam Art and Technology Center at 12pm, we will have class there until ~4pm
  • Final Project Proposal

Class 12 - Final Project Workshop - Wed, Jan 20

Class 13 - Final Project Workshop and Presentations -- Thurs, Jan 21

Class 14 - Final Project Breakfast - Friday, Jan 22

Expectations

  • Assignments will include readings, programming exercises, and written documentation of your work.
  • Each student will be required to post their homework to the class blog (instructions provided in class).
  • Over the course of the term, you should have completed ten blog posts (8 exercises, 1 final project proposal, 1 final project summary). In total this should amount to at least 7,000 words (equivalent to 18 double-spaced pages.) Each blog post should contain a written response to material presented in class (specific questions will be provided), a description of your homework assignment, and questions regarding the technical material.
  • For your final project proposal and summary, you will be required to write about your project concept and project development process.
  • Students will be expected to collaborate, to document their work, to make presentations and to discuss their ideas regularly in class.

Teaching Methodologies

  • Class time will be divided between technical lectures, independent project development, individual meetings with instructor, and project presentations / critique.
  • In addition to regular class meetings, the instructor will organize a series of field trips to visit artist studios, gallery shows, and museum exhibits in the London area.

Learning Outcomes

  • Define the fundamentals of computation.
  • Build creative software sketches that demonstrate knowledge of these fundamentals.
  • Critically examine interactive art in the context of screen, sculpture, and web.
  • Apply concepts from physics and mathematics to real-time software animation.
  • Develop methodologies for simulating nature using computational algorithms.
  • Propose and build a creative project made from computational methods.

Grading

  • Class Participation (attendance, discussions, project proposal and implementation presentations) : 25%
  • Writing Assignments: 25%
  • Programming Assignments: 35%
  • Final Project: 15%

Presenting in class

  • One liner – What did you do?
  • Content – Why did you do it? Who is the audience? How does it engage with the theoretical and technical concerns we have discussed in this class?
  • Demo
  • Comments/Critique

Books

  • The Nature of Code, Daniel Shiffman
  • The Computational Beauty of Nature, Gary Flake
  • Form + Code, Casey Reas / Chandler McWilliams
  • Make: Getting Started with p5.js: Making Interactive Graphics in JavaScript and Processing, Lauren McCarthy, Casey Reas, Ben Fry