Bill Manaris : Fall 2011 / CSCI 180 Course Syllabus
College of CharlestonAugust 19, 2011

CSCI/CITA 180 Computer Music

Course Syllabus


Dr. Bill Manaris


Room: 223 J.C. Long Building
Phone: (95)3-8159

Office Hours:

Monday, Wednesday, Friday 10 - 11AM.
Tuesday, Thursday 10:45 - 11:45AM.
Other hours available by appointment.

Course Description:

A course introducing the creative side of computing in the context of music, sounds, images, and other digital artifacts. Emphasis will be given to computing and computational thinking related to music making. Students will develop several digital artifacts and elementary musical compositions.

This course will introduce computer programming and music through the study, transcription, and creation of musical works. Music topics include notation, scales, key signatures, intervals, chord construction, sight-singing, ear training, and readings in music history and aesthetics. Computing topics include data types, variables, assignment, selection, iteration, lists, functions, classes, events, and graphical user interfaces. Students will experience the computer as a musical instrument and a creative environment to develop fluency with musical practices, such as algorithmic composition, developing simple computer instruments, electroacoustic music, and minimalism.


  1. Basic computer experience, including file organization and software installation.
  2. Interest in music and developing skills in musical practice.

Students should bring their own laptops and headphones.

Course is open to all majors. No previous programming experience required.

Tentative Outline:

Week 1: Introduction to computers and music; history (Pythagoras; the harmonic series; Antikythera mechanism; harmony of the spheres; cymatics); description of areas and existing tools; automated music. (Ch. 1)

