Thomas Igoe
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.
Possible 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
Possible exercises include: - Basic socket communication, both software and embedded hardware versions
- Client-server programming
- A group protocol/messaging exercise
- An HTTP/RESTian model exercise