Your browser does not support the canvas tag.

Joe McKay
My office is room 1007 in Natural Science, and you can often find me in room 1008 or 1016.
My email is joseph.mckay at

Office hours are Wednesday 2-4.

Learning to program gives you power. Behind every electronic device you touch there's some kind of language and logic controlling that device. Someone wrote the code that controls your daily activities, and being able to tap into that is awesome. Perhaps with a little knowledge you can take back some of your electronics? Gradually re-claim ownership over your world? Become the Bond Villian you always knew was lurking deep inside you?

Programming for Visual Artists is designed for art students to learn how to write code, and hopefully be able to incorporate that knowledge into your practice. Many of you may have gravitated towards the arts because you do not (think) you have a natural aptitude with computers, and especially math. Well, there's some good news, being a good computer programmer != being good at math. ( != means NOT EQUAL).

Even if you end up working with skilled programmers to realize your artworks, having a grounding in understanding the challenges they face, and some of the lingo they use will help you immeasurably.

Learning how to program is really frustrating. If your History paper has a couple words spelled wrong you'll probably still get a good grade, but if your program has words spelled wrong it many not work at all, or worse it may "sort of" work but then crash at just the wrong time. Chasing down errors (debugging) is a huge part of programming at all levels. No software ever goes public truly "bug-free".

We will talk about how to de-bug code later in the semester but for now know that there will be days when everyone around you seems to have it working and you don't. It's part of the fun. Sometimes, your broken code does something unexpected and awesome. At this point you get to say "It's not a bug, it's a feature!", which is the unofficial title of this class.

There is a Classroom assistant for this class, Will Jamieson, who is awesome. His role is to help you understand, not do your work for you, but please do use him as well as me. Also, in past years Einstien's Corner has been available for students to get help understanging code.

Class Etiquette
This room is full of computers and most days we will be using them a lot. These computers are also connected to the internet, which Websters Dictionary has defined as THE MOST DISTRACTING THING IN SINCE KITTENS. Please, stay on track with this class. No facebooking, Redditing, tweeting, 4channing, instagramming, AOLing or whatever y'all are into now during class time. I promise the internet will still be here after class. This is especially true when I or someone else is talking to the class.

You will never know enough code. If you are feeling like you are 100% caught up with the class work, then learn yourself something new! - In fact there may be days when this happens, remember, there's no such thing as "learning all the programing there is to learn"
Still bored? Give the Euler Project a try

What this class isn't
We will not be building websites in this class. This is about learning to create your own programs and being creative coders. Also, this class isn't a physical computing class, however the skill you will learn here will transefer very well to the arduino.

Math Core Requirement
This class does fulfill the math CORE requirement. I know I said that being a good programmer does not mean being good at math, so what gives?
Okay there will be some math but it will be relevant and I will give some historical context when we get to it. Don't freak out.

SLO (student learning outcomes)

Class Structure
There will be in-class assignments, weekly labs, larger projects, lectures, presentations and some critiques. The labs are designed to be finished outside of class time. You cannot learn to program if you only work on it once a week. You must keep working on it throughout the week.
There will be three projects that will allow you more creative freedom. We will talk more about these as the semester progresses.

Books, drives and Joysticks
There is a textbook for this class, Learning Processing by Daniel Shiffman. That said, the textbook is only for your reference, I wll not be directly teaching from it. All the example code from the book is available here.

Get a thumb drive or some kind of external device and bring it to class every day. Don't rely on your material being left on the computer, because the one day you really need it, it'll be gone. "I didn't back it up" is not an acceptable excuse.

There will be the occasional Quiz. These are designed for me and you to see weather you're on the right track. They only count 10% of your grade, so doing badly is no big deal. I will not put a time limit on the quiz, so you can take all the time you need.

We will be using moodle for turning in assignments. More on this later.

Using Your Own Computer
Processing is cross platform and will work on most computers. I am happy to have you bring your own laptops to class, however, I am not going to spend time troubleshooting your computer setup. We are working in a lab with working computers that you have access too outside of class time.

Grade breakdown

Time Expectations
This is not a hard class if you put the work in. But you need to structure your life so that you are spending significant time outside of class working. The school says to expect 2 hours of work outside of class for each hour in class.
How much code can I "borrow"?
In most classes, you cannot use text written by other people and claim it as your own, and this is true is this class as well. However, programming is a little different than other subjects. Nobody programs in a vacuum, everyone is standing on the shoulders of the programmers that came before us. So where is the line?
For the most part, I want you to write your own code. This class is designed for you to learn, not creatively copy and paste. I would rather see projects that are less ambitious, if it means that you coded them yourselves.
In some of the later projects I will allow some flexibility. Here's an example.

This is OKAY. You are making a game for your final project and cannot figure out how to do collision detection. You find on-line someone someone who wrote an nice algorithm that does what you need. You copy a few line of that code into your project, and give credit to the author in your comments section.

This is NO OKAY You are making a game for your final project. A friend, who is a good programmer, gives you code that they wrote for a CS 1 course. You change a few variables and images and call it your own.

GREY AREA If you are not sure - ask. Way better than me making you re-do something.

Don't skip class. If you miss three classes it will affect your grade. Four and you will fail.
This class will get really hard when you start missing. There is a lot of information we cover each week.

Pro Tip: If you do miss a class then:

this is the official word:
DOCUMENTED DISABILITIES: Students with documented physical, learning, and psychological and other disabilities are entitled to receive reasonable accommodations. If a student needs accommodations, he/she must first register with the Office of Access and Accommodations at 914 251-6035 or
I will not place a time limit on any tests, so if that is your prime concern rest easy.