Fall 2011 Syllabus
MPATE-GE 2618: C Programming for Music Technology is an intensive, graduate-level introductory course in programming concepts and computer science with a focus on software design, algorithms, and data representation for digital signal processing and other audio applications. Assignments consist of extensive programming in C.
Topics include:- C programming: syntax, primitive types, iteration, conditional expressions, functions, arrays, pointers, dynamic memory allocation, standard libraries.
- Software development: problem decomposition, abstraction, data structures, implementation, debugging, testing.
- Algorithms: design, specification, and analysis.
- Data representations for signal processing and audio applications.
- Introduction to audio APIs
Prerequisites
No prior programming experience is required.
Schedule
The following is the course schedule, subject to change:
| Unit 1 | |
|
Tuesday, September 6
Thursday, September 8 Monday, September 12 - First lab meets
Tuesday, September 13 |
|
| Unit 2 | |
|
Thursday, September 15
Tuesday, September 20 Tuesday, September 20: Problem Set 1 due at 8pm
Thursday, September 22 |
|
| Unit 3 | |
|
Tuesday, September 27
Thursday, September 29 Thursday, September 29: Problem Set 2 due at 8pm
Tuesday, October 4 |
|
| Unit 4 | |
|
Thursday, October 6 Thursday, October 6: Problem Set 3 Part I due at 8pm
Monday, October 10
Tuesday, October 11
Thursday, October 13 Thursday, October 13: Problem Set 3 Part II due at 8pm
Tuesday, October 18
Thursday, October 20
Monday, October 24: Problem Set 4 Part I due at 8pm
|
|
| Unit 5 | |
|
Tuesday, October 25
Thursday, October 27
Thursday, October 27: Problem Set 4 Part II due at 8pm
Tuesday, November 1
Thursday, November 3
Tuesday, November 8 |
|
| Unit 6 | |
|
Thursday, November 10 Friday, November 11: Problem Set 5 Part I due at 8pm Monday, November 14: Problem Set 5 design.txt due at 8pm
Tuesday, November 15
|
|
| Unit 7 | |
|
Thursday, November 17 Thursday, November 17: Problem Set 5 Part II due at 8pm
Tuesday, November 22
Thursday, November 24 Monday, November 28: Problem Set 6 due at 8pm
Tuesday, November 29 Tuesday, November 29: Final project idea due at 8pm
Thursday, December 1 Thursday, December 1: Problem Set 7 design.txt due at 8pm Monday, December 5: Final project full proposal due at 8pm
Tuesday, December 6
Thursday, December 8 Thursday, December 8: Problem Set 7 due at 8pm Sunday, December 11: Final project design and framework due at 8pm
Tuesday, December 13
Thursday, December 15 |
|
| Final Project | |
|
Monday, December 19 - Final project implementation and documentation due at 8pm
Tuesday, December 20, 1-4pm |
|
Class Times
Lectures take place in the Education building (35 W. 4th St), 6th Floor Conference Room, on Tuesday and Thursday 1-2:15 and the lab portion of the class meets Monday 1-2:15.
Problem Sets
Seven problem sets will be distributed during the semester. Each will be due via electronic submission on Blackboard. You have seven "late days" that you may use during the semester, each of which provides you with an extension of 24 hours. The extensions can be distributed in any way you like--e.g. you can use all seven days on one problem set or one day on each problem set, etc. No reason needs to be given; whether you are ill, too busy with other things, or just don't feel like turning it in, it doesn't matter--how you use them is up to you. Lateness of electronic submissions will be determined down to the minute by the submission timestamps on Blackboard. If the problem set is due at 2pm and you submit it at 2:01pm, you will lose a late day. If you've run out of late days, your assignment will be accepted with a 25% grade reduction per day late except in the case of an emergency. "Technical difficulties" do not constitute emergencies. Also note that some of the problem sets have mutliple parts that are due on different dates. Each day an individual part is late counts as a late day. You may not use any late days on the course's final project. When computing your final grade, your lowest score on these problem sets will be dropped and your six highest scores will be weighted equally.
Quizzes
The course will have three hour-long quizzes. These quizzes will be "closed-book." However, you may utilize during each quiz one two-sided page (8.5" x 11") of notes, typed or written, and a pen or pencil, but nothing else. You should expect the second and third quizzes to be cumulative, but their content will be based mostly on lectures subsequent to those covered by the first and second quizzes, respectively. When computing your final grade, your lowest score on these quizzes will be dropped and your two highest scores will be weighted equally.
Final Project
The final project will be your opportunity to put your programming skills to use and implement your own software application. As long as your project is written (mostly) in C, the nature of your project is entirely up to you, albeit subject to the instructor's approval. You are welcome to utilize external libraries and hardware provided that the instructor has access to all of these things and you are able to present it in class at the end of the semester.
Students in the music technology program are encouraged to choose a project topics such as writing MAX/MSP externals, developing plug-ins, or using audio/MIDI APIs.
You may work together with up to two other students, however work is expected to be distributed equally among project partners and the project itself must be commensurate in scope. Each student is expected to contribute approximately 2000 lines of code to a project, whether working alone or with a group. If multiple students are working on a project, the code must be thoroughly documented to indicate which student wrote or contributed to each part.
Extensions on the final project will not be granted, except in cases of emergency. Work submitted late without extension will be penalized as follows: projects submitted up to one hour late will incur a penalty of 5%; projects submitted up to two hours late will incur a penalty of 10%; projects submitted up to three hours late will incur a penalty of 25%; projects submitted up to four hours late will incur a penalty of 50%; projects submitted more than four hours late will incur a penalty of 100%. Lateness of submissions will be determined down to the minute by timestamps.
Final Exam
This course does not have a final exam.
Books
|
Required text Programming in C, Third Edition by Stephen Kochan Optional text for students less comfortable with programming Absolute Beginner's Guide to C, Second Edition by Greg Perry Optional recommended audio programming text: The Audio Programming Book, R. Boulanger and V. Lazzarini (Eds.) |
| Problem Sets (best 6 out of 7): | 65% |
| Quizzes (best 2 out of 3): | 20% |
| Final Project: | 15% |
Platforms
Assignments are designed to be implemented on a UNIX-based system such as Mac OS X or Linux, however it possible to use Windows. In the case of Windows, UNIX tools such as the Cygwin library would have to be installed.
Academic Honesty
All work you do for the class is expected to be your own. Collaborating with others unless explicitly allowed as well as copying material in any form from an individual, book, website, or any other source is strictly prohibited, as is allowing another student to copy or use your own work in any way. You are welcome to discuss the course's material with others in order to better understand it. You may even discuss problem sets with classmates, but you may not share or write code together. The only possible exceptions to this is the final project, if you are working together with other students or utilizing an outside library or API. If you have any questions about what kinds of communication/sharing/recycling of code are acceptable, contact the instructor.
Acknowledgements
This class owes much of its structure and content to Harvard's Computer Science 50, a course that the instructor took as an undergraduate (many) years ago.