"This course explores music through the lenses of computation and interaction design. We will start with a structured exploration of rhythm, melody, harmony, and timbre: each week we will look into one of these elements in the context of music (listening to examples from different musical periods and styles), code (manipulating it programmatically), and design (creating visualizations and interfaces for it). During the second half of the semester we will cover algorithmic composition techniques (markov chains, formal grammars, cellular automata), and shift to a more self-directed approach. Students work toward their final projects, which might be physical devices, digital applications, or spatial installations. Guest speakers will come in to provide feedback and talk about their work, expanding on topics such as sound synthesis, music production, and generative design. Class examples will be written in Javascript, using libraries like Tone.js and P5.js, but students will be free to use other languages and frameworks. ICM or equivalent programming experience is required."