Weekly Schedule Fall 2023

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

Week 1

Primitive shapes, Programming concepts

Assignments due midnight before first class of 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 midnight before first class of 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 midnight before first class of 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
    • Michael’s section: For those of you who know how to use classes and arrays, I want you to use this homework assignment to develop your creativity. We will critique your assignments in class, so pay extra attention to aesthetics. I don’t expect you all to 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 midnight before first class of 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 midnight before first class of 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

Midterm due dates:

  • October 16 (Mang’s section)
  • October 17 (Michael’s section)
  • October 17th (Aya’s section)
  • 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)
  • Creative Reading:
    • Read Making Art is Like Setting a Trap. The article is about writing, but the concept is true for any art form.  No reading response is necessary, but think about this as you work on your midterm project. What is your “emotional concept” and how does your midterm project replicate that in your user?
Week 7
Midterm sharing!

Assignments due midnight before first class of 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 8 

Introduction to Electricity, Arduino digital input & output

Assignments due midnight before first class of following week:

Week 9

Arduino: analog input & output

Assignments due midnight before first class of following week:

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

 

Week 10

Sound, Servo motor, Mapping

Assignments due midnight before first class of 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)

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 11

Serial Communication, introduce Final Project

Assignments due midnight before first class of 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
      3. 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
    • (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.
Week 12

DC motors, Construction and Debugging, Final Project Proposal

Assignments due midnight before first class of following week:

  • Production:
    • 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
    • (Post your proposal and design documentation on blog):
Week 13

Work on Final Project

Final project is due Monday 8 May 11:59pm:

  • Production:
    • (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?
    • (Post documentation on blog)
      • Describe your concept
      • How does the implementation work?
        • Description of interaction design
        • Description of Arduino code
        • Description of p5.js code
        • 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)
IM End of Semester Show (Spring semester)
  • (Date/time TBD) in the Arts Center lobby and Black Box theater
  • Mang Section – Setup (Date/time TBD)
    • Set up your project and make sure it’s working
  • All IM students must show at least one project
  • Timeline – TBD
    • Arrive – set up laptops, make sure project is still working
    • Show your project
    • Performances in Black Box theater
    • Deinstall
      • Clean up your area
      • Remove your project
      • Return and check in borrowed equipment to IM Lab
      • Return tables, help with other cleanup