-
Notifications
You must be signed in to change notification settings - Fork 11
Homework Allison
A big part of learning at ITP is learning from each other. So share your work and in exchange you'll get to see everyone else's!
- Do the assignment.
- Contribute a question.
- Post documentation in the form of a blog post. Ideally something visual, some written thoughts, and code. If you are struggling with your sketch and can't get things to work, you should feel free to put your energy into writing about what didn't work (and vent any frustrations!).
I save all of my in-class p5js examples in the web editor. You can see a full list here.
Assignments are due before class begins each week. I will not give credit for assignments that are turned in late. Keeping in mind that I want you to succeed, and that the material can sometimes be challenging, I infinitely prefer inchoate or tentative work to work that is turned in late.
Use this form to turn in your homework assignments.
The spreadsheet with everyone's responses is here.
Make sure to set up the following:
- Sign up for a p5.js web editor account
- Sign up for the ITP ICM Google Group
- Create your own screen drawing: self-portrait, alien, monster, etc. Use 2D primitive shapes –
arc()
,curve()
,ellipse()
,line()
,point()
,quad()
,rect()
,triangle()
– and basic color functions –background()
,colorMode()
,fill()
,noFill()
,noStroke()
,stroke()
. Remember to usecreateCanvas()
to specify the dimensions of your window and wrap all of your code inside asetup()
function. Here's a sample example: Elegant Composition - Write a blog post about how computation applies to your interests. This could be a subject you've studied, a job you've worked, a personal hobby, or a cause you care about. What projects do you imagine making this term? What projects do you love? (Review and contribute to the ICM Inspiration Wiki page. In the same post (or a new one), document the process of creating your sketches. What pitfalls did you run into? What could you not figure out how to do? How was the experience of using the web editor? Did you post any issues to github?
- Before doing the homework: Videos 1-7
- After doing the homework: Videos 2.1-2.3
- If you prefer books, Chapters 1-3 of Getting Started with p5.js cover the same material. Log into the NYU network to read it for free.
If YouTube bothers you, ask Daniel Shiffman for a link to videos on Google Drive.
Week 2 curriculum outline with links to tutorials, videos and examples.
Allison's notes:
- JavaScript in the console
- First steps
- Expressions, variables and loops
-
Interaction (for
mouseX
andmouseY
) - Changes over time (for "Changing variables over time")
Create a sketch that includes (all of these):
- One element controlled by the mouse.
- One element that changes over time, independently of the mouse.
- One element that is different every time you run the sketch.
You can choose to build off of your week 1 design, but I might suggest starting over and working with one or two simple shapes in order to emphasize practicing with variables. See if you can eliminate all (or as much as you can) hard-coded numbers from the sketch.
Video:
Example code:
- Video Examples: 3.1-4.2
- Getting Started with p5 Examples: 04, 05, 06, 08.
- Learning Processing Examples: chp03-06
- Animation examples from ICM 2015
Getting Started with p5.js:
- Read Chapters 5 (Response) and 8 (Motion).
- Read the 2nd half of Chapter 4 on Loops (starting from Example 4-5 thru 4-13).
- If you're interested, read Chapter 6 on Translate, Rotate and Scale.
Week 3 curriculum outline with links to tutorials, videos and examples.
Allison's notes:
- Expressions, variables and loops
- Interaction (scroll down for relational expressions and conditionals)
Create an interactive artwork that implements the concept of repetition with
variation. Use at least one for
loop. Your artwork should also incorporate an
interactive interface element of your own design. For this assignment, work in
pairs. Write a blog post with a link to your sketch and a description of your
experience. Things to try:
- Make a rollover, a button, or a slider from scratch. Compare your code to the examples in "Examples" below. Later we'll look at how this compare to interface elements we'll get for free from the browser.
- Create an algorithmic design with simple parameters. (One example is 10 PRINT, see: 10PRINT example). Make your interface element control the appearance or behavior of the algorithmic design.
- When working in teams, try working separately and then combining your work together. Overlay your sketches, or have the interface element you created control your partner's algorithmic design (and vice versa). Trade sketches and riff on your partner's work. Or, sit next to each other at one keyboard and take turns coding while looking over each other's shoulder.
- 10 PRINT (Shiffman's sample implementations in p5.js); (video by Casey Reas)
- Casey Reas Process 6
- Gerhard Richter Color Charts
- Taroko Gorge by Nick Montfort
- Repetition with variation mood board.
- Vera Molnar
- Videos 5.1–5.3 in the learning p5.js series.
- Getting Started with p5.js chapters 9-10
Week 4 curriculum outline with links to tutorials, videos and examples.
Allison's notes:
Re-work an existing assignment, using functions to compartmentalize your code. Write at least one function that takes parameters and one function that has a return value. If your existing assignments already make use of functions, or if you don't want to build on existing work, feel free to make a new experiment from scratch. Goals and things to try:
- Break code out of
setup()
anddraw()
into functions. - Use a function to draw a complex design (like this) multiple times with different arguments.
- Write a function to that returns the result of a mathematical operation that you need to do several times in your code.
- Reorganize "groups of variables" into objects.
- If you are feeling ambitious, try embedding a function into an object.
- Videos 6.1-6.3, 7.1-7.7, 16.4
- Getting Started with p5.js chapters 10-11
Examples:
- New object syntax
- Video Examples for Objects and Arrays
- Getting Started with p5.js Chapters 10-11
- Learning Processing examples Chapters 8-9
Week 5 curriculum outline with links to tutorials, videos and examples.
Allison's notes:
Arrays and objects allow you to do something new with your programs: keep track
of user action over the course of your sketch's execution. For this week's
assignment, create a sketch that takes advantage of your new skills. The sketch
should allow the user to use clicks, key presses, etc. to add new elements to
the scene (and potentially to remove them later). Your sketch should use an
array of objects. (Using a constructor function or the class
syntax is optional.)
- Videos 8.1-8.16 (Focus on videos 8.1-8.9.)
- p5.dom section of Chapter 13 in Getting Started with P5.js
- Tutorial: Beyond the Canvas in P5
Week 6 curriculum outline with links to tutorials, videos and examples.
Allison's notes:
See also:
- Shawn's introduction to serial communication with p5.js (links to Tom's very nice video)
- Tutorial: Intro to HTML and CSS
- Tutorial: Beyond the Canvas in P5
- p5.js DOM library videos
- Chapter 13 in Getting Started with P5.js
- p5.js dom reference
- CSS reference
- Learn Layout: a great guide to writing CSS
Create a sketch that it uses HTML controls (like buttons, sliders, text input fields) as a means of modifying the sketch's behavior in real time. (You can adapt a previous homework assignment for this if you'd like.) BONUS: Incorporate an HTML control from p5.dom that we didn't talk about in class. Alternatively or in addition, use p5.dom to modify other elements on the page (these elements could be added by hand in index.html or dynamically added by your code.)
Please watch the following videos:
Read Chapter 12 in Getting Started with P5.js for more details.
Review and contribute to this wiki list of data sources in anticipation of in-class exercises next week.
To read:
Week 7 curriculum outline with links to tutorials, videos and examples.
Allison's notes:
- CSV files
- Getting data from the web (just this section, ignore stuff before and after, it's for Python, not Javascript!)
See also:
Here's the CSV we used in class.
Create a sketch that loads external data (whether from an existing file or through a web API). Interpret this data visually or interactively.
Look here for potential data sets:
- Datasets Subreddit
- NYC Open Data
- Data.gov
- ProgrammableWeb
- List of open APIs
- OpenWeatherMap - http://openweathermap.org/API
- NYTimes - http://developer.nytimes.com/
- The Guardian - http://www.theguardian.com/open-platform
- flickr - https://www.flickr.com/services/api/
- MTA - http://web.mta.info/developers/developer-data-terms.html#data
- Foursquare - https://developer.foursquare.com/
- Museum APIs list
- Cornell bird data
- Corpora project
- Videos 10.1-10.8
- Videos 11.1-11.7
- Chapter 7 in Getting Started with P5.js
Week 8 curriculum outline with links to tutorials, videos and examples.
Allison's notes:
See also:
- Chapter 7 in Getting Started with p5.js.
- p5.js sound tutorials
- p5.js video and pixels tutorials
- p5.sound reference
- Video/capture: p5.MediaElement reference
As always, all in-class examples can be browsed here.
Media used in class:
- transit.mov (swiped from Shiffman's examples)
- "I was wrong"
- Kitty: JPEG version and PNG version (original, used under creative commons license)
- Filet-O-Fish
- Meow (source)
- Kick, snare, hihat
Create a sketch that uses external media. Once you've mastered the basics by making prototype sketches that play sounds, draw images to the screen, scrub video, etc., think a bit more deeply about how the data in the media can be used, beyond its most evident affordances. Interpret the media accordingly. BONUS: Don't make a video mirror or a sound board.
Examples:
- Video
- Sound
Further reading:
Inspiration
On machine learning.
Week 9 curriculum outline with links to tutorials, videos and examples.
Notes TK.
Your final project should demonstrate mastery of the technical content of the class. You should develop an idea that is of interest to you and serves to advance your own research or artistic practice. Some advice:
- Make the smallest project possible (but no smaller). Be mindful of your own capabilities and the amount of time you can reasonably devote to the project. A smaller project that works well and clearly expresses an idea or proves a point is much better than an incomplete attempt at a larger project.
- Consider your audience. Who are you making the project for? How do you expect your audience to interact with your piece? What will their experience be like? Think about making a project intended just for you, or for a friend, or a small community. You don't have to make something intended for a general audience.
Keep in mind that you are encouraged to collaborate on your final project. You can do this with anyone in any ICM section. You can also combine your project with your final project for Physical Computing (or another class). In either case, make sure it's clear from your documentation who your collaborators are and what other classes you're targeting with the project.
For next week, create a proposal for your final project. Be prepared to present for a few minutes on your idea, preferably with visual aid. Show us your inspirations or make a prototype (even if it's just on paper). Have an idea for a title in mind. Document your proposal on your blog and post a link to it below.
Here are some sample final project proposals.
Text and type notes:
We'll likely continue on these topics next week. As always, in-class examples can be accessed here.
Review for next week: Javascript at the command line. Prepare by downloading NodeJS and Brackets.
Notes TK.
- Final project presentations are December 6th, 2018. In class presentations will be approximately 7 minutes each, I will be strict about the time.
- Please post your final project documentation to your blog and turn it in using the homework submission form. This is due December 13th, 2018. (But sooner is better!)
- It's up to you to figure out how to best document your project, here are some guidelines if you aren't sure what to include.
- Title
- Brief written description
- Visual Documentation: sketch running online, images, video, etc.
- References: links to related projects, code samples, etc.
- Source code (please cite your sources in the code comments)