Awesome
Intro to Computational Media (Fall 2015)
Listserv
p5.js
- This year we are using p5.js, a new JavaScript framework for ICM. Start by downloading the p5.js editor.
Section specific info
Homework Wikis
- Roopa, Tuesday, 9:00-11:30: Homework
- Shiffman, Tuesday, 12:10-2:40pm: Homework
- Shiffman, Wednesday, 12:10-2:40pm: Homework
- Dano, Wednesday, 12:10-2:40pm: Homework
- Shawn, Wednesday, 12:10-2:40pm: Homework
- Lauren, Thursday, 12:10-2:40pm: Homework
- Lauren, Thursday, 3:20-5:50pm: Homework
Videos
- Kadenze course
- Shiffman Vimeo channel -- no ads
- Shiffman Youtube playlist -- has ads
Books
- Make: Getting Started with p5.js: Making Interactive Graphics in JavaScript and Processing is probably your best bet for now if you are looking for a book.
- If you are interested in some supplemental reading on HTML and CSS, The HTML & CSS book is a nice one.
Extra Help
- Research Resident Office Hours
- ICM Help Session
Inspirational Projects
Resources
- p5.js forum
- p5.js tutorials
- Getting Started with p5.js - O'Reilly book
- Intro to Visual Programming with p5.js - online video tutorials (free with signup)
Syllabus
1 -- Introduction and Drawing
- What is computational media?
- What is programming?
- How can I apply programming to _____________?
- As a ____________, why would I want or need to write software?
- Example projects.
- 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?
- 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?
- p5.js working group mailing list
- Getting started, your first program
- Download Examples
- Drawing with numbers: video tutorial
- Shape and color functions: video tutorial
setup()
anddraw()
- Downloading p5.js
- Start by downloading the p5.js editor.
- p5.js reference
- Uploading your sketch
- <a id="optional-1">Optional viewing / reading:</a>
- Casey Reas Eyeo 2012 talk on Chance Operations
- Introductory p5.js videos
- FORM+CODE: Introduction and What is Code?
- As We May Think, Vannevar Bush
- Long Live the Web, Tim Berners-Lee
2 -- Animation
- Program flow (what's a function?)
- Setup, draw, and other events
- Variation: mouseX and mouseY
- video tutorial
- More about variables
- make your own variables (numbers and strings), video tutorial
- JS objects (variables inside variables), video tutorial
- random(), video tutorial
- map(), video tutorial
- Simple loading and displaying image
- Download all examples
3 -- Interaction
- Conditional Statements
- Boolean expressions
- if statement
- relational operators
- video tutorial
- Case study, bouncing ball: video tutorial
- else, else if, and, or video tutorial
- buttons, rollovers, switches video tutorial
- Loops (while and for)
- while and for video tutorial
- nested loops video tutorial
- Download all examples
4 -- Functions: the basics
- Download Examples
- Calling vs. defining
- Modularity: video
- Arguments and parameters
- Re-usability: video
- Return types: video
- Recursion
- Functions inside objects: video
- Optional Readings:
- Work of Art in the Age of Mechanical Reproduction, Walter Benjamin
- Homework: TBA (but something like use a function to draw a design different ways, multiple times. Make a previous sketch modular.)
5 -- Objects and Arrays
- download examples
- Review object literals:
- properties - name/value pairs
- functions inside objects
this
keyword
- What is an array? video tutorial 6.1
- declaring, intializing
- numeric indices
- arrays and for loops: video tutorial 6.2
length
property
- An array of objects! video tutorial 6.3
- Constructor function! video tutorial 6.4
- Adding and deleting from an array,
push()
andsplice()
video tutorial. 6.5, video tutorial 6.8 - Multiple JS files video tutorial 6.6
- Clicking on objects video tutorial 6.7
- Checking objects intersecting with other objects video tutorial 6.9, video tutorial 6.10
- loading images for objects video tutorial 6.11
6 -- Synthesis -- October 2nd, 11am - 2pm
- Meet in the ITP Lounge
- Bring your Arduino
- All details here
- Serial input with a callback workshop
- "One button experience" exercise
7 -- DOM: events and callback function
- Download all examples
- Review events -- mousePressed, keyPressed
- Tutorial: Beyond the Canvas, using p5.dom
- Tutorial: Intro to HTML/CSS basics
- DOM elements - p5.dom reference
createP()
createButton()
createSlider()
- Callbacks
button.mousePressed(callback);
style()
-- low key intro to CSS- CSS Reference
8 -- Data
- Download all examples
- Tutorial: loading external data with p5.js
- Tutorial: more about data and APIs
- JSON and APIs (and more on callbacks!)
- Word Counting
- Tabular data
- Optional Reading:
- Art and the API, Jer Thorp
- The Anxieties of Big Data, Kate Crawford
9 -- Video and Sound
- Download all examples
- p5.sound reference
- Video/capture: p5.MediaElement reference
- Sound
- Live capture
- Movie playback
- Video Assignment
10 -- Mobile
- Download all examples
- Workflow and process, get a previous sketch running on a device
- Touch interaction
- Sensors
- More mobile examples from Jia
- p5 mobile workflows by Jia
- Using the viewport meta tag to control layout on mobile browsers
- Hammer.js
- Homework: Prepare a final project proposal. See you section's wiki.
11 -- Other Topics + Final Project Proposals
- See your individual section's proposal schedule on your wiki
- Possible topics
- more on pixels
- more on data
- setTimeout, setInterval
- WebGL - tutorial
12 -- Beyond p5.js + Final Project Proposals
- See your individual section's proposal schedule on your wiki
- Life beyond p5.js
- Take ICM into the spring semester courses
- Other JS libraries?
- Coding outside the p5 IDE? (local server tutorial)
- local server tutorial
- More HTML/CSS
- What is server side programming for?
- Processing
- Open source
- How do artists make and adapt tools for themselves and their communities, like Processing, p5.js, openFrameworks, etc?
- How do you get involved with this?
13 -- One on one speed user testing / feedback
- This week you will "user test" your project with fellow classmates. You must have some implementation that you can test completed by this time. User testing can mean different things for different projects. For a game, it can mean that the user tries to play it. For an art piece, it could mean showing it to a classmate and asking for them to say what they think it is about or how it made them feel. We'll show projects in a "one on one" / round robin / speed dating-style session. 5 minutes then switch. You cannot not explain your project, just show and let the user try it and give you feedback. Then you can answer questions. User testing schedule will be provided on a wiki.
14 -- Final Project Presentations
- Please add your link to your final project documentation on your section's wiki.
Policies
##Evaluation
Grades will be determined according to the following breakdown:
- Regular Assignments 40%
- Participation and Attendance 40%
- Final Project 20%
Please see ITP's statement on Pass/Fail which states that a "Pass" is equivalent to an "A" or a "B" while anything less would be considered a "Fail".
We will have weekly assignments that are relevant to material from the previous class. These assignments are required and you should be prepared to show/talk about them in class. It is expected that everyone in the class will create and maintain a blog for their assignments.
Attendance is mandatory. Please inform your teacher via email if you are going to miss a class. Two unexcused absences is cause for failing the class. (An unexcused lateness of 10 minutes or more is equivalent to 1/2 an absence.)
This class will be participatory, you are expected to participate in discussions and give feedback to other students both in class and participate with their projects. This (along with attendance) is 40% of your grade.
Class will culminate with final projects. You are expected to push your abilities to produce something that utilizes what you have learned in the class that is useful in some manner to yourself or the world. This will comprise 20% of your grade.
Mantras By James
- "Practice is the best of all instructors." - computation requires practice
- "An agreeable companion on a journey is as good as a carriage." - look to your classmates for help too
- "While we stop to think, we often miss our opportunity." - sometimes you need to take a leap of faith
- "When two do the same thing, it is not the same thing after all." - encourage students with similar ideas
- "The bow too tensely strung is easily broken." - don't get too stressed out
- All of these are from Plubius Syrus.(42 B.C.)