CMPM 169 Creative Coding is an interdisciplinary course combining thinking from Complexity Science and Computational Media.

Complexity Science is a discipline about large interconnected systems that occur in both nature and culture. The shared characteristic among these is the concept of emergence, where new and often unexpected behaviors arise from the interactions within a system. To get acquainted with Complexity Science ahead of the course (recommended), you can check out this read, this podcast, and these demos.

From Computational Media, we will follow the philosophy of building artifacts that, through creative audiovisual interaction, enable us to understand interesting phenomena and comprehend large complex datasets. Sometimes they can amaze us too.

The course is centered around creatively engaging with selected complex phenomena and using them as a medium. We will seek to understand their origins and peculiar behaviors in theory and in code, and most importantly, building unique media projects on top of them. For this, we will be using different tools and environments, such as Python+Taichi, Observable, Nodes, Touch Designer, possibly others. There will be 6-8 week-long projects during the Quarter, each looking into a different phenomenon. At the end, each student will compile these projects as their own portfolio.


The two main prerequisites for the course are (1) fluency in at least one imperative programming language like C++, Javascript, Python, or Java, and (2) understanding of common data structures including arrays, lists, trees and hashmaps. These are variably covered by the official prerequisites: CMPM 35 (data structures) or CMPM 120 (game development) or CMPM 163 (game graphics). Experience with GPU programming is a plus, but we'll give a crash course during the first few weeks.

This course is generally not recommended for students in the first two years of their studies due to the necessary programming experience. The course will be available next academic year.


Due to high demand, we have expanded the course capacity from 50 to 60. Still, it is possible we might not be able to accommodate everyone. In that case, priority will be given to students for whom CMPM 169 is part of their respective major electives, and senior students from non-CS majors (due to the interdisciplinary nature of the course). For the students who don't manage to enroll now, the course will be available again, latest in the next academic year.

(only accessible from UCSC accounts)


Oskar Elek (instructor)
Montana Fowler (TA)