"The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it can be an aesthetic experience much like composing poetry or music."
– Donald Knuth
"This may sound paradoxical, but the machine, which is thought to be cold and inhuman, can help to realize what is most subjective, unattainable, and profound in a human being."
– Vera Molnar
⬇️ Jump right to the Course Calendar ⬇️
Instructor | Prof. Jeff Thompson (please call me Jeff) |
---|---|
jeff.thompson@stevens.edu | |
Time/location | Mondays 9am–12.50pm, Morton 201 |
Student hours | Tuesdays 10am–noon (Morton 208) and by appointment (Zoom) |
In this class, we will explore the computer as a tool capable of powerful creative possibility, not via pre-built software, but instead by writing code ourselves. We will look at the basic structures and affordances of code as inspiration for making artworks, as a tool capable of creating things that would be impossible by hand, and as a fallible system that encapsulates our cultural and personal biases.
During the course of the semester, you’ll learn how to write code for a variety of visual projects, including images, animations, and interactive work. We’ll primarily be using p5.js
that was originally developed by Lauren McCarthy and is an offshoot of Processing (which turns twenty years old this year!). p5.js
is a toolkit created specifically for artists and designers build on the Javascript programming language and features a really easy-to-use online code editor.
Along the way, we’ll also look at historical and contemporary figures in the arts and computer science who have shaped how we use computers as creative tools, and we’ll explore code from a critical, humanistic perspective.
See the syllabus PDF for course policies, grading, etc.
This semester we're finally back together in person! Our class time will be spent together critiquing your homework projects, covering technical material, introducing new assignments, looking at examples, group ideation and feedback exercises, and work time. Attendance will be taken at the start of class every week.
Because we will cover a lot of material this semester and because this course will be both rigorous and thorough, it’s really important that you stay on top of your coursework.
Please note this is subject to change. Be sure to check Canvas, this page, and your email regularly. Homework and readings are listed for the days they are assigned.
AUG 30 | BOOTING UP |
---|---|
In class | Hello, introductions and syllabus, how to access course materials, instruction drawings |
Reading | Computer Graphics (Mohr) |
Homework | Instruction Drawings |
SEPT 6 | LABOR DAY, NO CLASS! |
---|---|
Homework | Finish Instruction Drawings |
SEPT 13 | DRAWING && COORDINATE SYSTEMS |
---|---|
In class | Creating sketches in the p5.js editor, "Hello World," RGB color, drawing shapes, fill and stroke, saving images, getting help |
Homework | Robot Drawings |
SEPT 20 | ITERATION && LOOPS 1 |
---|---|
In class | Variables, for loops, nested loops, driving parameters with loops, historical quilt research |
Homework | Create a quilt block for your Algorithmic Quilt |
SEPT 27 | ITERATION && LOOPS 2 |
---|---|
In class | Matrix transformations, creating functions to re-use code |
Homework | Finish your Algorithmic Quilt |
OCT 4 | RANDOMNESS 1 |
---|---|
In class | Psuedo-random numbers, random() , Brownian motion, random choices |
Readings | Open Source as Open Culture/Culture as Open Source by Siva Vaidhyanathan and Motives for Writing Free Software by the Free Software Foundation |
Homework | Randomness code sketches |
OCT 11 | INDIGENOUS PEOPLES' DAY, CLASS MEETS ON TUESDAY! |
---|---|
Homework | (See above) |
OCT 12 | RANDOMNESS 2 (and ⊨ Open Source) |
---|---|
In class | Discuss readings, contributing to open source projects, Perlin noise |
Homework | Finish Randomness project |
OCT 18 | COLLAGE |
---|---|
Note! | Jeff out of town, class will meet online |
In class | Loading images, resizing, accessing pixel values with get() |
Homework | Collaged Photographs |
OCT 25 | INTERACTIVITY 1 |
---|---|
Note! | Jeff out of town, class will meet online |
In class | Mouse and keyboard input, using an external editor |
Homework | Interactivity in-progress sketches |
NOV 1 | INTERACTIVITY 2 |
---|---|
In class | More interactivity demos, work time |
Homework | Finish Interactivity project |
NOV 8 | ANIMATION 1 |
---|---|
In class | Change over time, frameCount and timing, flags, sprites |
Homework | Animation : rough version of first two scenes |
NOV 15 | ANIMATION 2 |
---|---|
In class | Easing, sound |
Homework | Finish Animation |
NOV 22 | FINAL PROJECT 1 |
---|---|
In class | Object-oriented programming |
Homework | Write Final Project proposal |
NOV 29 | FINAL PROJECT 2 |
---|---|
In class | Project feedback |
Homework | Rough version of Final Project |
DEC 6 | FINAL PROJECT 3 |
---|---|
In class | Project feedback, work day |
Homework | Finish Final Project and documentation |
DEC 13, 9AM | FINAL CRITIQUE |
---|---|
Crit | Final critique of projects |
DEC 15, 5PM | DOCUMENTATION DUE |
---|---|
Online | Project documentation due by 5pm on Canvas |
Topics noted with ⊨ symbol are short explorations of topics that jump off from or surround programming in a creative context; the symbol ⊨ is used in the field of logic to mean that an idea semantically entails another