Skip to content
Allison Parrish edited this page Nov 29, 2018 · 9 revisions

Guidelines

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!

  1. Do the assignment.
  2. Contribute a question.
  3. 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!).

Allison's in-class examples

I save all of my in-class p5js examples in the web editor. You can see a full list here.

How to turn in your homework assignments

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.

Week 1: Introduction and drawing

Make sure to set up the following:

Assignment

  • 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 use createCanvas() to specify the dimensions of your window and wrap all of your code inside a setup() 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?

Resources

Read and watch for next week

If YouTube bothers you, ask Daniel Shiffman for a link to videos on Google Drive.

Week 2: Animation, variables

Review

Week 2 curriculum outline with links to tutorials, videos and examples.

Allison's notes:

Assignment

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.

Read and watch for next week

Video:

Example code:

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: Conditionals and loops

Review

Week 3 curriculum outline with links to tutorials, videos and examples.

Allison's notes:

Assignment

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.

Inspiration

Read and watch for next week

  • Videos 5.1–5.3 in the learning p5.js series.
  • Getting Started with p5.js chapters 9-10

Week 4: Functions and objects

Review

Week 4 curriculum outline with links to tutorials, videos and examples.

Allison's notes:

Assignment

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() and draw() 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.

Read and watch for next week

Examples:

Week 5: Objects and arrays

Review

Week 5 curriculum outline with links to tutorials, videos and examples.

Allison's notes:

Assignment

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.)

Read and watch for next week

Week 6: Document object model (DOM), HTML, CSS

Review

Week 6 curriculum outline with links to tutorials, videos and examples.

Allison's notes:

See also:

Assignment

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.)

Read and watch for next week

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: Working with data

Review

Week 7 curriculum outline with links to tutorials, videos and examples.

Allison's notes:

See also:

Here's the CSV we used in class.

Assignment

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:

Read and watch for next week

Week 8: Video and sound

Review

Week 8 curriculum outline with links to tutorials, videos and examples.

Allison's notes:

See also:

As always, all in-class examples can be browsed here.

Media used in class:

Assignment

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:

Further reading:

Inspiration

Read and watch for next week

On machine learning.

Week 9: Machine learning

Review

Week 9 curriculum outline with links to tutorials, videos and examples.

Notes TK.

Review for next week

Final project advice

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.

Final project proposal

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.

Week 10: ICM Madness Workshop

Week 11: Other topics

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.

Week 12: Beyond p5.js

Notes TK.

Final Project Documentation

  • 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)