Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Jim Campbell’s Formula for Computer Art

Critical APIs

NYU ITP, Spring 2015



An API allows a connection between two different applications. It can pass data and information, or provide access to modify or control the application itself. Though APIs are often thought of in terms of their functionality, they are never neutral. Expectations about why and how it might be used and who should be able to use it are embedded in the infrastructure of the system. This course will look critically at the structures of power and control inherent in APIs, and explore possibilities to subvert ideologies imposed by the technology. We will build applications that access various APIs, as well as design APIs of our own. Students will use Processing, as well as JavaScript for both server-side and client-side programming, covering tools such as JSON, OAuth, AJAX, node.js, p5.js, jQuery.

Central to the class is the idea that APIs are by nature future-oriented, providing an access point where we may reimagine and renegotiate the world we live in. The course will be project-based, complemented by shorter technical exercises, readings, and research. Experience with JavaScript is highly recommended.


Grades will be determined according to the following breakdown:

  • Project 1 20%
  • Project 2 20%
  • Project 3 20%
  • Participation and attendance 40%

Please see ITP's statement on Pass/Fail which states that a "Pass" is equivalent to an "A" or a "B" while anything less would be considered a "Fail". More than one absence will result in a fail.

The class will be a mix of seminar and studio:


There will be a number of readings for this course. Each reading will be prepared by one pair of students, who will read in depth and present a ~5 minute overview. Things to include in your planning / presentation might include:

  • Summary of main ideas.
  • Links, images, or video of projects / products / things referenced in the reading.
  • Other relevant things you've read, heard, or seen.
  • Personal experiences.

Each pair should also prepare 1-2 questions for the class. The questions could be specific to your reading or relating all the readings together. After hearing the presentations, we will have a short group discussion around these questions.

On the days you are not presenting, you do not need to read all of each reading, but you need to read/scan enough to be able to participate in the class discussion.

See the discussion page for readings. Sign up for the reading you'd like to present by putting your name next to it.


The class will be based around three short projects, due every two weeks. The first two are more constrained, the last is more open-ended. You should feel free to think non-traditionally, projects can take any form. You may work together.

The technical workshops in the class will use JavaScript. You are welcome to use any language or tool for your work.

See the projects page for more information.


Part 1: Protocol and control

Week 1 (3/25)

Week 2 (4/1)

Week 3 (4/8)

Part 2: Response and freedom

Week 4 (4/15)

Week 5 (4/22)

Part 3: Networks

Week 6 (Friday 5/1, 3:20-5:50PM **CHANGE)

Week 7 (5/6)


JS basics - tutorial

APIs - tutorial

Visualization tools

  • d3.js - JS library for manipulating documents based on data, using HTML, SVG, and CSS
  • p5.js - Processing reinterpreted for the web
  • raphael.js - JS library for manipulating vector graphics for charts and viz
  • dygraphs - JS charting library
  • Vega - describe data visualizations in a JSON format, and generate interactive views using either HTML5 Canvas or SVG
  • Gephi - interactive visualization and exploration platform for networks and complex systems



General tools



ITP Critical APIs, Spring 2015






No releases published


No packages published