The Nature of Code +

Can we capture the unpredictable evolutionary and emergent properties of nature in software? Can understanding the mathematical principles behind our physical world help us to create digital worlds? This class focuses on the programming strategies and techniques behind computer simulations of natural systems. We explore topics ranging from basic mathematics and physics concepts to more advanced simulations of complex systems. Subjects covered include physics simulation, trigonometry, self-organization, genetic algorithms, and neural networks. Examples are demonstrated in JavaScript using p5.js.

natureofcode.com/

The Code of Music +

This course explores how sound, code, and interaction can merge to create musical experiences that invite listeners to shape the music, not just hear it. Students create a series of browser-based musical systems that respond to users, incorporate randomness, and draw patterns from existing music.

We begin by creating a series of audio-visual interfaces—an instrument, a score/mixer, and a loop-based piece—that invite deeper listening through play. Incorporating elements of sound and music production, these projects turn tools normally hidden in the studio into interactive spaces where listeners, performers, and audiences can engage with music in new ways. From there, we dive into the inner workings of music, examining how sound organizes into rhythm, melody, timbre, and harmony, and how these patterns can be expressed in code. Students design interactive studies on each musical element, reimagining tools like drum machines, sequencers, and synthesizers into experimental, playful, or educational systems that incorporate creative coding, machine listening, and machine learning techniques. 

Classes combine lectures, coding tutorials, listening sessions, design exercises, and discussions of existing interfaces. Throughout, students bring their own musical sensibilities into the work while developing their creative coding skills using p5.js and Tone.js. Students regularly share work and receive feedback, using input from the class to develop and iterate on their ideas. The semester culminates in an interactive or generative piece that builds on the semester’s studies, documented through sketches, demos, and code.

Prerequisites: Introduction to Computational Media (ICM) or equivalent programming experience is required.

About Luisa Hors: www.luisapereira.net/

Dynamic Web Development +

Dynamic Web Development introduces the fundamentals of building “full stack” web applications. This course will focus on modern, client- and server- side web technologies and provide practical methods for approaching web development for creative and functional applications. The core technologies used in this course are HTML5, JavaScript, Node.js with the Express framework, and MongoDB database. Students will learn to design, develop, and deploy web applications and gain the necessary skills to extend and explore web development independently.

Prerequisite: ICM