Experimental JavaScript is an online creative coding course I created for the New School. The curriculum covers exciting web technologies, including: kinetic typography, 3D modeling, signal visualization, custom shaders, and WebAR. Over the course of four months, I produced detailed course plans, assignments, demos, lectures, and interviews with professionals in the field. For more information on my instructional approach, view my teaching statement here.

a lot of hello worlds


I used motion to visualize complex methods — giving the students a feel for visual possibilities when working with geometries in perspective.

scaleX, scaleY, and scale3D transforms

Making noise

Throughout the course the concept of noise was revisited several times. Noise was used to generate visuals using p5.js, GLSL, and Three.js.

halftone noise pattern
static textures
black and white wood grain

Physical to digital

One of my favorite instructional tools is to draw parallels between novel digital concepts and simple physical structures. This allows my students to learn about complex digital processes in a tactile way. For a number of modules, I demonstrated how to draw or make things out of paper. Then using the physical prototype as a reference, I’d jump back into code.

paper prototype of a face detection mask
final face detection mask

Intro to 3D

The students got a crash course in 3D. Using Three.js, I covered how to set up a scene, create geometries, add lighting, and work with found 3D objects. I also walked through how to simplify complex geometries, optimize performance and work on the server side.

a mesh of Abe Lincoln's fist