Syllabus

At-a-glance

NOTE: All students must read the policies on this syllabus and fill out this form by the end of week 1 (Fri Jan 16).

Textbooks

The primary textbook for the course is Introduction to Computer Music (3rd Edition) by Roger B. Dannenberg. It is recommended that you purchase a digital or physical copy from Amazon. You may also access PDFs of individual chapters here, though the cross-chapter links will not work.

A couple of the course readings will center around the secondary textbook of Digital Signals Theory by Brian McFee. This book is available online and can also be purchased from Amazon if you prefer.

You will also likely need to refer to the Nyquist Reference Manual (PDF, HTML) at times for help related to Nyquist, the programming language for the course. The first half (up to the chapter "Nyquist Functions") is intended to be introductory and explanatory, so please use this to supplement the text for additional information about Nyquist.

15-322 vs. 15-622

For graduate students this course is offered as 15-622. Students taking the course under 15-622 are expected to execute an ambitious term project in addition to all the other requirements of 15-322. A proposal for this project is due shortly after the first exam in the course.

Grading

The general grading breakdown is as follows:

15322 Students:

15622 Students:

Additionally, attendance is required and will factor into your grade, but please do not come to class if you are sick. If you are sick, please message us on Piazza and we will excuse you - see our detailed attendance policy for more information.

Generally, if your final weighted score ends up at 90% or higher, you are going to get an A in the class. If your weighted score ends up at 80% or higher, you are guaranteed at least a B. A weighted score of 70% or higher is guaranteed at least a C. And so on. For graduate students, we may add a + or – to the grade if it is near the top or bottom of any grade range.

Grading policies

Throughout the semester you will have 3 grace days for late delivery of Projects where no penalty is given, after which your grade will be reduced for late delivery of work based on the number of days late. At most one grace day can be used on any project from Projects 1-6 (Project 7 and the 15622 Project do not allow grace days since they must be handed in on time). Projects 1-6 can be submitted up to 6 days late, with a late penalty that increases with the number of days late.

Grades will be determined through a combination of autograding and peer/TA grading. You will be asked to participate in peer grading by evaluating 3 projects submitted by your peers. It is possible to earn bonus points by evaluating more than 3 projects. Evaluating less than 3 projects will result in a loss of points. Peer grading cannot be submitted past the deadline posted for peer grading.

Submitting vacuous (empty or trivial) written feedback for peer grading, e.g. "Cool!", may also result in a loss of points.

For additional details of the project grading policy see this page.

Attendance policy and class recordings

You are expected to be present for each lecture. During each class, there may be some form of activity that must be done at that time to be counted as in attendance. Not all classes will have this activity necessarily. You can miss 4 of these activities without penalty. After this, each missed class will reduce the maximum score attainable in the class by 3%. Example: if you miss 9 of these activities, your ceiling for the course is 85%. If your overall score was a 91, it would be lowered to 85, whereas if your overall score was an 83, it would still be an 83.

Lectures will be recorded but will not be posted until exam review later in the semester. Hence, come to lecture!

If you are sick or otherwise cannot attend due to health reasons, please do not come to lecture. Instead, send the TAs or instructors a private message on Piazza with the subject Absence due to illness and we will provide you with the recording. You will not be penalized for an absence if you message us briefly explaining that you had a health issue and could not attend. More than several instances of missed classes due to illness will prompt us to notify Student Support Resources to check on your well-being.

Besides lectures and exams, there will be one additional attendance requirement, when we will hold a Computer Music Concert featuring some of the best work from the final class project assignment in 15322/15622. A separate attendance score will be factored in to your project grade for this final assignment. This concert will be held on or near the last day of the semester before the final exam period. There will be several sessions so that we can find a session that won’t conflict with your other classes and obligations.

Accommodations for Students with Disabilities

If you have a disability and have an accommodations letter from the Disability Resources office, we encourage you to discuss your accommodations and needs with us as early in the semester as possible. We will work with you to ensure that accommodations are provided as appropriate. If you suspect that you may have a disability and would benefit from accommodations but are not yet registered with the Office of Disability Resources, we encourage you to contact them at access@andrew.cmu.edu.

AI tools policy

Generally speaking, you are not allowed to use AI tools to aid in the completion of your work for this course. As an exception to this, you may use AI tools in your for a small number of allow-listed use cases. Allowed use cases include (see examples below):

  1. "Interactive reference manual": Asking questions about code examples
  2. "Bulk text manipulation": Automatically perform painstaking text manipulation tasks

All other use cases are prohibited at this time. In particular, you are explicitly prohibited from using AI-based tools to generate code to fulfill high-level project requirements (see example below). If you use AI tools, you are also required to submit a simple disclosure statement (ai.txt) in your project zip file (see example below). If we determine you have used an AI tool without disclosure or in a manner that does not conform with the above allowed use cases, you will receive a 0 and could receive an academic integrity violation! If you have any doubts about if your use of AI tools is appropriate, just don't use them.

Note that AI tools knows very little about Nyquist and tend to hallucinate incorrect information quite a bit. Hence, your mileage using them may vary.

Example disclosure (ai.txt)

I used AI to help with this assignment in the following ways:

