← Back to all courses
CalArts · Fall 2026 · Instructor: Luisa Pinzon

Coding Art Fundamentals

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.

Meets
Wed, 5:00–6:50 PM
Location
TBD
Credits
3
Format
p5.js, then openFrameworks/C++
Credit Load

Credit Load

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.

Overview

Course Description

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.

Weeks 1–7 · p5.js

Variables, conditionals, loops, randomness, arrays, functions, and classes, ending in the midterm.

Weeks 8–14 · openFrameworks / C++

The same ideas again, in a compiled language, arriving at vectors and noise: a working, well-understood mover, not a particle system.

Submission model

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.

Weekly Breakdown

Weekly Schedule

Weekly homework, in one line

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.

01Sept 9p5.js

Foundations Review

  • Installing VS Code and the p5.js local template together in class.
  • A live instructor demo introducing XY coordinates and RGB color on screen.

Assignment: a short written description of color, coordinates, and sine/cosine, submitted as text.

02Sept 16p5.js

First Real Code

  • GitHub Pages goes live: your first hosted assignment.
  • Variables, setup()/draw(), if/else, and for/while loops.
  • Drawing shapes at XY positions.

Assignment: redo today’s class exercise, plus one small addition.

03Sept 23p5.js

Randomness, Arrays & Sine/Cosine

  • A random-driven shape.
  • An array-driven row of shapes.
  • A shape oscillating with sin()/cos().
  • One combined piece pulling all three together.

Assignment: redo today’s class exercise, plus one small addition.

04Sept 30p5.js

Modulo

  • The modulo operator, and how it’s used to index into an array.
  • Soft lines drifting around the canvas, each drawn from a small array of trailing points connected end to end.
  • Using modulo indexing so each line always closes into a loop.

Assignment: redo today’s class exercise, plus one small addition.

05Oct 7p5.js

Functions & Oscillation Revisited

  • Declaring and calling functions.
  • Local versus global scope.
  • Using a function to add oscillating movement, revisiting Week 3’s sine/cosine.

Assignment: redo today’s class exercise, plus one small addition.

06Oct 14p5.js

Classes

  • A custom class: constructor, member variables, display()/update() methods.
  • Getting two instances on screen.
  • Pre-midterm consolidation.

Assignment: no separate assignment this week. This material is covered by the midterm instead (see Week 7).

Shared across all three courses

Week 7 · Oct 21 · Midterm

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.

08Oct 28oF / C++

oF/C++ Onboarding, and Port to C++

  • C++ syntax and oF’s setup()/update()/draw() structure.
  • Header files (.h/.cpp).
  • Porting Week 6’s class into a C++ class.

Assignment: redo today’s class exercise, plus one small addition.

09Nov 4oF / C++

Connecting to Other Software

  • Sending OSC from an oF sketch to a ChucK patch using ofxOsc.
  • A concrete example of two Fall 2026 courses talking to each other.

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).

10Nov 11oF / C++

Vectors

  • Refactoring position and velocity into a single ofVec2f each.
  • Following the mouse.

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.

Shared across all three courses

Week 11 · Nov 18 · Noise

Driving your mover with ofNoise() instead of randomness. Also: the Noise quiz, on the standing reading assignment from Week 1.

Shared across all three courses

Week 12 · Nov 25 · Remote Day

Shared CCRMA session, plus 1:1 help for troubleshooting and cross-tool wiring. Specs for the Week 14 digital submission go out today.

Shared across all three courses

Week 13 · Dec 2 · Final Performance

Final project presented in person, in your group’s assigned slot within the 1–6 PM window.

Shared across all three courses

Week 14 · Dec 9 · Digital Submission & Portfolio

Digital submission due, along with a required remote AI workshop (attendance counts toward your final project grade, see Grading) and your Digital Expo portfolio.

Final Project

Final Project

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.

Group size
Minimum 2 people, maximum 3.
Forming your group
Around Week 4, once rosters are settled, a chart goes out where each student checks off their own background (musician, visual artist, prior coding experience) plus notes, so students who don’t know each other can find a match. Week 9 is the deadline to have a group formed. Unformed groups get assigned that day, and members exchange contact information.
Masters student leadership
Each group should include at least one Masters student, when enrollment allows. Masters students are expected to take a leading role in their group. It’s a chance to practice the leadership and professionalism needed on mixed-experience teams, in school and afterward.
Connecting outward
Every final project needs to connect to at least one other piece of software or language outside p5.js and openFrameworks, such as ChucK, TouchDesigner, or Ableton, or anything that speaks OSC, MIDI, or another live protocol. You aren’t limited to this list; any tool that fits the piece works.
Reusing one project
If a project counts as the final for more than one of Luisa’s three Fall 2026 courses, it has to incorporate each tool it’s counting for: two tools if double-counted, all three if triple-counted.
Presenting
Week 13 (Dec 2), in person, within the shared 1–6 PM window. Your exact slot is sent by Week 10.
Digital submission
Week 14 (Dec 9): a polished video/audio recording for grading and the Digital Expo portfolio. Specs go out by Week 12. It doesn’t have to be a straight capture of the live show; you can re-record for better quality. This matches Coding Music Fundamentals and Intro to TouchDesigner exactly; there are no exceptions for any of the three courses.
Grading

Grading

Weekly exercises: 50% Midterm: 20% Final project: 30%

Grade scale

HP
80–100
P
60–79
LP
30–59
NC
0–29

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.

Materials

Materials