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

Office hours are Tuesday 11 - 1 pm.

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?
Along with learning to code creatively we will look and some of the innovators in both computing and computer art. We will look at some of the key figures in the history of computing and creative coding.

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, some of the lingo they use, and some of the broader issues that have shaped what the creative coding world has become it 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.

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 SINCE KITTENS. Please, stay on track with this class. No facebooking, Redditing, tweeting, 4channing, snapplegramming, 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

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. If you are going to use your own computer in class you MUST turn off your notifications. If you don't know how, figure it out - this one piece of advice that will do more for your GPA than any other yada yada a teacher tells you. Shut notification off and don't turn them on until 2021.

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. Not to get all nerdy, but technically HTML and CSS aren't programing languages in the strictest sense. Also, this class isn't a physical computing class so we won't be learning about the Arduino or Raspberry Pi. The good news is what you learn in this class will be extremely valuable when you DO take classes on web building and physical computing, so if that's where you want to end up you're still on the right track.

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. Really, 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, and drives
There is no textbook for this class, however, Learning Processing by Daniel Shiffman is an excellent text. If you learn well from books I would highly recommend it.
Get a thumb drive or some kind of external device and bring it to class every day, even if you are not bringing in your own computer. 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 in total, so doing badly is no big deal. I will not put a time limit on the quizzes, because I hated timed quizzes when I was a student.

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

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 and if you do this you will be fine.

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 in 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, especially at the start, 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, write a note in your code showing what code is not yours, and give credit to the author.

This is NOT 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.

BE UP FRONT If you are not 100% 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. The good news is I believe you want to be here and if you couldn't make it to class it's for a good reason. I don't need to hear your excuse, but I am going to mark you absent. There is one exception - any student who is unable, because of his or her religious beliefs, to attend classes on a particular day or days shall be excused from any examination or any study or work requirements that he or she may have missed because of such absence.
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:

Get caught up THAT WEEK - don't come to the next class expecting me to tell you all that we did in the five minutes before class starts.

Processing Community Day
Saturday February 8, 2020 at The New School in New York.
This is not manadtory, however, if you go and send me a selfie from the event it will count as extra credit. The conference is free but you need to sign up before Jan 30th. sign up link A Word About Grading
Getting a B is a good grade. It means you did all the assignments and understood the concepts. Maybe you struggled a little with some of the more complicated stuff, but in this class a B is a good grade. Getting higher than a B demonstrates that you've got an aptitude for programming and really took to the material. A C or worse generally means you missed assignments or obviously spent very little time on them.
Pro-tip: handing in work that is broken or not quite perfect is way better than not handing in work at all or late.

This is the official word - NOTE: there are changes from previous semesters
Accessibility Statement

The Office of Disability Resources collaborates directly with students who identify with documented disabilities to create accommodation plans, including testing accommodations, in order for students to access course content and validly demonstrate learning. For those students who may require accommodations, please call or email the Office of Disability Resources, 914-251-6035, (Student Services Building, #316A).