View project onGitHub

Communication Design: Creative Computing

Parsons The New School for Design

Fall 2014
PUCD 2035 D
Friday, 9:00am - 11:40am
Arnold Hall, 55 W 13th St., Room 402

Jonathan Dahan | dehanj@newschool.edu


This course will introduce students to the building blocks of creative computing within the visual and media environment. Students will learn to create dynamic images, type and interfaces, that can translate into print, web and spatial forms. Through weekly problems, students will learn programming fundamentals that translate in virtually all programming platforms.

By the end of this class students should feel excitement (as opposed to dread) when encountering new programming languags, techniques, and technologies. They will know how to quickly find and participate in each community to help them learn. Students will have to learn how to feel comfortable working with the unfamiliar. In doing so, encounters with new technology can be seen as an opportunity to expand the breadth and depth of their craft, and as inspiration for new work.

Learning Outcomes

  • Demonstrate knowledge of fundamental programming concepts
  • Develop several visual & interactive projects
  • Objectively present their design process and workflow
  • Integrate a variety of media elements into their projects
  • Problem solve with other students through reading other students’ code
  • Demonstrate the ability to research and learn unfamiliar technical topics

Required Materials, Software, etc.

  • A functioning and fully charged laptop running OSX or linux. Please bring this laptop to every class session.
  • Student space on the School’s webserver.
  • A text editor that supports syntax highlighting, such as atom or sublime text.
  • A modern web browser, such as Mozilla Firefox or Google Chrome.
  • Readings and viewings will be made available online.


Per New School policy, 3 or more absences or excessive tardiness will result in a failing grade. If you need to miss class, please email me in advance.

Projects and Excercises

Each week there will be a small exercises to help reinforce the ideas introduced in class. In addition, there will be three more open ended assignments, that will take more time to complete. There will be one final personal project, that can be started anytime during the course. Grades are broken down as follows

20% attendance and participation, 30% exercises, 30% assignments, 20% final project


We will cover at least the following topics in depth:

  • Networks
  • Numbers
  • The Terminal
  • Hardware
  • Interfaces
  • APIs
  • Operating Systems

An sample of interesting projects and artwork to act as inspiration for the assignments. The exercises will help ensure working knowledge to incorporate these elements in future work.

Depending on the character and interests of the class, we can cover additional topics such as security, embedded systems, functional programming, node-based programming, wireless communication, bitcoin and the blockchain, bittorrent.


Possible exercises

Course Outline

Below is a rough outline of the semester, subject to change. It will be updated throughout the semester. Feedback

Class 0x00

Assignment Create a program designed to be executed by a human
Motivation Language design, machine empathy, common elements
Inspiration Sol LeWitt
Excercise Sign up for github, file an issue for the class

For the first assignment we will have to write a program designed to be executed by a human. You can write this in any language, but the final output must be created only by handing a person a sheet of paper. We will review our experiences after 30 minutes, discussing what programming concepts we have discovered. The final version of this assignment will be due in 2 weeks.

Syllabus Overview (30 minutes) Program a friend explanation (15 minutes) Programming (45 minutes)

Class 0x01

Languages and language design. Introduce javascript.

Exercise come up with a metaphor for a programming concept / program in a language you have never programmed before
Inspiration Show the same program in python, bash, piet, clojure, javascript, maybe with wikicode
Motivation get familiar with all the ways to express a concept

Class 0x02

motivation introduction to how operating systems work
inspiration kyle macdonald, r/glitchart

What is a file? We will create glitches

Class 0x03

motivation: quick prototypes, reuse of tools, composability, imperative programming
inspirations cat /dev/urandom > /dev/dsp, edit a file
The command line

30 minutes - tools and pipes 30 minutes - navigation and documentation

Show commandlinefu, stack overflow, manpages
What commands to teach?

Class 0x04

networks and communication

motivation be able to tap into the wealth of data out there

in this class, we do APIs :)

Class 0x05

Software as tools for reappropriation
Create a new piece of work only by combining existing data sources from the web

Motivation APIs Inspiration Girl talk, ART404

Class 0x06

Class 0x07

Class 0x08

Class 0x09

Class 0x0A

Class 0x0B

Class 0x0C

while(! self.sleeping()):
  eat(turkey || tofurkey)

Class 0x0D

Class 0x0E