Skip to content
Ellen Nickles edited this page Sep 28, 2026 · 16 revisions
Section 02 Info
Meeting Time Monday 9:30am - 12:00pm
Location Room 411
Contact ellen.nickles@nyu.edu
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 450
Resident office hours (schedule)
The Coding Lab (schedule or drop-in help)
How to ask code-related questions (examples)
Our Section Submit assignments here
See everyone's responses
Our Miro board
Course syllabus
General Resources p5.js Reference / Web Editor
The Coding Train's Intro to p5.js
Allison Parrish’s Creative Coding Notes
Patt Vira's Make Art with Code
xin xin's Intro to p5.js
Jack B. Du's My Coding Show
Qtv'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