This button toggles to OpenDyslexic font which some find easier to read.


My office is room 1007 in Natural Science (for what its worth)
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 in Zoom 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 Zoom Etiquette
It is very easy to lose focus and get distracted during a zoom class. This is not the ideal way to learn or teach. Without your cooperation this is going to be impossible. Here's what I ask.

In return I promise to keep classes short when I can, and respect that super long Zoom lectures are pretty difficult. This is a new teaching experience for me too, please let me know if there are things that I can do that would help make the class go more smoothly.

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
In the before time I would allow you to use your own computers in class. Now, it's not even an option. We will start class using an online editor, so no worries about installing software. Eventually we may use Atom which is free and open source.
There will be a class where we use Krita, a free and open source photo editing tool. Even if you have Photoshop it's worth checking out.

What this class isn't
This is not a web design class. We will be creating programs that live on the internet, but the finer points of how to use CSS and HTML will be covered in Intro to Web.

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, individual zoom check-ins and some very light 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. Daniel Shiffman also has a youtube channel called The Coding Train
Just because we are using a web editor, you still need to download and backup your work. It's a good idea to use a thumb drive or some kind of external device to back up your projects as well. "I didn't back it up" is not an acceptable excuse.

There will be the occasional Quiz. They designed for me and you to see whether 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 who wrote a nice algorithms 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 wait until the next class to find out what you missed.

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).