← Back to Coding Art Fundamentals
Coding Art Fundamentals · Schedule

Weekly Schedule

Deadlines

Each weekly assignment is due by 11:59 PM one week after it’s assigned, the same day as the following class. Late work is accepted only under specific circumstances, considered case by case. See Policies.

Week 10 (Nov 11) is pre-recorded instead of in person, for a campus holiday.

Week Topic In Class Assignment
01Sept 9p5.js Foundations and First Code
  • Course introduction, expectations, and course load.
  • A short live demo on why fundamentals matter before leaning on AI tools: solving a short sequence of arithmetic problems by hand, starting simple (two-digit addition) and getting harder each time (multi-digit multiplication, then a multi-step order-of-operations problem with parentheses and division), then handing that last problem to an AI tool and watching it solve it live, sometimes correctly, sometimes with a wrong step buried in the middle. The point: a student who worked through the problem by hand can immediately catch the AI’s mistake; a student who skipped straight to the AI has no way to know it’s wrong.
  • First code in the p5.js web editor (editor.p5js.org): creating an account and saving a sketch.
  • What syntax is, and how it changes across languages.
  • Cartesian coordinates (x, y) and basic shapes, using the p5.js reference library.
  • Shape parameters: position, size, and color.
  • The setup() and draw() functions, without movement yet, and why line order matters.
  • Watch a short beginner video series on the p5.js workspace.
  • Build two or more colored shapes in the p5.js editor.
  • Research one artist working in interactive or real time digital art, and submit a short write-up with a link.
  • Install VS Code with the p5.js extensions.
02Sept 16p5.js First Animation
  • Variables and conditionals (if/else), plus coding shorthand like x++ and x += 1.
  • draw() and setup() in action: what happens every frame, and p5.js’s overall structure.
  • The bouncing ball example.
  • GitHub Pages goes live, first code submission of the semester.
  • Based on the code used in class (class code repository), create a piece using variables and conditionals.
  • Use the class exercises as a starting point to develop your own piece, making sure to use variables and conditionals.
  • Feel free to explore the p5.js library to push further than what was covered in class.
03Sept 23p5.js Coloring with Arrays
  • Hex color.
  • Arrays.
  • Loops.
  • Based on the code used in class (class code repository), create a piece using arrays and loops.
  • Use the class exercises as a starting point to develop your own piece, making sure to use arrays, loops, and hex color.
  • Feel free to explore the p5.js library to push further than what was covered in class.
04Sept 30p5.js Rotation and Randomness
  • Loop review, using nested, shrinking squares drawn from a color array.
  • translate() and rotate(), with push()/pop() shown first without and then with, to isolate each shape’s transform.
  • random() used for rotation speed and, in the final example, to pick a color from the array.
  • Based on the code used in class (class code repository), create a piece using rotation and randomness.
  • Use the class exercises as a starting point to develop your own piece, making sure to use translate(), rotate(), and push()/pop().
  • Feel free to explore the p5.js library to push further than what was covered in class.
05Oct 7p5.js The Bouncing Ball: Functions
  • Introduction to functions: the bouncing ball refactored into functions, including a random color change triggered on each bounce.
  • Sine, with cosine introduced as an alternative, explained for oscillation, first mapped directly to shape size and color, then refactored into a reusable return function.
  • Loops and functions combined to draw multiple layered shapes offset by the sine wave, ending with a mouse interactive color inversion example.
  • Based on the code used in class (class code repository), create a piece using functions.
  • Use the class exercises as a starting point to develop your own piece, making sure to use functions, along with sine or cosine for motion or color.
  • Feel free to explore the p5.js library to push further than what was covered in class.
06Oct 14p5.js Building a Class: Object-Oriented Programming
  • Starting from a new function based sketch of layered, offset circles that move and bounce around the canvas, the code gets refactored step by step into a class called mover: constructor, methods, and how to call an instance.
  • A second mover instance is added to show the same class driving two independent objects at once.
  • Creating a new .js file for the class and linking it from index.html.
  • Building an array of many mover instances at once is left for students to explore on their own.
  • No separate weekly assignment this week.
  • This week’s class work feeds directly into the Midterm Project, which requires at least one class.
