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