An introductory course exploring the computer as a tool for creative making
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Assignments
Code
Exercises/HumanLoop
Images
Quizzes
Readings
Resources
.gitignore
README.md
Syllabus.pdf

README.md

CREATIVE PROGRAMMING 1

Instructor      Prof. Jeff Thompson
Email           jeff.thompson@stevens.edu
Office/hours    Morton 208, Tues/Thurs 2.30–3.30pm

Meeting times   Thursdays 9.00am–12.50pm
Location        Visual Arts & Technology Lab

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 image, text, animation, and interaction. We’ll primarily be using the Processing platform, a toolkit created specifically for artists and designers built on the language Java, and a brief exploration of Python as a tool for building Twitter bots.

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.

We’ll be starting from scratch, so if you don’t know anything about writing software that’s totally ok! For those that have experience coding, we’ll be using ideas from graphics programming that might be new to you, and I encourage you to take the cool things you know and apply them to our projects. For everyone in the class: talk to and help each other. Classes shouldn’t be one-way information machines, but a way to share ideas and skills between each other.

See the syllabus PDF for full details, grading policy, etc.


“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


COURSE CALENDAR

Please note this is subject to change – be sure to check this page and your email regularly. Homework and readings are listed for the days they are assigned.

Topics noted with ⊨ 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.

WEEK 00: BOOTING UP

In class:
Hello, introductions and syllabus, instruction-drawings

Reading
Computer Graphics (Mohr)

Homework:
Install Processing and test to make sure it works, Instruction Drawing

- - -

WEEK 01: DRAWING && COORDINATE SYSTEMS

In class
Creating sketches, "Hello World," RGB color, drawing shapes, fill and stroke, saving images, getting help

Homework
Drawings of Robots

- - -

WEEK 02: ITERATION && LOOPS

In class
For loops, nested loops, driving parameters with loops, push/popMatrix(), creating functions, historical quilt research

Homework
Algorithmic Quilts

- - -

WEEK 03: RECURSION && FRACTALS

In class
Creating recursive functions, Pythagoras Tree, Koch Snowflake, the pixel array

Homework
Recursion Experiments

- - -

WEEK 04: CLOCKS

In class
Conditionals, strings, fonts and text, exporting video files

Homework
Create a clock, study for Quiz #1

- - -

WEEK 05: INTERACTIVITY 1

In class
Making things move, mouseX/Y, mousePressed()/Dragged(), background with alpha

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
Interactivity, open source response

- - -

WEEK 06: RANDOMNESS 1

(And ⊨ Open Source)

In class
Discuss readings, contributing to open source projects, random(), Brownian motion, random choices, writing to PDF

Homework
Begin Randomness project, install Python

- - -

WEEK 07: RANDOMNESS 2

In class
Psueo-random numbers and Java's Linear Congruential Generator, random seed, Perlin noise and motion, work day, check if Python is working for everyone

Homework
Finish Randomness project

- - -

WEEK 08: LANGUAGE 1

In class
Creating a Python script, printing “Hello World,” running a script in the Terminal, loops and conditionals, lists, cleaning text, templating strings, saving to file

Homework
Begin Bot project, create a Twitter account

- - -

WEEK 09: LANGUAGE 2

In class
Installing Python modules, creating an app on Twitter, OAuth, posting to Twitter automatically, bot sever demo

Homework
Finish Bot project

Reading
Selection from 10 PRINT CHR$ (Montfort, et al)

- - -

WEEK 10: ⊨ CRITICAL CODE STUDIES

In class
Reading code as text, porting code as critical research

Homework
Historical Code Explorations

- - -

WEEK 11: INTERACTIVITY 2

In class
Simulating motion and behavior, object-oriented programming, ArrayLists

Homework
Write Final Project proposal, begin work on rough prototype

- - -

NOV 22–26

Thanksgiving break – no class!

- - -

WEEK 12: NO CLASS (JEFF OUT OF TOWN)

Homework
Continue working on Final Project

- - -

WEEK 13: WORK DAY

In class
Work on Final Projects, get help as needed

In class
Demo of work in progress

Homework
Finish Final Project and documentation

- - -

EXAM PERIOD: THURSDAY, DECEMBER 21

Final project files and documentation due online – no class meeting (bye!)