CS 410P/510 Sound: Computers, Sound and Music

Term: Spring 2019
Credits: 4 (410P), 3 (510)
CRN: 65715 (410P), 64834 (510)
Section: 43 (410P), 50 (510)
Meeting Time: Tuesday, Thursday 1640-1830 (4:40-6:30PM)
Meeting Location: Fifth Ave Cinema 90
Instructor: Bart Massey (bart AT cs DOT pdx DOT edu)
TA: Ark Koduru
Office Location: FAB 120-18
Prerequisites: See below


Everything about this syllabus is entirely tentative, and maybe be changed at the whim of the instructor without warning.


In this course we will learn to use computers and software to work and play with sound and music.

Digital pervades every aspect of sound and music these days. It's all driven by software. We write software. Let's try to understand all of this at some superficial level in just ten weeks.

This is a programming-intensive survey course. We will give an overview of many areas of digital audio and music analysis, construction, and transformation.


Required Courses: CS 201, CS 202, CS 350

Familiarity with programming in general and C/C++ in particular is required. Basic ability to use the Linux environment is required. Python experience is highly desirable.

Goals, Topics and Objectives

Upon the successful completion of this course students will be able to:

  • Identify and process standard representations of digital audio, including PCM (e.g. WAV), lossless (e.g. FLAC) and lossy (e.g. MP3) compressed audio, and MIDI.

  • Use Digital Signal Processing techniques to work with audio, including both time and frequency domain methods.

  • Understand and produce common digital audio effects.

  • Synthesize sound using standard and advanced digital techniques.

  • Understand and apply principles of music structure and composition in the analysis and generation of digital music.


Readings will be assigned from the Internet. No textbook is planned at this time.

Course Communication

Communications for this course will primarily be through a shared workspace provided by the Slack chat tool. Everyone is strongly encouraged to participate in the channel.

Course Work


This course requires substantial out-of-class homework and study. Expect to spend at least 8 hours of out-of-class time each week mastering this difficult material.

I encourage group collaboration on individual assignments: creating study groups or online chat-rooms to discuss the approach and understand the problem is an acceptable and encouraged methodology. The write-up, programming, and actual solutions must be your individual work. If you represent someone else's work as your own, you are committing plagiarism.


I will assign take-home homework. Late homeworks will be accepted, if at all, only for good reasons and at a substantial penalty.

You may submit a homework as many times as you like, with the latest assignment received before grading being the only one considered for a grade. Please submit something before the deadline, even if it is only your name—you can then continue to work on your assignment as desired up until they are graded.

Assignments will be graded for having been turned in and having made a reasonable effort, as well as for a reasonable degree of correctness.

Course Project

There will be a substantial course project starting at about week three. This project may be completed individually or in groups of 2-4 as desired.

Academic Honesty

Cheating on homework or the project will result in a grade of zero on the affected material, and will be reported to appropriate authorities. Plagiarism is a form of cheating. Please do not let me catch you plagiarizing.

Plagiarism: n 1: a piece of writing/work that has been copied from someone else and is presented as being your own work 2: the act of plagiarizing; taking someone's words or ideas as if they were your own.

If you use code, ideas, or text authored by someone else, cite them. It is OK to get help from external sources of knowledge, but citation is mandatory.

Last modified: Monday, 1 April 2019, 1:00 PM