Interactive technologies seldom stand alone. They exist in networks, and they facilitate networked connections between people. Designing technologies for communications requires an understanding of networks. This course is a foundation in how networks work. Through weekly readings and class discussions and a series of short hands-on projects, students gain an understanding of network topologies, how the elements of a network are connected and addressed, what protocols hold them together, and what dynamics arise in networked environments. This class is intended to supplement the many network-centric classes at ITP. It is broad survey, both of contemporary thinking about networks, and of current technologies and methods used in creating them. Prerequisites: Students should have an understanding of basic programming (Intro to Computational Media or equivalent). Familiarity with physical computing (Intro to Physical Computing or equivalent) is helpful, but not essential. Some, though not all, production work in the class requires programming and possibly physical and electronic construction. There is a significant reading component to this class as well.

Topics include:

  • topologies: how to think about them (nodes and links), how few workable ones there are, and how there's no topology so stupid it isn't in use some place.
  • addressing and routing: what a namespace is, three ways to generate a name (nesting, serial uniqueness, random pseudo- uniqueness), the difference between smart and dumb networks, why the phone network and the internet differ even though they use the same wires
  • protocols: envelopes and contents, the stack and the reference lie, end-to-end principles, reliability vs. speed tradeoffs
  • scale: more is different, scale breaks otherwise workable systems, makes redundancy and degeneracy critical, tends to push systems
  • a discussion of security and its effects

Exercises include:

  • Basic socket communication, both software and embedded hardware versions
  • Client-server programming
  • An HTTP/RESTian model exercise