Syllabus for ITP Foundation Course Introduction to Computational Media
- 1 -- Introduction and Drawing
- 2 -- Animation Variables
- 3 -- Interaction If Statements, Repeat Loops
- 4 -- Functions: the basics
- 5 -- Objects and Arrays
- 6 -- Serial and DOM: events and callback function
- 7 -- Data
- 8 -- Video and Sound
- 9 -- Extra Synthesis Workshop -- All sections meet Friday, October 27, 11am-2pm!
- 10 -- Mobile
- 11 -- Other Topics + Final Project Proposals
- 12 -- Beyond p5.js + Final Project Proposals
- 13 -- One on one speed user testing / feedback
- 14 -- Final Project Presentations
Section specific info
- Allison, Monday, 6:30-9:00: Homework
- Allison, Wednesday, 12:10–2:40: Homework
- Dano, Wednesday, 3:20-5:50: Homework
- Mimi, Tuesday, 12:10-2:40: Homework
- Shawn, Wednesday, 12:10-2:40: Homework
- Shiffman, Wednesday, 9:00-11:30: Homework
- Shiffman, Wednesday, 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:
- Tuesdays, 6:45pm - 8:45pm, Meeting Room, with residents Mathura & Leon
- Fridays 1:00pm - 2:30pm, Room 20, with residents Lisa & Aarón
- p5.js reference
- 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)
- There are many additional resources on the Resources wiki page.
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:
- Very extra painting links
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
- [video tutorial](link coming soon -- remind me somebody!)
- Optional Readings:
- Work of Art in the Age of Mechanical Reproduction, Walter Benjamin
5 -- Objects and Arrays
- Learning Processing Chapter 8 on Objects translated to p5
- 7.1 What is an array?
- 7.2 Arrays and loops
- 7.3 Arrays of objects
- 7.4 Mouse interaction with objects
- 7.5 Removing objects from arrays
- A Snake Following the Mouse
- Interactive Stripes
- An Array of Buttons
- Checking objects intersecting with other objects Old video, no classes! video tutorial, Old video, no classes! video tutorial
- [Checking Objects Intersection]http://alpha.editor.p5js.org/icm/sketches/S1BbBT13b)
- loading images for objects Old video, no classes! video tutorial 6.11
- MousePressed Adding New Images
- Optional quiz to test your knowledge
6 -- Serial and DOM: events and callback function
- Review events -- mousePressed, keyPressed
- Review Serial, introduce callback
- 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
7 -- 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
- Maps, see: Mappa
- Additional Reading:
8 -- Video and Sound
- p5.sound reference
- Video/capture: p5.MediaElement reference
- Live capture
- Movie playback
- Video Assignment
9 -- Extra Synthesis Workshop -- All sections meet Friday, October 27, 11am-2pm!
- Meet in the ITP Lounge
- Pizza will be served
- Details TBA
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
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.)