Programming for Visual Artists

Fall 2020 at Purchase College

Instructor: Lee Tusman
Pronouns: he/him

“In-person” Class: NME 1450 Thursdays: 2:30pm on Zoom

Office Hours: Wednesday 10:30am - 12:30pm on Discord/Zoom

Course Description

Using a visual environment that provides immediate feedback, students are taught the basic principles of programming and, by extension, math. Lectures focus on key aspects of programming and how working artists use code creatively in their practice. In this course, math is never the end but rather the means to problem-solve during the creative process.

Course Vision

Programming for Visual Artists introduces code as a medium to create interactive visual art. We will explore the evolving history of new media and software art. You will be encouraged to push the edges of art into new and unknown territory. We will learn the basics of programming with the JavaScript library p5.js through in-class lectures, demonstrations and exercises. We will study a diverse community of artists and approaches, and we will take an expansive view of how programming can be used as a tool to create new forms of art. Outside of class, students will have weekly readings, video tutorials, writing prompts and programming assignments. The goal is to be able to get to a level of proficiency where code becomes a tool for you to make art and to integrate into your total artistic practice.


  • How is using programming to make visual art similar and different from other methods and approaches (photography, sculpture, etc.)?
  • What are the tools used to make this art?
  • Who are artists working in this field?
  • What can programming do for art?
  • What are the limitations of using code to make art?


In this course we will be learning p5.js, an open source creative coding environment using the Javascript programming language. It is a tool built on the philosophy and goals of Processing. p5.js is built for and used by a community of artists, designers, educators and students to develop creative and experimental interactive projects that are presented on the web. There are a number of advantages to making this your first programming language. If you have prior coding experience you will still benefit from learning p5.js. More info can be found here.

  • p5.js is free and open source. It works on every modern computer platform.
  • All p5.js code results in a webpage that can live online and be shared with anyone who has a web browser and access to the Internet.
  • Because smartphones now web browsers, your works can be viewed on the phone or any device with a browser
  • There is a large friendly community of people that work in p5.js, which means there are lots of learning resources, an online community for listing and solving problems, and even a number of conferences held around the world and online
  • The language is designed to be friendly for beginners and is well documented.
  • The syntax (structure) is consistent and intuitive.
  • Learning p5.js means you are learning to work in Javascript and can continue on to more advanced work in this area.

Learning Objectives

  • a working understanding of how to program with p5.js to create your own projects
  • the ability to develop an idea in your head, to sketch on paper and in code, and to translate this to software that you write
  • a knowledge of the history of programming to create art, and a solid foundation of artists working past and present in the field
  • the ability to use math and computation to serve your needs in creating interactive artwork in p5.js
  • an understanding of the iterative process of coding by building up and continually refining your programs
  • the ability to work through technical challenges and bugs to solve coding problems

Additional Course Goals

Required Texts and Tools

  • Getting Started With p5.js by Lauren McCarthy, Casey Reas and Ben Fry - The books fairly low-cost, and I think it is easier to learn from a physical book. You can also read it outside for example! It is a good reference while you are learning. I have requested this as an e-book you can sign out digitally from our library. Unfortunately, we are limited as to how many people can have it signed out online to one person at a time. For this reason, I recommend purchasing or renting an e-book since the price is affordable.
  • p5.js Web Editor. At the beginning of the semester we will be using the free online p5.js web editor.
  • a Text Editor - Later in the semester we will be working in a contemporary coding environment on the computer. I will show Brackets and Atom in class, both free.
  • A Web Browser. Chrome or Firefox recommended.
  • A notebook. Please have paper and pen or pencil nearby. It is often easier if we can sketch ideas or jot down ideas quickly. Don’t get too reliant on your computer!

Two “Field” Trips

You are required to submit short write-ups of reports on two art and code-related events this semester. There are art and code events happening almost every weekend. And under coronavirus they are all online. I list many events online at Data, Art and Technology online and will also announce lots of opportunities to sign up for these (mostly free) events.

Each report must include:

  • Title of the event
  • Date and location (URL)
  • Sponsoring Organization
  • The name of the speakers and the name of the program
  • A screenshot of the speakers giving their talk
  • Describe what the speakers talked about, including their concept and the main ideas. What did you think about the project? What did you learn that was new? What excited you about what they spoke about, or what turned you off?
  • Jot down any questions you have while listening to the speaker. You may ask the speaker if it’s appropriate to do so, during a Q&A for example. In any case, record your questions that you still have after watching the talk or program.

