Skip to content

Homework Allison Monday

Allison Parrish edited this page Nov 13, 2017 · 8 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!).

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.

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.

Week 1

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?

Quiz

Here is an optional "take-home" quiz to test your knowledge. We'll be releasing one of these each week for self-study. We'll discuss answers next week in class.

Read and watch for next week

  • Videos 1.1 - 1.3 -- note these were recorded last year and reference the desktop editor which we are no longer using this semester.
  • After you do your homework, watch 2.1 - 2.3 to preview next week's discussion.
  • If the YouTube ads / format bother you, please contact daniel.shiffman@nyu.edu for a link to a shared google drive folder.
  • If you prefer books, I suggest Chapters 1-3 of Getting Started with p5.js. If you are logged into the NYU network you can read it via safari books online.

Week 2

Review

Allison's notes:

Shiffman's videos:

  • Variables videos 2.1-2.3 and 1st half of Chapter 4 of Getting Started with p5 (up to Example 4-5).
  • map() and random() videos 2.4 - 2.5

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.

Example code

Quiz

Read and watch for next week

Video:

* Conditionals [3.1 - 3.4](https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA)
* Loops [4.1 - 4.2](https://www.youtube.com/playlist?list=PLRqwX-V7Uu6Zy51Q-x9tMWIv9cueOFTFA)

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

Review

Allison's notes:

Re-watch Shiffman's videos for loops and conditionals (3.1 through 4.2) as needed.

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

Examples

Quiz (optional)

Try this quiz if you want to test your knowledge.

Read and watch for next week

Week 4

Review

Allison's notes:

From Shiffman: Videos 5.1-5.4 cover functions. ("Last year, I emphasized 'JavaScript object literals' over the 'JavaScript Constructor function' for making objects. I think this was a mistake. I'll discuss the distinction in class next week and might re-record these videos eventually, but keep that in mind as you watch. 6.4: The Constructor Function might be the most useful."---Shiffman)

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.

Examples

Quiz

An optional quiz to test your knowledge if you like.

Read and watch for next week

Nothing required, read or watch what you find most helpful. Suggestions:

  • Videos 6.1 through 6.11
  • Getting Started with p5.js chapters 9-10 (see e-mail re: PDF)

Week 5

Review

Allison's notes:

See also:

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

Examples

Here's an index of my sketches in the p5.js web editor. Examples from class can be found here.

Read and watch for next week

Week 6

Review

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

Examples

Read and watch for next week

Please watch the video tutorials for working with APIs in p5.js. Review and contribute to this wiki list of data sources in anticipation of in-class exercises next week.

To read:

Week 7

Review

Allison's notes:

See also:

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

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

Review

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

Week 9

Mobile notes

Examples from class:

Other examples and notes on the class syllabus.

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

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.

Final Project Documentation

  • Final project presentations are December TK. In class presentations will be approximately 7 minutes each, I will be strict about the time.
  • Please post your final project documentation to a web page (blog post is fine) and link next to your name below. This is due December TK.
  • It's up to you to figure out how to best document your project, here are some loose 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)