Homework Ellen 02 - ITPNYU/ICM-2026-Code GitHub Wiki

Section 02 Info
Meeting Time Monday 9:30am - 12:00pm
Location Room 411
Contact [email protected]On weekdays I aim to respond within 24 hours
Student Hours Monday 1:00pm – 3:00pm Sign up here
Extra Support ICM Help Sessions Friday 1:00pm - 3:00pm @ Rm 450Resident office hours (schedule) The Coding Lab (schedule or drop-in help)How to ask code-related questions (examples)
Our Section Submit assignments hereSee everyone's responsesOur Miro boardCourse syllabus
General Resources p5.js Reference / Web EditorThe Coding Train's Intro to p5.jsAllison Parrish’s Creative Coding NotesPatt Vira's Make Art with Codexin xin's Intro to p5.jsJack B. Du's My Coding ShowQtv's Creative Coding tutorials in Chinese (also on bilibili)HappyCoding.io

Contents

About Our Section

Please read the ICM Code Syllabus for the course description, learning objectives, and all policies.

In addition, our course section embraces an active-learning approach with the belief that programming is best understood by doing. In keeping with this approach, class time will be structured as a workshop and seminar instead of a lecture, relying heavily on group discussion and participation. Weekly video tutorials before our class sessions will introduce fundamental coding concepts. During class, supplemental code examples will be presented and discussed before hands-on work together. Time will also be allotted to share our weekly assignments. Examples and assignments will iteratively build upon lessons learned in preceding classes. I encourage you to reach out to me outside of class to ask questions, share your ideas and feedback, and discuss topics in detail.

How to Succeed in Our Course

  • Show up on time
  • participate in class by sharing and discussing your work, asking your peers questions, asking Ellen questions, giving feedback, and helping others when you can
  • and submit homework on time and document your process (see below)

Here’s the evaluation breakdown on our syllabus, but if you are engaged in ways described here, you’ll be on your way!

Weekly Assignment Guidelines

All assignments will be posted on this page, and all are required. Unless otherwise stated, assignments are due the night before class so that I have a chance to review your questions before we meet. All assignments are expected to be submitted by the stated deadline. If you anticipate any challenges meeting the deadline, please reach out to me so that we can consider your options together.

Submitted assignments will be marked as complete (full credit), partially complete (half credit), or incomplete (no credit) in accordance with the Assignment Policy.

Video Tutorials

Before class, watch the assigned tutorials about fundamental coding concepts and creative programming techniques to practice together when we meet in class.

Worksheets

There are worksheets* to practice the concepts introduced in this course. You are expected to add links to your p5 sketches directly in these documents.

Creative Exercise and Video Walkthrough

Each week there's an open-ended exercise to apply the concepts we practice in class. You'll record a short video walkthrough of your sketch to practice talking about your work and the code behind it.

  • Record a ~3-5 minute screen recording where you share your sketch and answer the following:
    1. What did you do?
    2. How is your program structured? What is the story of your code? Walk through the parts and how they relate to one another, using the vocabulary we've been building in class (functions, variables, conditionals, loops, arrays, etc.) Name what you used and why.
    3. What didn’t work, and what steps did you take to try to solve the issue?
  • A couple easy ways to record: QuickTime for screen recording on Mac (or the equivalent for Windows) or even your phone pointed at your screen is fine as long as the code is clearly readable. Keep it casual: no script and no editing needed, and you don't have to be on camera. If recording is a barrier for any reason, reach out and we'll find an alternative.
  • If you are struggling with the exercise, put your energy into talking through what didn't work and how you tried to solve it. It is totally okay to vent your frustrations. Narrating where you got stuck can help you synthesize what you did and tried to do, and gives the people supporting you the context to help. Think of it as a reference guide for your future self.
  • Submit the creative exercises using our assignment form*.
  • A big part of learning at ITP is learning from each other. Here is the spreadsheet with everyone's responses*.

*Log in to your NYU account to access the document.

AI Use

Adding on to the course AI Statement, our section will offer the use of emerging generative AI tools after introducing and practicing the basic programming control structures in Weeks 1-7 (ICM Code).

AI tools can be useful for coding, especially once you've developed a foundation to describe what you want and how to evaluate the output. In this course, we will approach AI as an optional tool for extending your creative work rather than a substitute for learning how to code. A structural understanding of coding concepts is necessary and important before incorporating any AI-assisted programming. Being able to code is what helps you get more out of AI, so we will build that understanding first.

In Weeks 1-7 (ICM Code), we will set AI aside and work through the material ourselves, practicing foundational concepts and developing computational thinking. Learning takes effort and happens by incremental doing and making: trying, achieving small wins, stumbling into small mistakes, and trying again. That friction is what makes learning stick, and we'll celebrate all of it! Reaching for AI too early can skip past that understanding and the reward of working something out yourself. Much like practicing math before using a calculator, once you can describe basic coding concepts and assemble simple programs on your own, you'll be better equipped to use AI to develop your ideas with code.

As we transition to ICM Media (Weeks 8-14), we'll discuss how AI works, its benefits and limits, along with strategies for incorporating AI into a creative coding practice. During ICM Media, you may choose whether and how to use AI tools as part of your process.

