This course teaches the same programming ideas twice: first in p5.js, then in openFrameworks and C++. Students build something new almost every week, and the semester ends with a group project that connects to at least one other course's software.
This is a 3-credit course, following CalArts’ standard credit-hour policy: 45 hours of work per credit for BFA students, 60 hours per credit for Masters students. That comes to 135 total hours for BFA students and 180 for Masters students across the semester. In-class time adds up to about 25.7 hours over the semester. The rest is independent work: roughly 7.8 hours a week for BFA students, and roughly 11 hours a week for Masters students.
Most students take this alongside Coding Music Fundamentals in the same semester. The goal isn’t just a shared calendar. It’s the same programming vocabulary landing in the same week in both rooms, so a student hears “for loop” or “function” from two instructors within the same seven days, once for sound and once for image.
This course is two languages, back to back. p5.js first, for easy entry and immediate visual feedback, then openFrameworks/C++ for the back half, reinforcing the same concepts in a compiled, typed, object-oriented environment, laying groundwork for next semester’s C++ track.
Variables, conditionals, loops, randomness, arrays, functions, and classes, ending in the midterm.
The same ideas again, in a compiled language, arriving at vectors and noise: a working, well-understood mover, not a particle system.
Every weekly assignment is submitted as a live GitHub Pages link hosting that week’s sketch, not just a committed repo. This gets set up together in class in Week 2, then is treated as understood for the rest of the semester.
Classes get recorded and the class code isn’t handed out. Homework is: rewatch the recording, redo what we built in class that day, then add one small thing, such as a renamed variable, an extra function, or an extra loop. Due 11:59 PM the night of class, then submission closes, no late work.
Final project: identical structure and deadlines to Coding Music Fundamentals and Intro to TouchDesigner. See Final Project below.
Standing assignment, given in Week 1: read the Vectors and Noise chapters of The Nature of Code, or watch the equivalent Coding Train video series. Do this at your own pace, but the Vectors material needs to be done by Week 10 and the Noise material by Week 11. Each of those weeks has a short in-class quiz checking basic understanding, not coding fluency.
Assignment: a short written description of color, coordinates, and sine/cosine, submitted as text.
Assignment: redo today’s class exercise, plus one small addition.
Assignment: redo today’s class exercise, plus one small addition.
Assignment: redo today’s class exercise, plus one small addition.
Assignment: redo today’s class exercise, plus one small addition.
Assignment: no separate assignment this week. This material is covered by the midterm instead (see Week 7).
The midterm covers everything from Weeks 1 through 6, including the custom class from Week 6. An interactive p5.js sketch demonstrating variables, conditionals, loops, randomness, arrays, a custom function, and a custom class. No fixed time slot; scheduling is coordinated across all three classes.
Assignment: redo today’s class exercise, plus one small addition.
Assignment: redo today’s class exercise, plus one small addition. This week is also the deadline to have your final group formed (minimum 2, maximum 3).
Assignment: redo today’s class exercise, plus one small addition. Your group’s presentation slot for Dec 2 also goes out this week. Also: the Vectors quiz, on the standing reading assignment from Week 1.
Driving your mover with ofNoise() instead of randomness. Also: the Noise quiz, on the standing reading assignment from Week 1.
Shared CCRMA session, plus 1:1 help for troubleshooting and cross-tool wiring. Specs for the Week 14 digital submission go out today.
Final project presented in person, in your group’s assigned slot within the 1–6 PM window.
Digital submission due, along with a required remote AI workshop (attendance counts toward your final project grade, see Grading) and your Digital Expo portfolio.
This is a required group performance. Solo work is not allowed. Students can use p5.js or openFrameworks, whichever fits the piece, as long as it connects outward.
Attendance at the Week 14 AI workshop counts for 10% of your final project grade. If you miss it, you lose that part of your grade.