Course Description

This is a first course in programming, intended for students of all backgrounds. No prior experience is necessary. We will be using the Max 6 language from Cycling 74. It is a great choice for working with all of the kinds of sources that humanists typically care about: sound, music, text, images, video, computer graphics and real time performances. You can learn more about Max at

The main idea of the course is that programming can be a way of exploring the kinds of questions that humanists and artists have always been interested in: what is true? what is beautiful? how can we be sure of what we know? what does it mean to be human? what does it mean to be alive? Computer programs can also provide humanists, artists and social scientists with ways of communicating with one another. Plus, it is a lot of fun!

Course Objectives

  • Use programming as a means of expression and a way of communicating with other people
  • Explore humanistic topics using the medium of code
  • Explore the relevance of basic computational ideas to the arts and humanities
  • Learn about designing real-time, interactive applications

Learning Outcomes

  • Gain experience with programming in a dataflow language
  • Develop systems for real-time interaction using a variety of artistic media

Required Software and Equipment

To get the most out of this course, you will need a Windows or Mac laptop, which you should bring to every class.

You are advised to purchase a license for Cycling 74′s Max 6 + Gen software. A 12-month license costs US $80. For this course you only need the 12-month license, but a permanent license is also available for US $300 if you would like to continue to program in Max in the future. The software is available for both Windows and Mac computers.

Getting a Copy of Code Discussed in Class

After each day’s class, I will post links to online copies of all of the programs that we discussed that day. You don’t have to recreate these Max patches from scratch. Each program has a link on this page. When you follow that link you will find a picture of the program and a “raw code link”. You can download the program by following these steps:

  1. Click on the raw code link. This will take you to a web page at the code sharing site Github.
  2. Select all of the code on that page (on the Mac you can use Command-A).
  3. Copy it (on the Mac use Command-C).
  4. Go to Max 6 on your computer.
  5. Choose File -> New from Clipboard.
  6. Save that new patch somewhere on your own machine.

All code from the course is also available on GitHub:


  • M 06 Jan. Introduction to Max and the idea of dataflow programming. Basic objects, patch cords and messages.
  • W 08 Jan. Timing and counting. Dynamic interface elements. The order of events. The trigger object. Print.
  • M 13 Jan. Scaling and clipping. Introduction to MIDI. Randomness.
  • W 15 Jan. Basic mathematical operations. Hot and cold inlets. Reading the mouse.
  • M 20 Jan. Messages and musical instruments. Coll object.
  • W 22 Jan. Reading the keyboard. Ciphers. Object review.
  • M 27 Jan. Floating point numbers. Gates and switches. Message routing and composition.
  • W 29 Jan. Simple state spaces and game navigation. GUI elements. ASSIGNMENT 1 DUE
  • M 03 Feb. Colour. Simulations and state spaces. Patch encapsulation and de-encapsulation. The Lcd object.
  • W 05 Feb. Processing grids. Modular arithmetic. Algorithmic art.
  • M 10 Feb. Updating graphic displays. Icons.
  • W 12 Feb. Timing with multiple clocks. Polyrhythms, Spatial and temporal patterns. ASSIGNMENT 2 DUE
  • M 17 Feb. READING WEEK
  • W 19 Feb. READING WEEK
  • W 26 Feb. Logical operators, number bases, decision making and conditional statements. Anti-aliasing.
  • M 03 Mar. Generate and test. Generative art.
  • W 05 Mar. Symmetry and coordinate systems. Transformation of representations. ASSIGNMENT 3 DUE
  • M 10 Mar. Lists and dollar-sign variables.
    • In-class review
  • M 17 Mar. Sprites. More about coll objects.
  • W 19 Mar. Polar and Cartesian coordinates. Fractals. Visualization and sonification. Raster and vector representations. ASSIGNMENT 4 DUE
  • M 24 Mar. Audio. Sinusoids and other waveforms. Introduction to MSP.
  • W 26 Mar. Envelopes. Converting between MIDI and audio. Ramps.
  • M 31 Mar. Exponential and logarithmic curves. Frequency modulation. Audio recording and playback.
  • W 02 Apr. Filters. ADSR synthesizer. ASSIGNMENT 5 DUE
  • M 07 Apr. Review.


Your grade will be based on five assignments and two exams.

  • Five programming assignments (10% each, total 50%)
  • In-class mid-term examination (20%)
  • Final examination (30%)

Here are the links to the assignment pages:

You will submit your assignments using the OWL site for the course, but all of the other course information will be on this site.

OWL site (Western username / password required)

You will not be permitted to use any electronic devices during the examinations.

Late Work and Attendance

In general I don’t penalize late work. Each assignment will have a suggested due date. If you are unable to complete the assignment by that date, send me an e-mail and let me know when you expect to finish the work. Any assignment which is not handed in before midnight of the last day of winter term classes (8 April 2014) will not be counted toward your final grade.

I expect you to attend every class and participate in the day’s activities.

If you are unable to meet a course requirement due to illness or other serious circumstances, you must provide valid medical or other supporting documentation to the Dean’s office as soon as possible and contact me immediately.

Regarding absence for medical illness, see the Policy on Accommodation for Medical Illness:

Approval from the Dean’s Office is required for non-medical absences from examinations.

Statement on Academic Offences

Scholastic offences are taken seriously and students are directed to read the appropriate policy, specifically, the definition of what constitutes a Scholastic Offence, at the following Web site:

Support Services

Students who are in emotional/mental distress should refer to Mental Health@Western

for a complete list of options about how to obtain help.

Useful Links