Intro to Computational Media (Fall 2016)
Section specific info
- Mimi, Tuesday, 12:10-2:40: Homework
- Shiffman, Thursday, 9:00-11:30: Homework
- Allison, Thursday, 12:10-2:40: Homework
- Shawn, Thursday, 12:10-2:40: Homework
- Dano, Thursday, 3:20-5:50: Homework
- Allison, Thursday, 3:20-5:50: Homework
- Shiffman, Thursday, 3:20-5:50: Homework
- Kadenze course
- Shiffman YouTube playlist. The videos on YouTube display skippable ads. If you would like downloadable, non-ad versions of the videos, please contact Dan.
- If you are interested in some supplemental reading on HTML and CSS, The HTML & CSS book is a nice one.
- Getting Started with p5.js code
- Learning Processing code ported to p5.js
- Video lesson accompanying code
- Research Resident Office Hours
- Cassie Office Hours -- (Cassie is the lead developer of the p5.js web editor so bring your bugs and questions about that!)
- ICM Help Sessions:
- Wednesdays 4-6pm in Room 15 w/ Craig & Kat
- Fridays 1:30-2:30pm in Room 20 w/ Cici & Yining
- 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)
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
- Other JS frameworks
- Server-side vs. client-side
- 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
- Optional viewing / reading:
2 -- Animation
- Program flow (what's a function?)
- Setup, draw, and other events
- Variation: mouseX and mouseY
- video tutorial
- More about variables
- random(), video tutorial
- map(), video tutorial
3 -- Interaction
- Conditional Statements
- Loops (while and for)
4 -- Functions: the basics
- Calling vs. defining
- Modularity: video
- Arguments and parameters
- Re-usability: video
- Return types: video
- Functions inside objects: video
- Optional Readings:
- Work of Art in the Age of Mechanical Reproduction, Walter Benjamin
5 -- Objects and Arrays
- Review object literals:
- properties - name/value pairs
- functions inside objects
- Constructor function! video tutorial 6.4
- What is an array? video tutorial 6.1
- An array of objects! video tutorial 6.3
- Adding and deleting from an array,
splice()video tutorial. 6.5
- 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
- Optional quiz to test your knowledge
6 -- Synthesis -- All sections meet Friday, October 7, 11am-2pm!
- Meet in the ITP Lounge
- Bring your Arduino
- Pizza will be served
- All details here
- Serial input with a callback workshop
- "Physical Variable"
7 -- DOM: events and callback function
- Review events -- mousePressed, keyPressed
- Tutorial: Beyond the Canvas, using p5.dom
- Tutorial: Intro to HTML/CSS basics
- DOM elements - p5.dom reference
style()-- low key intro to CSS
- CSS Reference
8 -- Data
- Tutorial: loading external data with p5.js
- Tutorial: more about data and APIs
- JSON and APIs (and more on callbacks!)
- Word Counting
- Tabular data
- Additional Reading:
9 -- Video and Sound
- p5.sound reference
- Video/capture: p5.MediaElement reference
- Live capture
- Movie playback
- Video Assignment
10 -- Mobile
- Workflow and process, get a previous sketch running on a device
- Touch interaction
- Remote debugging:
- Using the viewport meta tag to control layout on mobile browsers
- 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), video tutorial
- More HTML/CSS
- What is server side programming for?
- 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.
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.)