07Oct 21Shared Midterm
  • Midterm, presented in class.
  • No fixed time slot, coordinated across the three Fall 2026 Creative Computing courses (Coding Art Fundamentals, Intro to TouchDesigner, and Coding Music Fundamentals).
  • See Midterm Project for the full assignment.
  • Also due before Week 8: watch the pre-recorded walkthrough in Canvas covering installing openFrameworks, downloading the starter template from the class template repository, and how to upload openFrameworks work to GitHub for the rest of the semester.
  • This pre-Week-8 assignment is short and logistical, no coding involved: follow the steps shown in the video and upload the result to Canvas, confirming everything is installed, the template downloaded, and the upload process understood before Week 8’s class.
  • If you run into trouble, reach out for help ahead of time.
08Oct 28oF / C++ Intro to C++ and openFrameworks
  • Introduction to C++ and the openFrameworks project generator.
  • The Week 6 bouncing ball exercise rebuilt in C++: same logic, new syntax.
  • C++ arrays have a fixed size, so this is also where std::vector comes in: C++’s adjustable size container, and the equivalent of the resizable arrays used in JavaScript.
  • Based on the code used in class (class code repository), create a piece in C++ and openFrameworks.
  • Use the class exercises as a starting point to develop your own piece, making sure to use the openFrameworks setup()/update()/draw() structure.
  • If your piece used a resizable array in JavaScript, convert it into a C++ std::vector, since plain C++ arrays can’t grow or shrink the way JavaScript arrays can.
  • Feel free to explore openFrameworks further than what was covered in class.
  • Submission is the same process as before, minus the GitHub Pages portion: openFrameworks doesn’t run in the browser, so this week just means uploading your project to the class repository on GitHub.
09Nov 4oF / C++ Introduction to Noise
  • Replacing random() with ofNoise() in the same mover, for smooth, organic motion.
  • Also the deadline to have your final project group formed.
  • Based on the code used in class (class code repository), create a piece using noise.
  • Use the class exercises as a starting point to develop your own piece, making sure to use ofNoise() instead of random().
  • Feel free to explore openFrameworks further than what was covered in class.
  • Read the Randomness chapter of The Nature of Code for a deeper look at noise and randomness, and use it as a guide to push the assignment further.
10Nov 11oF / C++ Connecting to Other Software and Adding Interactivity
  • No class this week, a holiday.
  • The OSC, MIDI input, and mouse/keyboard interactivity material is pre-recorded instead and already available in Canvas.
  • Watch it during the week: there’s no class to cover it in, but it’s required groundwork for the final project.
  • A sign-up sheet for the Week 13 presentation slot still goes out this week, posted in Canvas since there’s no class to hand it out in.
  • No weekly assignment this week. Use the time to start prepping your final project.
  • Watching the pre-recorded video on connecting to other software and adding interactivity is required, even though there’s nothing to submit for it: the final project depends on this material.
11Nov 18oF / C++ Introduction to Vectors
  • Refactoring position and velocity into a single ofVec2f each, following the mouse.
  • This is the final weekly assignment of the semester. Weeks 12 and 13 are final project work and the final performance.
  • Based on the code used in class (class code repository), create a piece using vectors.
  • Use the class exercises as a starting point to develop your own piece, making sure to use ofVec2f for position and velocity.
  • Feel free to explore openFrameworks further than what was covered in class.
  • Submission is the same process as before, minus the GitHub Pages portion: just upload your project to the class repository on GitHub.
  • Read the Vectors chapter of The Nature of Code for a deeper look at vectors, and use it as a guide to push the assignment further.
12Nov 25Shared Final Project Work
  • Remote day.
  • An optional Stanford CCRMA workshop on multimedia creative coding research and development.
  • Help is available during class time, and additional help slots are added throughout the week.
  • Final project work begins.
  • Final project work time, help available during class.
  • No separate submission this week.
13Dec 2Shared Final Performance
  • Final performance, in person, within a shared 1–6 PM window.
  • Groups sign up for their exact slot during Week 10.
14Dec 9Shared Digital Submission and AI Workshop
  • Required remote AI workshop.
  • The Digital Expo portfolio deadline is Friday, Dec 11.
  • Attendance at the AI workshop counts as this week’s assignment.
  • See Final Project for the portfolio deadline.