Programming for Interactive Audio-Visual Arts
CS 2, Spring 2022


Course description

This course introduces programming techniques necessary to generate interactive visual art on a computer. Although it briefly covers computer-generated media art, the course focuses on the programming skills required for creating interactive works. Rather than using commercial software, students write their own programs to create compositions with which users can interact. The course introduces fundamental concepts of how to represent and manipulate color, two-dimensional shapes, images, motion, and video. Coursework includes short programming assignments to practice the concepts introduced during lectures and projects to explore visual compositions. The course assumes no prior knowledge of programming, and is not open to students who have already had a programming course like CS 1 or CS 10.

We'll be using a language called Processing, which does a lot of the "dirty work" to let us focus on creating fun interactive works, and still provides all the power of a full programming language.

Administrative Info

MWF 2:10-3:15 | x-hour Th 1:20-2:10 | ECSC 008
Michael Casey
ECSC Room 211
Teaching assistants:
Sean Paulsen
Office Hours
PROF. CASEY: WEDS 1:00-2:00, THURS 12:00-1:00 (+ available by appointment.)
Sean: Tue 4:30-5:30, SUN 2:00-3:00 (+ available by appointment.)
Announcements and discussion board
Daniel Shiffman, Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction
Other materials
Processing reference
Casey Reas and Ben Fry, Processing: A Programming Handbook for Visual Designers and Artists

Coursework and grading

While this class doesn't satisfy the language requirement, you are learning a new language and a new way of thinking. Most of us can't wait a week and cram material from a language class just in time for a paper or oral presentation. Likewise, most of us can't wait until the night before a performance and learn new things about a musical instrument and perfect the piece we are going to perform. In both of those cases, as well as in this class, it is best to stay on top of the material and practice often.

In that same vein, the best way to learn the material is by doing. After lecture try the examples on your own, modify them, come up with variations, etc. The lectures are constructed to help you do that. There aren't many core concepts, so most of each lecture is spent illustrating how to put a new concept to use in a number of different ways. The same is true of the textbook, and it even has short exercises to help you. It's like learning new words or grammatical constructs by using them in a conversation. Practice talking to yourself in this new language (don't worry about the looks people give you), and show off the results to your friends.

The lectures will largely parallel the textbook, where possible. While we will cover the same concepts, I will mostly illustrate them with different examples, trusting that you can read the text on your own later (or earlier), and that additional examples can only help you see how to put the concepts to use. I will clarify anything from the examples in the text that I think is particularly tricky, and if something from the text bothers you, by all means bring it up in class. For some chapters I won't cover all the material in the text, and for some material that I cover in class there isn't anything in the text. Lecture notes, including the examples from class, will be available on the schedule page for each day.

To tie together both the larger goal of creating fun interactive works, as well as the reality that practice makes perfect, the coursework will include a combination of assignments at various granularities.

Short assignments (25% total)
To help you keep on top of the material (think language lab or rehearsal). Accompanying a lecture (due by the next one); done individually.
Homeworks (4 x 12.5% = 50% total)
To help you put the basic techniques into practice in creating new works. Week-long; done individually.
Final project (25% total)
To allow you to synthesize the material to do something bigger of your own design. Done individually.

Assignments are to be turned in via Canvas before class on the due date. Ample time is provided for each assignment, so in general, late submissions will not be accepted. Under extenuating circumstances (prolonged illness, death in the family, etc.), arrangements must be made with the instructor before the due date.

Grades will be assessed according to correctness and quality of both the product (does it look and act like it should?) and the code (is it well-organized and easy to follow, does it effectively use the proper programming constructs?). For exceptionally creative and interesting work, it is possible to receive extra credit points. Extra credit is tabulated separately from the regular grades on homework and exams, and is used to adjust final grades after the final average is computed. Thus extra credit is always optional, and not doing any extra credit work will never reduce your final grade, even if everyone else in the class does a lot of extra credit.

Honor code

Dartmouth's honor code applies to this course, and academic misconduct policies will be strictly enforced. If you have questions, ask!

You may discuss the assignments with other current CS2 students, but your submitted work must be entirely your own. That is, your code and any other solutions you submit must be created, written/typed, and documented by you alone. You may not copy anything directly from another student's work. For example, memorizing or copying onto paper a portion of someone else's solution would violate the honor code, even if you eventually turn in a different answer. Similarly, e-mailing a portion of your code to another student, or posting it on-line for them to see would violate the honor code. We do encourage discussion of assignments between students, subject to these rules.

If you make use of any code taken from outside references, i.e. a web page or a book, you must clearly attribute the source of the code with clear comments in the code that you submit. Proper respect for copyright laws as applied to printed materials and software products is subsumed by Dartmouth College's Community Standards and Accountability that explains the Academic Honor Principle.

On quizzes, you may not collaborate with, copy from, or otherwise share information with anyone. (You may of course ask questions of the course staff.)


Please see the website for Dartmouth’s Student Accessibility Services (SAS)

Students requesting disability-related accommodations and services for this course are encouraged to schedule a phone/Zoom meeting with me as early in the term as possible. This conversation will help to establish what supports are built into my course. In order for accommodations to be authorized, students are required to consult with Student Accessibility Services (SAS; Getting Started with SAS webpage;; 603-646-9900) and to request an accommodation email be sent to me. We will then work together with SAS if accommodations need to be modified based on the learning environment. If students have questions about whether they are eligible for accommodations, they should contact the SAS office. All inquiries and discussions will remain confidential.

Religious Observances

Some students may wish to take part in religious observances that occur during this academic term. If you have a religious observance that conflicts with your participation in the course, please meet with me before the end of the second week of the term to discuss appropriate accommodations. To assist with calendar planning and awareness of our diverse religious and spiritual community, the list of holy days for 2020/2021 can be found at The list represents major holy days which may impact accommodation of campus events in general, as well as student course attendance, exams, Commencement and participation in activities 2020-2021. Thank you for your consideration. If you have any questions about these dates or other concerns, please contact Rabbi Daveen Litwin, Dean and Chaplain of the Tucker Center for Spiritual and Ethical Life.