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
- Week 1 • Sept 14 • Introduction and Drawing in p5.js
- Week 2 • Sept 21 • Animation with Variables
- Week 3 • Sept 28 • Interaction with Conditionals
- Week 4 • Oct 5 • Repetition with Loops
- Week 5 • Oct 14 • Organization with Arrays and Functions
- Week 6 • Oct 19 • More Repetition with Classes
- Week 7 • Oct 26 • Share Assignments / AI-Assisted Coding
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:
- What did you do?
- 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.
- 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
- HTML, CSS, JavaScript / p5.js Website Demos | Code
- p5 getting started sketch
Assignment due the night before our next class
- DO (if you haven't already)
- Complete a very quick pre-class survey (NYU login required) to tell me a little bit about yourself.
- Create a p5 web editor account.
- 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:
- self-portrait drawing | self-portrait p5 sketch
- example walkthrough video of another self-portrait (my video is a bit longer to review points from class 🙂)
- WATCH (AFTER EXERCISES)
- Coding Train Videos
2.1-2.5
about variables,
random(), andmap()~1hr - Optional: Variable by Patt Vira ~9min
- Coding Train Videos
2.1-2.5
about variables,
Week 2 • Sept 21 • Animation with Variables
In class
- Share our homework
- Logging values to the Console
- Introduction to variables
setup()vsdraw()- Animating shapes
- Variable scope
- p5 system variables
Examples
- Week 2 Syllabus Resources
- console.log with variables
- animated shape
- variable scope
- style settings in
draw() - responsive rect
- Rotating and drawing custom shapes (and using the
translate()function)- Coding Train Videos 9.1-9.3 and 9.22
- Rotating shapes p5 example demo series
- Other portraits Garbage Selfie by Jenny Odell | Data Selfie by Hang Do Thi Duc and Regina Flores | Stranger Visions by Heather Dewey-Hagborg | Weird Faces by Matthias Dörfelt | parametric expression by Mike Pelletier | Emoji Script by Travess Smalley | Más Que la Cara by Zach Lieberman | Aspire Mirror by Joy Buolamwini
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
- Coding Train Videos 3.1-3.4 about conditional statements ~1hr
- Optional: Patt Vira’s tutorials on Conditionals (Boolean Expression) and Conditionals (If, Else If, Else) ~20min
Week 3 • Sept 28 • Interaction with Conditionals
In class
- Problem decomposition
- Relational expressions and conditional statements
- Boolean variables
- Combining expressions
- Share homework
Resources
- Week 3 Syllabus Resources
- p5 Reference tutorial: Interactivity with the mouse and keyboard events (mousePressed vs mouseClicked, etc.)
Examples
- problem decomposition 1
- problem decomposition 2
- random number generator
- opposites: order vs chaos with reset
- checking multiple conditions, hover columns
- another way to draw columns - thanks, Oliver!
- Boolean variables with if statements
- light switch
Assignment due the night before our next class
- PRACTICE • Week 3 Worksheet
- CREATE • CHOICES
- Two roads diverged in a yellow wood, And sorry I could not travel both... Life is full of difficult choices, use conditional statements to control the flow of your programs. Create a sketch that asks people to make choices that have consequences.
- Which choices are easier, harder? Which choices are false choices?
- What internal or external factors influence the choice? How do others’ choices affect your choices?
- What choices surprise you with unexpected outcomes?
- Can you combine choices to create hard-to-predict results? (Hint: Use
&&and||) - Submit on our assignment form.
- WATCH
- Coding Train Videos 4.1-4.2 about loops ~25min
- Optional: Patt Vira’s tutorials on While Loop, For Loop, Nested Loop, 2D Grid with Nested Loop ~28min
Week 4 • Oct 5 • Repetition with Loops
In class
- Share our homework
- More with conditional statements
- Introduction to loops
- Creative coding examples
Resources
- Week 4 Syllabus Resources
- p5 Reference: for loop and while loop
- Recent ICM Help Session (thank you, Bairui!):
- Extra!
- Working with multiple JavaScript Files in the p5.js Web Editor
- Bubble Sort ASMR | Cozy Generated Sorting Sounds (we'll start arrays next week)
Examples
- toggle light switch
- bouncing ball
- anatomy of a for loop
- drawing columns with a for loop - counting by columns
- drawing columns with a for loop - counting by pixels
- Test Pattern by Ryoji Ikeda (video) | Generative Digital by Tyler Hobbs | Daily Art from Saskia Freeke | Shimmer by Dave Whyte | Quarantena generativa {2020} by Anna Carreras | おかず / Okazz
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
- Coding Train Videos 5.1-5.3 about functions and Videos 7.1-7.2 about arrays ~55min
- Optional: Patt Vira’s tutorials on Function, Array, and Changing Size of Array ~28min
- A Brief Introduction to Debugging Parts 1-4 (p5 is not mentioned, but these tips are universal for all programming languages!) ~15min
- 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
- Week 5 Syllabus Resources
- Coding Train: Polar Coordinates with sin() and cos() (don't worry about the mention of vectors)
Examples
- random name generator (part 1)
- face without functions
- face with functions (part 1)
- face with functions (part 2)
- p5 functions that return values
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.
- 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:
- WATCH
- Coding Train Videos 6.2-6.3 and 7.3-7.7 about writing classes to create many objects, mouse interacting with those objects, and objects communicating with each other ~1hr 40min
- Patt Vira’s tutorials on Object-oriented Programming and Array of Objects ~20 min