jeffThompson / CreativeProgramming1

An introductory course exploring code as a tool for creative making
71 stars 15 forks source link
art course design javascript p5js processing

"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

CREATIVE PROGRAMMING 1

:arrow_down: Jump right to the Course Calendar :arrow_down:

Instructor Prof. Jeff Thompson (please call me Jeff)
Email 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.


FORMAT

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.

:warning: Don’t hesitate to reach out if you have any questions at all! Better to ask a question than be unsure of something.


COURSE CALENDAR

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