You may turn these in any time during the semester, but I suggest starting this earlier as you will get busier as the semester goes along. If you are having trouble finding events, talk to me and I will assist you.

University and Classroom Policies and Rules

Official Purchase College Academic Integrity Policy

The Purchase College academic integrity policy,, explicitly forbids cheating, plagiarism, and other forms of academic dishonesty. Plagiarism is the appropriation or imitation of the language, ideas, and/or thoughts of another person and the representation of them as one’s own original work. Students are responsible for familiarizing themselves with the definition of plagiarism and the acceptable methods of attribution.

Violation of any of the above may lead to formal disciplinary action and the following sanctions:

  • Minimum Sanction: Failing grade on the assignment or examination. Maximum Sanction: Expulsion
  • Recommended Sanction (First Offense): Failing grade for the course
  • Recommended Sanction (Second Offense): Expulsion

Students who have any questions or doubts about whether any activity is academically permissible should check with the instructor.

Plagiarism and cheating are taken seriously. You will be held accountable for Purchase’s Student Code of Conduct for Academic Integrity.

Class policy on Collaboration

I support collaborative learning with some important caveats.

Coding can be difficult, and struggling with the material is part of the learning process. Students are allowed to collaborate to learn from each other. Do not collaborate in order to simply find out a solution to a project. Each participant should contribute approximately equally, and what you turn in should be your own. Copying a solution from another student, even if you change a few minor things such as variable names, is not a collaboration. You may help someone learn something, but you can not tell them what to code. If you have questions about collaboration or academic integrity, get in touch with me via email, talk with me before or after class, or come to office hours.

Tutoring Support

All students at Purchase College can take advantage of our tutoring services in the Learning Center and the Einstein Corner. These are free, 45-minute, peer-to-peer tutoring sessions in a variety of subjects and in writing across the disciplines. Sessions can happen in person or through the Online Writing Lab up to 3x/week. The OWL allows students to submit a paper draft and get written feedback by email within 48 business hours. We strongly recommend face-to-face meetings for first-year students and multilingual writers. The OWL is a good option for upperclassmen who have experience with in-person tutoring. You are encouraged to take advantage of this service to help you excel in this class, as well as your other courses. Please visit the Learning Center and Einstein Corner websites for more information about accessing these services online via Zoom.


Homework will often consist of reading, watching video tutorials, researching and programming projects

You will have in-class and outside of class coursework and homework in the form of code sketches and projects. All work is to be submitted on time by wednesday at 11:59pm, the day before our classtime by uploading any required writing and/or posting a link to your p5.js program on Moodle. I have your projects due at this time so I can review your work and progress prior to our classes. For each day late, your grade will drop a part letter grade. (An A will become a B for example).

Academic Accessibility

Students with documented physical, learning, psychological, and other disabilities are entitled to receive reasonable accommodations. For those students who may require accommodations, please call or email the Office of Disability Resources, 914-251-6035,

It is my goal that this class be an accessible and welcoming experience for all students, including those with disabilities. You are welcome to talk to me at any point in the semester about course design concerns, but it is best if we can talk as soon as possible about the need for any adjustments. The Office of Disability Resources collaborates directly with students who identify documented disabilities to create accommodation plans, including testing accommodations, in order for students to access course content and validly demonstrate learning.

Tentative nature of syllabus

This syllabus will be revised as needed to better serve the needs of the class. You can always find the most up-to-date version of this syllabus on our class website, and linked from Moodle directly. Students are responsible for staying up to date with any changes. Any significant changes will be announced to all students in class and/or via our announcement system.

Class Method

Class starts on time at 2:30pm. Some weeks students will have video tutorials to watch well prior to class so that when we are together more time can be spent working together on student projects. When we have class be ready, awake, prepared. We will generally use the first half of class for seminars and introductions to new assignments, reading discussions, presentations, or lectures. The second half will generally be in-class studio time. Some classes have mini-assignments. There will often be collaborative projects or group work, but everyone must submit their own individual work.

