Skip to content
Luisa Pereira edited this page Oct 25, 2021 · 15 revisions

Contents

Homework 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. Practice by completing the weekly worksheet.
  2. Do the assignment.
  3. Contribute a question.
  4. Post blog documentation: Ideally something visual, some written thoughts, and code. If you are struggling with your sketch and can't get things to work, put your energy into writing about what didn't work and what you did to try to solve it.

How to Submit

Assignments are due the day before class each week. I want you to succeed. The material can sometimes be challenging. I'd still prefer that you turn in work that is unambitious or incomplete, rather than turn in work late.

Weekly Worksheet

There are worksheets (linked below) to practice the concepts introduced in this course. You are expected to add links to your p5 sketches directly in these documents. Log in to your NYU account to access them.

Weekly Blog Post

To submit all other assignments (i.e. your blog posts or other documentation), use this homework form.

Here is the spreadsheet with everyone's responses. If you have work you want to turn in that you don't want to share with everyone, let me know, and we can make alternative arrangements.

Support

If you find yourself struggling, there are many forms of support at ITP:

  • Look out for the residents' office hours and help sessions.
  • Visit The Coding Lab, a walk-up (and virtual) help desk for NYU students to get help with their code from ITP student mentors.
  • Post a question in the ITP/IMA Discord HELP-ITP #icm channel. Think of Discord as chat. It’s a platform designed for synchronous connections and community messaging. If you need a question answered in real-time, consider posting here to chat with another student or resident who is currently online.
  • Need help asking a question?

Class Outlines and Assignments

All in-class notes are here

Week 1. Introduction and Drawing

  • BEFORE CLASS:

  • CLASS OUTLINE:

    • Activity 1: Introductions. In a few minutes, create a slide to introduce yourself.

    • What is computational media?

    • Activity 2: Program a drawing. Shared slides

    • Intro to the p5.js editor, invoking functions, using parameters

  • DO:

    • Test yourself: Complete this worksheet. Tip: for the red line, look up line() and strokeWeight(). You must be logged in with your NYU account to access the worksheet.
    • 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: Zoog
    • Articulate and write down at least 1 question that came up while doing the above.
    • 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? (You can review and contribute to the ICM Inspiration Wiki page). In the same post (or a new one), document the process of creating your sketch. What pitfalls did you run into? What could you not figure out how to do? How was the experience of using the web editor?
    • Submit all the above using our homework form (this will be the same every week and is also listed under the 'How to Submit' section on this page).
  • READ AND WATCH:

Week 2. Animation: Variables

  • RESOURCES FROM CLASS:

  • TEST YOURSELF: Worksheet Post a url to your answers on the Google Doc.

  • DO:

    • Create a sketch that includes (all of these):
      • 1 element controlled by the mouse.
      • 1 element that changes over time, independent of the mouse.
      • 1 element that is different every time you run the sketch.
    • e.g. Try refactoring your Week 1 HW by removing all the hard-coded numbers except for createCanvas(). Have some of the elements follow the mouse. Have some move independently. Have some move at random.
    • e.g. Do the above but change color, alpha, and/or strokeWeight instead of position.
    • Or make something new!
  • WATCH, READ, RUN CODE:

    • Watch Conditionals 3.1 - 3.4 ~1hr | Get Code
    • Getting Started with p5: Chapter 5 (Response). | Get Code
    • Go further with Transformations (Optional)
      • Video Tutorials 9.1-9.3
      • Getting Started with p5: Chapters 6 (Transformations) and 8.10-8.15 (More complex motion)

Week 3. Interaction: Conditionals

  • RESOURCES FROM CLASS:

  • TEST YOURSELF: Complete Worksheet 3

  • DO: In general this week, you should work with rule-based animation, motion, and interaction. You can use the ideas below or invent your own assignment. Start by working in pairs as below. Can you divide an idea into two parts and combine those parts? (e.g. One of you codes the input behaviors and the other one codes the output behaviors.) Can you swap sketches and riff off of your partner's work? You can post together or break off and complete the assignment individually.

    • Can you tie your two ideas together with an interface control element?
    • Try making a rollover, button, or slider from scratch. Compare your code to the examples on github. Later we'll look at how this compares to interface elements we'll get for free from the browser.
  • READ / WATCH

Week 4. Repetition: Loops

Week 5. Organization: Functions

Week 6. More Repetition: Objects and Arrays

  • RESOURCES FROM CLASS

  • TEST YOURSELF

  • DO:

    • Next week you will be presenting your own assignments. Duration: 5 minutes. Focus on what's happening in your sketch computationally. Write out what you're going to say and prepare any diagrams that will help you explain what's going on. See Mimi's demo video (It is much longer than the time you will have!)
      • Give yourself time to properly demo 1 aspect of your sketch.
      • Explain 1 thing you learned in making your sketch. Talk about what programming concept(s) you are using (e.g. objects and arrays, nested for loops, toggle logic, portable functions)
      • Write down what you're going to say ahead of time. Prepare diagrams to help get your point across!
    • OPTIONS FOR WHAT TO DO:
      • Mash up a couple of your past assignments.
      • Re-factor a past sketch and make it better.
      • Design a sketch that has lots of something (balls, sheep, eyes) using either arrays or arrays and objects.
      • IF you are already working with classes/objects and arrays:
        1. Re-organize / break-down your classes into the "smallest functional units" possible.
        2. Try different ways to have your objects "communicate" with each other in some way.
      • In the end the goal is to have code in draw() that only makes calls to objects. Something like:
function draw() {
  background(0);
  
  // A single object
  apple.chop();
  // Another object
  orange.peel();
  
  // Calling a function on all of the objects in an array
  for (var i = 0; i < grapes.length; i++) {
    grapes[i].pluck();
  }
}

Week 7. The DOM and Project Presentations