Skip to content
Ellen Nickles edited this page Oct 1, 2024 · 25 revisions
Section 06 Info
Meeting Time Tues 12:10pm - 2:40pm
Location Room 411
Contact [email protected]
On weekdays I aim to respond within 24 hours
Student Hours Mon + Fri 1:00pm – 3:00pm Sign up here
Support Resident office hours (schedule)
The Coding Lab (schedule or drop-in help)
How to ask code-related questions (examples)
ICM Help Sessions Thursdays 3:30pm – 5:00pm • Room 410
Mondays 12:30pm – 2:00pm • Room 408
Additional Materials Submit creative assignments
Assignment responses
Our Miro board
Course syllabus
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
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 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.

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.

Reading and Video Tutorials

Before class, read and/or 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 Assignments and Documentation**

Each week there is an open-ended exercise to apply the concepts that we practice. You are expected to document your process, include a link to your p5 sketch, and answer these questions to complete the assignment:

  1. What did you do?
  2. What worked?
  3. What didn’t work, and what steps did you take to try to solve the issue?
  4. Did any code-related questions come up for you?
  5. Be sure to cite your sources.

Submit the creative assignments using our homework 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.

**If you are struggling with the weekly assignments, put your energy into writing about what didn't work and how you tried to solve it. It is totally okay to vent your frustrations. Document your work to reference later and also to help you synthesize what you did and tried to do.

AI Guidelines

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-6. This approach, based on student feedback, is intended to empower you to use AI more effectively, should you choose to integrate it into your practice. Much in the same way that you might practice arithmetic before learning to operate a calculator, if you can describe the foundational coding concepts and assemble simple algorithms first (see our Course Objectives), then you will be better equipped to use generative AI more efficiently to develop your project ideas. In Week 7, we will discuss the benefits and limitations of these tools, along with various strategies and student examples of integration. Any use of AI tools is expected to be cited (see below) to share and learn best practices from one another.

Citation Guidelines

In accordance with the Statement of Academic Integrity, you are expected to cite your sources and note how you used them. For code references, a link to the online source along with a brief description will suffice. If you use any generative AI tools, e.g. ChatGPT, Claude, Gemini, Copilot, etc., please include the model name and version with a description of why and how you used the model.

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

In class

  • Welcome! and introductions
  • Course overview
  • What is p5.js (p5)?
  • p5 web editor
  • p5 functions
  • On learning to code (and AI)
  • Syllabus, schedule, assignment
  • What can we do with creative coding?

Resources

Examples

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.
    • Have a place online to document your creative assignments. This could be a website/blog, Notion page, or even a Google document. If you’re not sure what to use, please reach out to me for help.
  • WATCH (BEFORE EXERCISES) • Coding Train videos 1.1-1.6 ~1hr 20min
  • PRACTICE • Week 1 Worksheet
  • CREATE • SELF-PORTRAIT
    • 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.
    • Submit your documentation on our homework form.
  • WATCH (AFTER EXERCISES) • Coding Train Videos 2.1-2.5 about variables, random(), and map() ~1hr

Week 2 • Sept 10 • 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.” 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 homework form.
  • WATCH • Coding Train Videos 3.1-3.4 about conditional statements ~1hr

Week 3 • Sept 17 • Interaction with Conditionals

In class

  • Share our homework
  • Relational expressions and conditional statements
  • Boolean variables
  • Combining expressions

Resources

Examples

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 difficult choices that have surprising 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 homework form. Due the night before our next class.
  • WATCH • Coding Train Videos 4.1-4.2 about loops ~25min

Week 4 • Sept 24 • 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

  • 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 homework form. Due the night before our next class.
  • WATCH
  • READ • p5 Tutorial: A Field Guide to Debugging

Week 5 • Oct 1 • Organization with Functions

In class

  • Introduction to arrays
  • Share our homework (1/2 class)
  • 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 (in two weeks)

  • 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?
    • Submit your documentation on our homework form. Due the night before our next class.
  • 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