Example prompt for allowed use case #1 (interactive reference manual for Nyquist)

In the following code in the SAL variant of the Nyquist programming language, what do the “build-harmonic” and “quote” functions do at a high level?

define function mkwave()
  begin
    with wave = 1.0 / 2 * build-harmonic(1, 2048) +
                1.0 / 4 * build-harmonic(2, 2048) +
                1.0 / 8 * build-harmonic(3, 2048) +
                1.0 / 16 * build-harmonic(4, 2048)
    set *mytable* = list(wave, hz-to-step(1.0), #t)
  end

if ! boundp(quote(*mkwave*)) then
  begin
    exec mkwave()
    set *mkwave* = #t
  end

Example prompt for allowed use case #2 (bulk text manipulation)

Write out a musical score for "Twinkle Twinkle Little Star" in the following syntax, where the numerical attributes of each note encode onset time and duration:

variable *ascore* =
    {{0 1 {note pitch: c2 vel: 50}}
     {1 0.3 {note pitch: d2 vel: 70}}}

Example of highly inappropriate use (copying in project requirements to generate code)

Write me code in the Nyquist programming language that satisfies the following requirements:

Your first task is to define a new instrument, also in the file `instr.sal``, that multiplies the output of a table-lookup oscillator by an envelope. The instrument should consist of a table created as shown in the lectures using the build-harmonic function and containing at least 8 harmonics, an oscillator (use osc), and an envelope.

Academic Integrity

We enforce a high standard of academic integrity in this course. This is not a "hypothetical" policy, here are concrete examples of academic dishonesty in past years of this course which resulted in charged academic integrity violations:

At a high level, our policy amounts to: do your own original work as expected, and be very generous with giving credit where appropriate (e.g., if you used sound examples from online). More details provided below.

All students are expected to be familiar with, and to comply with, the University Policy on Cheating and Plagiarism.

We regard programming, especially for sound and music, as a creative process. There is never just one way to program a task, and tasks in this course intentionally require some creativity.

Any work submitted as a homework assignment/project must be entirely your own creative work and may not be derived from the work of others, whether a published or unpublished source, the world wide web, another student, other textbooks, materials from another course (including prior semesters of this course), or any other person or program (including AI based code- and text-generation programs, except as noted above). You may not copy, examine, or alter anyone else’s homework assignment or computer program, or use a computer program to transcribe or otherwise modify or copy anyone else’s files. And you are obligated not to share your assignment answers with students in class (including subsequent semesters of this course). Posting assignment solutions on a website for others to view, both publicly or by subscription, is also a violation of academic integrity in this class.

You may adapt or incorporate examples used in lectures, shown in class, or presented by TAs, but only if you understand the examples, and only if the result contains significant creative additions and alterations.

To facilitate cooperative learning, it is permissible to discuss a homework assignment with other students, provided that the following whiteboard policy is respected. A discussion may take place at a whiteboard/blackboard, physical or virtual, or using scrap paper, etc., but no one is allowed to take notes or record the discussion of what is written on the board, and you must allow FIVE hours to lapse after any discussion and erasing before working on the assignment. The fact that you can recreate the solution from memory is taken as proof that you actually understood it.

It is not acceptable to share your solutions or give hints to your friends for projects and exercises after you have already discovered the correct idea. You are not helping your friends by doing so. The right thing to do is to not talk about the problem after you have a solution, and anyone struggling with the homework should visit office hours to talk to an instructor or TA. This shows the respect deserved by your friends as well as the people who have put a lot of effort into creating the problems. If you find that you are struggling to keep up due to personal issues, contact an instructor; we may be able to help with a short extension to lower the stress and help you recover.

In order to deter cheating on assignments, we also run automatic code comparison programs. These programs are very good at detecting similarity between code, even code that has been purposefully obfuscated. Such programs can compare a submitted assignment against all other submitted assignments, against all known previous solutions of a problem, etc. The signal-to-noise ratio of such comparisons is usually very distinctive, making it very clear what code is a student’s original creative work and what code is merely transcribed from some other source. Often in previous semesters, however, we have discovered cheating due to the simple fact that the TAs are familiar with many different versions of the solution. Cheating is simply not worth the risk and, in the end, it does you no good. Start each assignment early, ask for help before the TAs get overloaded, and you won’t get yourself into time crunches at the last minute.

Receiving credit for an assignment is not an indication that we did not detect cheating. We understand the seriousness of receiving a charge of a violation of academic integrity so we review patterns of submissions very carefully before submitting a charge. Cheating on examinations can result in an immediate charge. A charge usually leads to unfavorable outcomes for the students involved. Consequences for cheating may be as severe as failing this course, and all students charged with cheating are reported to the Office of Community Standards and Integrity for further review by the University for additional sanctions.

Wellness

Take care of yourself. Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress. All of us benefit from support during times of struggle. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is almost always helpful.

If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. Counseling and Psychological Services (CaPS) is here to help: call 412-268-2922 and visit their website at http://www.cmu.edu/counseling/. Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.

If you or someone you know is feeling suicidal or in danger of self-harm, call someone immediately, day or night:

If you have questions or concerns about this or your coursework, please let us know.