Music 256 | fall 2008
Music, Computing, and Design:
Software Design and Implementation for Computer Music

Ge Wang

lectures | assignments | final projects
class wiki | mailing list | MCD

class: MW 3:30-5:20pm (was originally 3:15-5:05pm)
location: CCRMA Classroom (the Knoll)
prerequisite: programming experience

course summary:

This course focuses on software design and implementation for computer audio. The goal is to provide students with an understanding of the strategies, best practices, and tradeoffs in building audio software systems of various sizes (S, M, L, XL), with a focus on interactive ("real-time") systems. We will both "zoom out" and look at high-level design and structure as well as "zoom in" and dissect code in a hands-on, "in-the-trenches" manner. Course work is designed to put concepts/ideas into practice, and includes several small programming assignments, in-class quizzes, and a large-ish final software project. Students should have some prior experience programming in C/C++ and/or Java.

Topics include:

  • design principles and patterns (especially for audio)
  • optimization techniques (and when to optimize)
  • useful data structures and algorithms in audio programming
  • real-time software systems
  • synchronization and concurrent programming
  • integrating systems (audio, graphics, networking, system logic, etc.)
  • software engineering best practices


MCD | CCRMA | music | stanford