The Nature of Code: Motion (Topics in Computation and Data)

Show Course Description

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 course covers the first six chapters of Daniel Shiffman’s The Nature of Code, introducing how motion and behavior emerge from simple physical rules. Students will explore randomness, noise, vectors, forces, oscillations, autonomous agents, and particle systems.  Through hands-on coding projects in JavaScript and p5.js, students learn to translate natural forces into digital motion, bridging physics, art, and computation to create lifelike kinetic systems. The course concludes with a look ahead to the book’s later chapters, which move beyond motion into emergent complexity and offer a glimpse of how similar principles give rise to intelligence and self-organization.

Prerequisites: Creative Computing

Shared Minds (Topics in Computation and Data)

Dan O'Sullivan | Syllabus | IMNY-UT 220 | Wed 12:20pm to 3:20pm in 370 Jay St, Room 409 Meetings: 14 Weeks
Last updated: October 30, 2025
Show Course Description

This class asks students to think about thinking. Based on first person introspection, meditation and readings in psychology, students will examine the experience of their minds. Then we look at how computation, in particular recent developments in AI, can better work as a medium to capture and share that experience. Class time is evenly divided between conceptual discussions around the psychology of media, looking at student work, and then learning coding skills for the following week. The early course materials direct students towards developing and implementing multi-user web apps to improve our society’s social media ecosystem but final projects often take different directions. 
 
On the technical side, the class gently picks up from any introductory javascript coding class.  Compared to Creative Computing it moves away from the p5.js in favor of vanilla javascript in an environment like Visual Studio Code assisted by AI.  The class encourages students to find a healthy balance of using “vibe coding” while maintaining the ability to specify overall architecture and debug individual lines of code. In particular the technologies covered are Replicate.com’s API’s for Machine Learning Models for generation and relation of text and images, Firebase tools for server based databases, realtime sharing, storage and authentication. Libraries like UMAP for dimension reductions, Three.js for realtime rendering, P5LiveMedia for Audio and Video sharing, and Colab for running python notebooks.

Each week students will post a quick sketch experimenting with the technology as well a short written response to a prompt together with a short reading or video.

The Code of Music

Luisa Pereira | Syllabus | IMNY-UT 222 | Mon 12:20pm to 3:20pm in 370 Jay St, Room 408 Meetings:14
Last updated: October 30, 2025
Show Course Description

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.

About Luisa Hors: www.luisapereira.net/

Prerequisite: Creative Computing (IMNY-UT 101)

Networked Media

Sam Heckle | Syllabus | IMNY-UT 223 | Tues 3:40pm to 5:10pm in 370 Jay St, Room 409>Thur 3:40pm to 5:10pm in 370 Jay St, Room 409 Meetings:14
Last updated: October 30, 2025
Show Course Description

The network is a fundamental medium for interactivity. It makes possible our interaction with machines, data, and, most importantly, other people. Though the base interaction it supports is simple, a client sends a request to a server, which replies; an incredible variety of systems can be and have been built on top of it. An equally impressive body of media theory has also arisen around its use.

This hybrid theory and technology course will be 50% project driven technical work and 50% theory and discussion. The technical work will utilize JavaScript as both a client and server side programming language to build creative systems on the web. Technical topics will include server and client web frameworks, such as Express, HTML, CSS, templating, and databases. The theory portion of the course will include reading and discussion of past and current media theory texts that relate to the networks of today.

**** it is HIGHLY recommended you take Front End Web Development (or have equivalent front end web development experience) to get the most out of this course. We will be going over fundamentals of HTML/CSS but it would be useful to have prior knowledge ***

Prerequisite: Creative Computing or equivalent programming experience.