Week 2: Electronic music technologies; algorithmic music; algorithmic music composition; the computer as a musical instrument; installing Python and jMusic; operating system basics; creating your first Python program ( (Ch. 1)

Week 3: Computer representation of music; sonic events; notes; common practice notation; note durations; note pitches; note timbre; piano roll; representing music in Python (pitches are numbers, durations are numbers). (Ch. 2)

Week 4: Transcribing music to jythonMusic; the jythonMusic data structure: Note, Phrase, Part, and Score; time and key signatures; repetition and phasing; Python lists. (Ch. 3)

Week 5: Creating polyphony and repetition; managing musical parts; how to build a musical canon; the jMusic Mod class: transpose, repeat, invert, etc. (Ch. 4)

Week 6: Chord progressions; making arpeggios; jMusic CPhrase objects; the Python for-loop; more on Python lists. (Ch. 4)

Week 7: Making canons and transcriptions with jMusic. (Ch. 4)

Week 8: Algorithmic music; writing music in code; Python numbers, data types, variables; syntax errors. (Ch. 5)

Week 9: Randomness and choices; exploring the role of chance, uncertainty and improvisation in music making. Covers Python if statements; randomness as an approximation to creativity; different random number generators; mapping from one numeric range to another (stretching and shifting); sonification. (Ch. 5 cont'd)

Week 10: Continuation of randomness and choices; music influenced by structures in the natural world; sonification of data patterns in the world; various power laws; file I/O; fractals; intro to recursion. (Ch. 6)

Week 11: Digital audio: sound and timbre; the properties of digital audio and how to manipulate it; digital audio, bits and bytes; audio file I/O; Python float type; Python advanced list operations; Python for-loop; Python casting; more involved algorithms and problem solving (e.g., for digital effects). (Ch. 7)

Week 12: Soundscapes: making musical collages in Python; processes for sound design and for arranging sounds as musical collages; more advanced digital audio concepts; python functions; encapsulation; information hiding. (Ch. 7)

Week 13: Algorithmic composition; program structure and design; top-down design, bottom-up implementation; testing strategies; working with riffs, themes, and sections; music structure, reuse and modification of materials; musical forms (ABA, AABA, etc.); Python functions (used to generate parts of musical compositions). (Ch. 8)

Week 14-15: Create simple graphical user interfaces (GUIs) in Python; how to develop instruments combining jMusic with sliders, buttons, etc.; creating computer instruments for performance (e.g., drum sequencer, flute, ambiance machine, etc.). (Ch. 9)

The above outline is tentative; some topics may be added, others subtracted, as interest suggests and time permits.


  • Andrew Brown and Bill Manaris (2011), ''Making Music with Python", draft manuscript.


  • Michael Edwards, "Algorithmic Composition: Computational Thinking in Music", Communications of the ACM, Vol. 54, No. 7, pp. 58-67.
  • Seth Horvitz Eight Studies for Automatic Piano, LINE_050 (CD and Digital Edition) - .
  • Umberto Eco, "The Aesthetics of Proportion", in Art and Beauty in the Middle Ages, ch. 3, pp. 28-42, Yale University Press, 1988.
  • Joachim-Ernst Berendt, "Before We Make Music, the Music Makes Us", in The World is Sound, ch. 4, pp. 57-75, Destiny Books, 1991.
  • Fritjof Carpa, "Foreword", in Joachim-Ernst Berendt, The World is Sound, pp. xi-xiii, Destiny Books, 1991.

Additional reading materials will provided via handouts and the class website.

Learning Outcomes:

  • Understand the fundamentals of music theory.
  • Analyze music and create musical studies modeled on pre-existing works.
  • Perform rhythmic patterns and sing melodies.
  • Understand important developments in musical styles in the twentieth century and the present.
  • Apply numeric and string data types to represent information.
  • Use variables in program development.
  • Understand arithmetic operators and use them to design expressions.
  • Understand for-loops and use them to design processes involving repetition.
  • Understand if statements and use them to design processes involving selection.
  • Understand functions and use them to design processes involving modularization.
  • Use predefined classes in program development (object-based programming).
  • Understand events and graphical user interfaces and use them to develop simple computer-based instruments for electroacoustic music.
  • Learn basic principles for group collaboration.

First-Year Experience Learning Outcomes:

  • Familiarity with appropriate data, information and knowledge-gathering techniques and research skills in the discipline.
    • Students will be exposed to computer data modeling, algorithmic techniques, and research related to computing in the arts.
  • Use of academic resources and student support services at College of Charleston, including the library, information technology, the Center for Student Learning, the Academic Advising and Planning Center, the office of Career Services, and other appropriate academic resources, student support services, and cultural resources.
    • Students will attend campus events related to music and art (see below).
  • Using appropriate critical thinking skills and problem-solving techniques in a variety of contexts.
  • Understanding the goals of liberal arts and sciences education and the core values of College of Charleston.
    • Readings will explore the intersection between computing and the liberal arts and sciences.
  • Using effective skills and strategies for working collaboratively.
    • Student will participate in various collaborative activities, such as collaborative written exercises, team programming in-class activities, and group projects.

Active Learning:

You need to attend, at least, three campus events related to music. These events have to be on campus or be campus-sponsored to count. Within a week from the event, you should bring:

  • an artifact from the event (program, ticket, etc.); and
  • a notecard (choose your size) with your name, a summary of the event, and a short reaction.


To receive a passing grade for the course, you must average a passing grade on each of the following: assignments, tests, and final exam.

Scale: A: 90-100; B: 80-89; C: 70-79; D: 60-69; F: <60. The grades of B+/, C+/, and D+/ may be given at the professor's discretion.

Final Grade Computation: Assignments (4-6) 30%, Tests (2) 40%, Comprehensive Final Exam or Final Project 20%, and Class Participation 10% (includes Active Learning Events).

Honor Code:

  • You must do your assignments alone (or with your teammates, for group assignments).
  • You are not allowed to discuss assignments and possible solutions with any person other than the instructor (or with your teammates, for group assignments). Any violation of these rules is an honor offense.
  • On assignments you will be asked to identify the person(s) you received help from, if any.
  • Also see the College of Charleston Student Handbook, especially sections on The Honor Code (p. 11), and Student Code of Conduct (p. 12). There is other useful information there.

Test Policies:

  • Attendance at tests is mandatory. You must complete tests with no discussion or sharing of information with other students.
  • Calculators, computers, cell phones, etc. may not be used during a test, unless otherwise directed.

Classroom Policies:

  • You are expected to take good notes during lecture.
  • You are expected to participate in class with questions and invited discussion.
  • You are expected to attend all classes. The grade 'WA' may be given for excessive absences. If you miss class, you must get an absence memo from the Associate Dean of Students Office; also, you are responsible for announcements made in class, assignment due dates, etc.
  • You should turn off all electronic devices (e.g., cell phones, pagers, etc.).
  • Since we are in a lab, you must use the computers only as directed (e.g., no checking email, or playing games) during class.
  • In summary, you should contribute positively to the classroom learning experience, and respect your classmates right to learn (see College of Charleston Student Handbook, section on Classroom Code of Conduct (p. 58)).

Assignment Policies:

  • Assignment grades will be based on creative inspiration, design, style, and correctness of result.
  • Submission instructions will be provided for each assignment.

Late Policy:

  • You have four "late" days for the whole semester. You may use these days as you wish for assignment submission. If you use them up, no late assignments will be accepted.
  • If you submit everything on time (i.e., use no late days), you will earn an additional 2.5 bonus points on your course grade.
(Printable View of