- This year we are using p5.js, a new JavaScript framework for ICM. Start by downloading the p5.js editor.
- 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
- Kadenze course -- coming soon!
- Shiffman Vimeo channel -- no ads
- Shiffman Youtube playlist -- has ads
- 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.
- Research Resident Office Hours
- ICM Help Session
- 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)
- 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
- Homework
- Sign up for the ITP ICM Google Group (also sign up for your section's group)
- Sign up for a Github Account. You are not required to use github, but you will need an account to edit the wiki here.
- Create your own screen drawing: self-portrait, alien, monster, etc. Use only 2D primitive shapes – arc(), curve(), ellipse(), line(), point(), quad(), rect(), triangle() – and basic color functions – background(), colorMode(), fill(), noFill(), noStroke(), stroke(). Remember to use createCanvas() to specify the dimensions of your window.
- Post link to your documentation and sketch on your section's wiki. Follow the guidelines provided on the wiki.
- Optional viewing
- Casey Reas Eyeo 2012 talk on Chance Operations
- Introductory p5.js videos
- Optional reading:
- FORM+CODE: Introduction and What is Code?
- As We May Think, Vannevar Bush
- Long Live the Web, Tim Berners-Lee
- Program flow (what's a function?)
- setup, draw, and other events
- Variation
- start with mouseX and mouseY
- make your own variables (numbers and strings)
- JS objects (variables inside variables)
- random()
- map()
- loading images
- Homework
- Create a animated application. Start over from scratch and build something with a very simple design. Focus on the logic of variables and avoid using hard-coded values. Play with mouseX and mouseY. Start by working in pairs (according to list below). You can post together or break off and complete the assignment individually. If you are stuck, here are some ideas.
- Experiment with motion using a single simple shape. Can you create a randomly jittering "nervous" square? (Here is a sample). A circle that spirals around the window? How could user interaction affect the shape's motion?
- Use random() to create a painting system. Here are some examples.
- Create a animated application. Start over from scratch and build something with a very simple design. Focus on the logic of variables and avoid using hard-coded values. Play with mouseX and mouseY. Start by working in pairs (according to list below). You can post together or break off and complete the assignment individually. If you are stuck, here are some ideas.
- Conditionals
- If, else if, else
- Boolean variables
- Relational Operators, Logical Operators
- Buttons, rollovers, switches
- Loops
- while
- for
- array as a list of variables
- looping through an array
- Modulo
- Homework
- TBA, an exercise around building your own interface from scratch
- Re-usability
- Modularity
- Calling vs. defining
- Arguments and parameters
- Return types
- Recursion
- 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.)
- Review events -- mousePressed, keyPressed
- DOM elements
createP()
createButton()
createSlider()
- Callbacks
button.mousePressed(callback);
style()
-- low key intro to CSS- Homework: TBA, do something with DOM, compare interface elements to how you did your own week 3
- Serial input with a callback workshop
- "One button experience" exercise
- arrays
- JSON and APIs (and more on callbacks!)
- Word Counting
- Tabular data
- Serial with strings
- Optional Reading:
- Art and the API, Jer Thorp
- The Anxieties of Big Data, Kate Crawford
- Data Assignment (#1)
- This week and the next two weeks are mini-projects that you can consider trial runs for a final project. They can be small sketches that form a tiny component of a larger idea. Each student will complete all assignments but only 1/3rd will present each week.
- Workflow and process, get a previous sketch running on a device
- Touch interaction
- Sensors
- Mobile Assignment (#2)
- Sound
- Live capture
- Movie playback
- Video Assignment (#3)
- Objects
- JS objects with methods
- Making JS objects via a "constructor" function
- Example: Make a particle system
- Homework: Prepare a final project proposal. Create a web page or blog post with title, description, sample imagery, diagrams, Processing code, etc. Be prepared to present your proposal to the class next week.
- See your individual section's proposal schedule on your wiki
- moving out of the IDE
- HTML/CSS itself
- other JavaScript frameworks: jquery, d3, etc.
- 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?
- See your individual section's proposal schedule on your wiki
- Other bonus topics?
- webgl
- What is server side programming?
- 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.
- Please add your link to your final project documentation on your section's wiki.
##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.
- "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.)