Weekly Schedule Spring 2024

This schedule is common to all sections. Lecture notes for individual sections are below:

Week 1

Primitive shapes, Programming concepts

Assignments due before the first class starts of the following week:

Production:

  • Create an account at https://editor.p5js.org/ so you can save and share your p5.js sketch
  • Make a self-portrait using p5.js using the online editor
    • The portrait must be entirely created by your code i.e. you must not interact with your computer while the portrait is being made (e.g. no drawing using the mouse)
    • The portrait does not need to be dynamic (i.e. it does not need to change while we look at it)
    • The portrait does not need to be realistic. The purpose is to practice using the simple drawing functions.
  • Post your documentation and code on the class WordPress blog

Here are some resources to look at for coding with p5.js:

Technical Reading (no response required):

Week 2

Animation, Conditionals, Loops

Assignments due before the first class starts of the following week:

    • Technical Reading (no response required):
      • If you are new to functions or want to review, watch Dan Shiffman’s functions tutorials. There are four videos, each less than 10 minutes.
      • Watch at least the first four of Dan Shiffman’s Object Oriented Programming tutorials.
Week 3

Functions, Arrays, and Object-Oriented Programming

Basic (very) Car Sketch

Assignments due before the first class starts of the following week:

  • Production:
    • Create a generative artwork using Object-Oriented Programming. You must use arrays and objects. Pay attention to the structure, clarity, and organization of your program. As always, document your project:
      • Well commented code, especially for any confusing or tricky parts
      • References to any examples or inspiration
      • Functions as needed to organize your program
      • Excellent names for variables and functions
      • Post code and one or more images
      • Describe the overall concept of your artwork
      • Embed your sketch in the post
      • Describe any problems you ran into
    • Post your documentation and code on the class WordPress blog
    • For those of you who know how to use classes and arrays, use this homework assignment to develop your creativity. We will critique your assignments in class, so pay extra attention to aesthetics. You’re not expected to all be artists, but everyone can pay attention to the visual appearance of their work and make conscious choices. Be ready to discuss your work in this context, explaining your influences, inspiration, and choices.
  • Technical Reading (no response required)
    • Watch this two part (part 1 and part 2) video tutorial on transformations
    • Watch this video tutorial on Perlin noise
Week 4

Loading Data, Displaying text

Assignments due before the first class starts of the following week:

  • Technical Reading (no response required)
    • Read about working with images here or watch Shiffman’s video on the subject
Week 5

Image Processing, Sounds (download files for use in class), introduce Midterm Project

Assignments due before the first class starts of the following week:

  • Production:
      • Make progress on your midterm project and post your progress to the blog
          • Decide on the concept and design the user interaction
          • Start designing your code (functions, classes, interactivity)
          • Identify the most frightening or uncertain or complex part of your midterm project, and do something to minimize that risk e.g. write some code to test a new library, or implement any critical algorithms that you need, etc. For example you could implement code to generate different graphical shapes, a collision detection algorithm, or a test program for sound playback.
          • Document your project concept, design, and what you identified as the most frightening part and what you did to reduce this risk on the blog

         

      • Midterm Project:
          • Make an interactive artwork or game using everything you have learned so far
          • Can have one or more users
          • Must include
            • At least one shape
            • At least one image
            • At least one sound
            • At least one on-screen text
            • Object Oriented Programming
          • The experience must start with a screen giving instructions and wait for user input (button / key / mouse / etc.) before starting
          • After the experience is completed, there must be a way to start a new session (without restarting the sketch)
      • Examples of midterm projects:
  • Creative Reading (posted response required):
Week 6

Computer Vision

Assignments due before the first class starts of the following week:

  • Production:
        • Complete Midterm (post documentation on blog)
          • Embed or link to your sketch (e.g. link to the sketch in fullscreen mode)
          • Include code snippets and one or more images
          • Describe the overall concept of your project (1-2 paragraphs)
          • Describe how your project works and what parts you’re proud of (e.g. good technical decisions, good game design) 2-3 paragraphs
          • Describe some areas for improvement and problems that you ran into (resolved or otherwise) (1-2 paragraphs)
Week 7
Midterm sharing!

Assignments due before the first class starts of the following week:

    • Arduino requires a USB-A port. If your laptop has only USB-C ports, purchase a USB-C to USB-A adapter. These are readily available at Amazon as well as many shops, possibly even the campus bookstore and convenience store.
    • Install the Arduino IDE from here. Install version 2.0. Arduino 2.0 IDE installation instructions.
Spring Break
Week 8a 

Introduction to Electricity

Week 9 

Arduino digital input & output

