Fall 2014 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 and graphical APIs.
No prior programming experience is required. NOTE: All students must register for the lab, MPATE-GE 2617, in addition to the lecture class, MPATE-GE 2618.
The following is the course schedule, subject to change:
Lectures take place in the Education building (35 W. 4th St), 6th Floor Conference Room, on Tuesday and Thursday 1-2:15pm and the lab portion of the class meets Monday 1-2:15pm.
Six problem sets will be distributed during the semester. Each will be due via electronic submission on New Classes. No late submissions will be accepted, except if major causes occur.
The course will have three quizzes. These 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. The three quizzes will be weighted equally.
This course does not have a final exam.
Final grades for the lecture class will be determined using the following weights:
|Problem Sets (best 6 out of 7):||60%|
Final grades for the lab will be determined using the following weights:
|Problem Sets (best 6 out of 7):||70%|
Assignments are designed to be implemented on a UNIX-based system such as Mac OS X or GNU/Linux. If working on Windows, a Virtual Machine software should be installed (VirtualBox is recommended), with a GNU/Linux distribution (Ubuntu is recommended).
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.
This class was initially designed by Morwaread M. Farbood and owes much of its structure and content to Harvard's Computer Science 50, a course that Morwaread took as an undergraduate years ago. Additionally, the current instructor also must thank Ge Wang for his Music 256a course at Stanford University, who inspired and helped him to teach this course.