Using AI is entirely optional. If you do use it, please be transparent about how and where, so we can learn from each other about how these tools can support creative work.

Using AI also does not lower the bar for understanding your own work. Whether or not you use it, you're expected to stay in control of your projects and to be able to answer these questions:

  • Do I understand how this program is structured and how its parts relate?
  • Can I explain and defend the choices in this code?
  • Am I making the creative decisions, or is the tool making them for me?

This statement is adapted from the Creative Coding Statement on AI Use, co-created with Carrie Wang in Summer 2026, and is influenced by the IMA Low Res Statement on AI.

Citing Sources

The field of creative technology thrives on community and the open sharing of code. You are encouraged to learn from the work of others and leverage existing tutorials, examples, libraries, and documentation like the p5.js language reference as you build. The purpose of our exercises, however, is to demonstrate your own problem-solving, creative thinking, and technical understanding. Whenever something outside your own work helps you, cite it: provide a link along with a quick note on how it helped, so we can learn from each other’s sources. The same goes for AI tools.

Adapted from Dan Shiffman's Code! course at NYU and Golan Levin's Interactivity and Computation course at Carnegie Mellon.

Week 1 • Sept 14 • Introduction and Drawing in p5.js

  • Welcome! and introductions
  • Course overview + AI policy
  • What is p5.js (p5)?
  • p5 web editor
  • p5 functions
  • Syllabus + schedule
  • Assignment

Resources

Examples

Assignment due the night before our next class

  • DO (if you haven't already)
  • WATCH (BEFORE EXERCISES) • Coding Train videos 1.1-1.6 ~1hr 20min
  • PRACTICE • Week 1 Worksheet
  • CREATE • SELF-PORTRAIT
    • Draw a simple “self-portrait” with a pen/pencil on paper.
    • Then, try your best to recreate it in code using p5.
    • Think about what a self-portrait means to you. Is it a depiction of what you look like? A bridge between your private and public regard? Or a collection of your lived experiences?
    • Consult the p5 Reference.
    • Add comments to your code to describe the different parts.
    • Reflect a little on the process: How did it feel to translate an idea into code? What’s the difference between sketching something with pen and paper, and drawing with code?
    • Submit your documentation on our assignment form.
    • Here are Ellen's examples:
  • WATCH (AFTER EXERCISES)

Week 2 • Sept 21 • Animation with Variables

In class

  • Share our homework
  • Logging values to the Console
  • Introduction to variables
  • setup() vs draw()
  • Animating shapes
  • Variable scope
  • p5 system variables

Examples

Assignment due the night before our next class

  • WATCH (OPTIONAL) • Coding Train Videos 16.1-16.2 about keywords let, var, and const ~20 min
  • PRACTICE • Week 2 Worksheet
  • CREATE • OPPOSITES
    • Choose a pair of words with opposite meanings, such as “order” and “chaos,” “ascend” and “descend,” “empty” and “full”, or your own! Create one sketch to represent the pair of your choice.
    • Consider illustrating the opposite meanings through composition of elements, selection of colors, or any time-based change or movement.
    • Think about what you can do to make your audience sense or think of the two words without having to spell them out.
    • Submit on our assignment form.
  • WATCH

Week 3 • Sept 28 • Interaction with Conditionals

In class

  • Problem decomposition
  • Relational expressions and conditional statements
  • Boolean variables
  • Combining expressions
  • Share homework

Resources

Examples

Assignment due the night before our next class

Week 4 • Oct 5 • Repetition with Loops

In class

  • Share our homework
  • More with conditional statements
  • Introduction to loops
  • Creative coding examples

Resources

Examples

Assignment due the night before our next class (DUE NEXT TUESDAY)

  • PRACTICE • Week 4 Worksheet
  • CREATE • PATTERNS
    • We humans have a tendency to look for patterns everywhere. We see patterns in nature and on the urban streets of New York. We rely on patterns we’ve detected in life to make predictions and acquire knowledge. Computation is all about patterns.
    • Observe, both outside (your surroundings) and inside (your history of thoughts and feelings), make a sketch about a specific pattern you find.
    • Get creative. Think about how you can tell the unique story of the pattern using code.
    • Submit on our assignment form.
  • WATCH
  • READ • p5 Tutorial: A Field Guide to Debugging
  • NEXT WEEK: We meet on Wednesday, Oct 14 because Monday is a holiday

Week 5 • Oct 14 • Organization with Arrays and Functions

In class

  • Introduction to arrays
  • Share homework
  • Define functions to perform tasks
  • Call functions with and without arguments
  • Functions that calculate values for us
  • Anonymous check-in survey

Resources

Examples

Assignment due the night before our next class

  • PRACTICE • Week 5 Worksheet
  • CREATE • TIME
    • This week’s computational theme is organization. In what ways do we conceive of and organize time? Create a sketch to represent “time”. Think about what quality of time you would like to portray. A few ideas to consider:
      • The passing of time through change, motion, or accumulation of elements
      • The relativity of time
      • Time twisted
      • Capturing time
      • The stillness of time
      • …what else?
      • Inspiration from Jeff Feddersen's course, Time?
    • Submit on our assignment form.
  • WATCH