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 here.
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!
Required Software
You must purchase a license for Cycling 74’s Max 6 + Gen software. A 12-month license costs US $80. This software is installed on some of the machines in the classroom so you don’t have to purchase it right away, but you will eventually want a copy for your own work. 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.
Schedule
The best way to learn how to program is to write programs. We will meet for two hours each day, twice a week. During the first hour of each class, I will connect my laptop to the LCD projector and write programs while explaining to you how they work. You can follow along on your own machines and ask questions about anything that isn’t clear. During the second hour of each class, you will be programming alone or in pairs, and I will walk around and help you if you get stuck, make suggestions about other things to explore, etc.
- Mon 07 Jan.
- Wed 09 Jan.
- Patch 005. Sliders, Dials, Scaling and Clipping
- Patch 006. Print, and the Order of Events
- Patch 007. Use Trigger to Specify the Order of Events
- Patch 008. Making MIDI Notes
- Patch 009. Random Atonal Crap
- In class: after Patch 005, try using multiple split objects to make a patch that takes numeric percentages and flashes leds corresponding to letter grades like A, A-, B+, B, etc.
- Mon 14 Jan.
- Patch 010. Kslider and Nslider
- Patch 011. Random and Drunk Objects
- Patch 012. Basic Mathematical Operations
- Patch 013. Hot and Cold Inlets
- Patch 014. Reading the Mouse
- In class: start working on a MIDI instrument of your own. If you want to play a tune, you can adapt Patch 004 to send a sequence of notes or chords to a makenote / noteout pair.
- Wed 16 Jan. Assignment One: Make a MIDI Instrument
- Mon 21 Jan.
- Wed 23 Jan.
- Mon 28 Jan. Assignment One Due
- Patch 026. Attrui and Colorpicker
- Patch 027. Swatch and Multislider
- Patch 028. Flipping Coins and Shuffling Cards
- Patch 029. Use Patcher to Encapsulate Code
- Patch 030. The Bean Machine
- In class: after the demonstration of the ‘mood machine’ in Patch 027, a brief discussion of the idea of a state space. Work on MIDI instrument or Lcd art
- Wed 30 Jan. Assignment Two: Make Some Lcd Art
- In class: becoming familiar with Lcd object, and rediscovering a range of problems faced by 1980s video game developers
- Mon 04 Feb.
- Wed 06 Feb.
- Mon 11 Feb. Assignment Two Due
- Wed 13 Feb. Assignment Three: Animation
- Patch 040. Object Review, Patches 021-039
- In class: review of objects used in Patches 001-039
- Mon 18 Feb. READING WEEK
- Wed 20 Feb. READING WEEK
- Mon 25 Feb.
- Wed 27 Feb.
- Mon 04 Mar.
- Wed 06 Mar.
- Mon 11 Mar. Assignment Three Due
- CLASS CANCELLED
- Wed 13 Mar.
- Mon 18 Mar. Assignment Four: Visualization / Sonification
- Wed 20 Mar.
- Mon 25 Mar.
- Patch 060. Object Review, Patches 041-059
- In class: visualization and sonification examples; matrices; data compression
- Wed 27 Mar. Assignment Four Due / Assignment Five: Make an Audio Instrument
- Mon 01 Apr.
- Wed 03 Apr.
- Mon 08 Apr. Assignment Five Due
- Wed 10 Apr. Last class. Final Assignment
- In class: assignments and review
- Fri 26 Apr. ALL ASSIGNMENTS MUST BE HANDED IN BY THIS DATE.
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:
- Click on the raw code link. This will take you to a web page at the code sharing site Github.
- Select all of the code on that page (on the Mac you can use Command-A).
- Copy it (on the Mac use Command-C).
- Go to Max 6 on your computer.
- Choose File -> New from Clipboard.
- Save that new patch somewhere on your own machine.
Evaluation
Instead of having large projects or exams, your grade will be based on a larger number of small programming assignments. This will encourage you to practice your programming skills regularly, and enable you to be experimental in your coursework. I have quite a few fun programming projects in mind for us to work on, and Max is powerful and high-level enough that we can do things with a page of code that would take hundreds of pages (and a whole semester) to do in a language like Java or C++.
You will have five assignments worth 16% each, and a final assignment worth 20%. 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)
A Note about Late Assignments
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 the due date, send me some e-mail and let me know when you expect to finish it. All assignments must be handed in by the end of the course (April 26), otherwise I won’t be able to count them towards your final grade.
Useful Links