Critical APIs

NYU ITP, Spring 2015

Overview

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.

Evaluation

Grades will be determined according to the following breakdown:

  • Project 1 25%
  • Project 2 25%
  • Final Project 25%
  • Participation and attendance 25%

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".

The class will be a mix of seminar and studio:

Discussion

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 and lead a discussion around the ideas in it. The goal is not to just give a report, but to engage the class in an interesting and provocative discussion. Things to include in your planning / presentation 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.
  • Questions for the class related to the reading.
  • Questions for the class that relate all three of the readings together.

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.

Sign up for the reading you'd like to present on by putting your name next to it in the syllabus.

Projects

There will be three projects during the class. The first two will have more specific guidelines, and the final project will be open. For the first two projects, you may actually implement something, or you may present a conceptual mock-up of an idea. The final project must be something you actually create, not just a concept. It may expand on one of the earlier projects.

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

Syllabus

Part 1: Protocol and control

Week 1 (1/28, 3/25)

Week 2 (2/4, 4/1)

Week 3 (2/11, 4/8)

Part 2: Response and freedom

Week 4 (2/18, 4/15)

Week 5 (2/25, 4/22)

Part 3: Networks

Week 6 (3/4, 4/29)

Week 7 (3/11, 5/6)

  • Review Final Projects
  • Wrap-up

Resources

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

APIs