A portion of each class will be spent reviewing assignments. Expect to be asked to show your work each class session. Some classes everyone may demonstrate their work, other classes only a few students will share, but always be prepared to do so.

Getting Help

Programming can be difficult! You should expect to spin your wheels sometimes while you actively search for solutions to challenges you encounter. Don’t give up too soon. Should you contact me for your help: Please don’t contact me last minute. Please try a number of solutions before contacting me. And please include your entire code so I can review it.

Process of solving coding issues:

  1. Take a break for a bit. Come back and try again.
  2. Still stuck? Talk to a friend or family member, even someone with no background. Talk through the program in logical order and explain the flow in order. This may lead to ‘aha’ moments!
  3. Still stuck? Jump on Discord. We will have a #questions channel. Ask and answer questions here. Feel free to talk through issues together. I will demonstrate how to post short blocks of code here. Use three ` marks surrounding either side around your code. code
  4. You can link to your code as well, contacting me via Discord or email. Keep in mind that as the semester progresses your programs get larger and larger and harder for me to debug. Please send me a minimal version of your program, what you expected to see, and what you actually saw.

Classroom Community


Don’t miss class! We only meet in person once a week! This is an opportunity to learn something new, intensely with a professor who is invested in your education and with incredible students. We are all needed to make this class successful. If possible, keep your camera on during our Zoom sessions. It’s hard to feel energy and support together when we are staring at black screens.

Students are expected to be present and on time to class. Absences should be excused with documentation. Three absences will result in a grade lowered one unit. (A to a B for example). With each additional absence your grade will lower an additional unit. Showing up more than 15 minutes late is an absence. If there are extenuating circumstances and emergencies, be in touch with me, I’m reasonable.

We will be covering critical concepts and working on code and projects in-class and you are responsible for reviewing our class site and reaching out to your peers outside of class time to catch up on what you have missed.


We will be using the online messaging and chat software Discord. You can access it through a web browser or download a standalone application. We will use it outside of our Zoom sessions. If you have a question and want help, ask in the #questions channel. For any big important news I will put official class announcements on the #announcements channel and I will also post it to Moodle or email the entire class.

You are welcome to ask and answer questions and have ongoing conversations. Please keep announcements a channel just for me to post class announcements. Please remember to be respectful and treat this as a virtual extension of the classroom.


We are all learners and educators. Your experience and participation is valid and necessary. I am not the sole source of information. You are responsible for and encouraged to be in charge of your own education. Leap forth into areas of interest. Teach with and learn from others.

Please hold me accountable and point out areas that need to be improved.

  • Help each other out. Ask lots of questions of me and your fellow students.
  • Learning to program is failure followed by success.
  • If you are feeling left behind, stuck, or frustrated in any way, please let me know immediately. I am here to help.
  • Sleep enough hours. Good sleep will get you through college, reduce stress, help you do well in class, and feel better. And it’s free.

Statement of Values and Code of Conduct

with acknowldegement and thanks, adapted from Everest Pipkin

It is my intent to lead a course that serves students from diverse backgrounds and perspectives, and that our varied life experiences may enter the classroom as a resource, strength and benefit. I will address you by your name and pronouns and make arrangements to address disabilities or religious needs.

Free exchange of ideas and critique is encouraged and expected but I will not tolerate harassment, including threats of violence, deliberate intimidation, unwelcome sexual attention, and offensive comments related to gender identity and expression, sexual orientation, race, ethnicity, language, neuro-type, size, ability, class, religion, culture, subculture, political opinion, age, skill level, occupation, or background. During class discussion and critique we aim to speak and to listen, be mindful and generous in our interactions, and make everyone feel heard.


  • 50% weekly homework assignments (weeks 1-10)
  • 20% Final Assignment (weeks 11-14)
  • 10% Artist Presentation
  • 20% Participation and attendance, and preparedness

A 93 - 100
A- 90 - 91
B+ 87 - 89
B 83 - 86
B- 80 - 82
C+ 77 - 79
C 73 - 76
C- 70 - 72
D+ 67 - 69
D 60 - 66
F 59 and below


  • Participation includes asking or answering questions in class, participating in office hours or co-teaching others, assisting in group work and conversations, participating in online forum, and in other ways.



Books (some are available to read online)