Assignments due before the first class starts of the following week:

Week 10

Arduino: analog input & output

Assignments due before the first class starts after Eid break:

  • Production:
    • (Post documentation on blog): Get information from at least one analog sensor and at least one digital sensor (switch), and use this information to control at least two LEDs, one in a digital fashion and the other in an analog fashion, in some creative way.
  • Creative Reading  (posted response required):
  • Technical Reading (no response required):
    • Read about the voltage divider. Don’t worry about the theory too much or the section on level shifting. The important thing is to absorb a little of the concept of a voltage divider.
Eid Break
Week 11

Sound, Servo motor, Mapping, Introduce Final Project

Assignments due before the first class starts of the following week:

  • Production:
    • (Post documentation on blog) – group assignment (2 people per group):  Make a musical instrument
      • You must use at least one digital sensor (switch)
      • You must use at least one analog sensor (photoresistor, potentiometer, or distance measuring sensor)
      • Each person should post to their individual blog (ok if the posts are the same)
    • (Post documentation on blog): Write a preliminary concept for your final project, which must incorporate both Arduino and P5.
      • Final project prompt (examples are listed on syllabus page)
        • Create a physically interactive system of your choice that relies on a multimedia computer for some sort of processing or data analysis. The Final should use BOTH P5 AND Arduino. Your focus should be on careful and timely sensing of the relevant actions of the person or people that you’re designing this for, and on clear, prompt, and effective responses. Any interactive system is going to involve systems of listening, thinking, and speaking from both parties. Whether it involves one cycle or many, the exchange should be engaging. Each student does their own final project.

Creative Reading (posted response required):

Technical Reading:

It is important that you understand the concepts behind BlinkWithoutDelay. Here are links to various other explanations of the same thing. Browse them, and read one deeply enough that you understand. Come to class with questions if none of these help.

Week 12

Serial Communication, Final Project Proposal

Assignments due before the first class starts of the following week:

  • Production:
    • (Each person, not just one for a group, should post code for each exercise, and video of just the LED lighting up with the ball bouncing) Work in the groups from class to finish the three in-class examples exercises:
      1. make something that uses only one sensor  on Arduino and makes the ellipse in p5 move on the horizontal axis, in the middle of the screen, and nothing on arduino is controlled by p5
      2. make something that controls the LED brightness from p5
    • take the gravity wind example (https://editor.p5js.org/aaronsherwood/sketches/I7iQrNCul) and make it so every time the ball bounces one led lights up and then turns off, and you can control the wind from one analog sensor
      • Commit to your final project proposal, include the following explanations in your blog post:
        • Finalized concept for the project
        • Design and description of what your Arduino program will do with each input and output and what it will send to and/or receive from P5
        • Design and description of what P5 program will do and what it will send to and/or receive from Arduino
        • Start working on your project and be prepared to do user testing next week (document the progress)
Week 13

DC motors, Construction and Debugging

User testing (due by second class of this same week):

  • (Post documentation on blog):
    • Conduct user testing (record video)
      • Have people try your project without giving them any prompts/instructions and see how they use it
        • Are they able to figure it out? Where do they get confused and why? Do they understand the mapping between the controls and what happens in the experience?
        • What parts of the experience are working well? What areas could be improved?
        • What parts of your project did you feel the need to explain? How could you make these areas more clear to someone that is experiencing your project for the first time?

Final Projects due before the first class starts of the following week:

  • Final Project Documentation:
    • (Post documentation on blog)
      • Describe your concept
      • Include some pictures / video of your project interaction
      • How does the implementation work?
        • Description of interaction design
        • Description of Arduino code and include or link to full Arduino sketch
        • Description of p5.js code and embed p5.js sketch in post
        • Description of communication between Arduino and p5.js
      • What are some aspects of the project that you’re particularly proud of?
      • What are some areas for future improvement?
Week 14
Final Project Due (post documentation on blog)

Aaron’s Section: Documentation Due May 9th – 11:59pm (NO EXCEPTIONS)

IM End of Semester Show (Spring semester)

All IM students must show at least one project

Timeline:

    • Setup in Arts Center Lobby (time for each section TBD)
      • Find designated space for your project, set up and test
      • Take laptops and valuables with you
    • May 9th – IM End of Semester show (5-8pm)!
      • Open to NYUAD Community, happening inArts Center Lobby and Black Box
      • 4:30pm – Get installation running
      • 5-7pm Installations open for viewing
      • 7-7:30pm Performances in Black Box
      • 7:30pm Closing ceremony – group picture
      • 8pm – Cleanup, return and checkin equipment to IM Lab / EC, help move tables etc.

Have a great break!