To learn how the Internet works is to learn civics

*Update* This post was originally titled “Teach not coding but architecture,” which is still reflected in the permalink. I have however updated the title to reflect a far better one proposed by Jonathan Zittrain on Twitter.

My colleague Nicklas Lundblad has a good post this weekend on the virtues of teaching computer science. I felt so immediately jarred by a missing piece of the argument that I was compelled to sign in and blog for the first time in months (an absence I feel tremendous guilt about). His argument is spot-in, but misses a very simple yet critical addendum.

My own education in computer science of course influences my views on the matter. I often tell people, somewhat jokingly, that despite beginning my technical studies at an all-women’s college, I have an ex-boyfriend to thank for the decision. My high school sweetheart was desperately passionate about technology, and in my freshman year of college I made an attempt to bridge the physical distance between Boston and California by bridging an intellectual one instead.  I endeavored to take the introductory CS class at Wellesley in large part because it was what he was so passionate about….but I promptly fell in love with the subject myself.

CS is a liberal art. This was a time-honored debate our professors engaged us in. Many of them came from engineering schools but wound up teaching the subject at a liberal arts school, and so had strong views on the subject. As do I, now. It is absolutely a subject that teaches you how to think—not just how to build. Building is a side effect of the discipline, a very useful one, but nonetheless a side effect.  So here, I agree 100% with Nicklas when he says:

Computer science offers a new way to understand the world, to think about it as algorithms and data structures and data sets. That is extremely powerful. So should we teach kids coding instead of teaching them to cut and paste in word processing software? It does not seem to be a very hard question does it?

Where I disagree is that I don’t think coding is enough of a prerequisite. Like advanced biology or chemistry it should be included in the standard curriculum. But the core class we aren’t teaching our kids that we need to be is Internet Architecture—that should be like government or civics classes are today: a prerequisite for graduation.

After college I somehow found my way into MIT’s Technology & Policy Program. Like most other new graduate students, I spent the first few weeks of my time at MIT on the job market looking for a RA or TA position to help pay the bills. In our case, the TPP program required that we find a research advisor also, which usually dovetailed with finding an RA position. I stumbled into Dave Clark’s office one day to ask for a job, completely unaware of his stature in the Internet community. He asked if I’d read his paper about the end-to-end principle and I said no, could he tell me about it? What followed from that initial conversation was by far the most meaningful educational experience of my life.

For the next two years I would work with Dave on research topics relating to identity and net neutrality. Each week, I would sit down with him for an hour and get an individual tutorial on how the Internet worked and the history of its design. I learned early on what an IP address was, and how TCP/IP worked—amazingly, I wound up graduating college with a CS degree without understanding those concepts. I could code when I left college, and I could think about problems through this lens—it had undoubtedly changed the way I thought about the world. But despite a college degree in CS I fundamentally had not learned the basic governance principles of the Internet.

To appreciate the mechanisms through which information can be exchanged and manipulated is to appreciate the mechanisms through which people are able to organize and communicate. To appreciate the processes through which technical standards are agreed upon is not unlike appreciating the processes through which laws and regulations are agreed upon. We teach all high school students how a bill becomes a law. Why don’t we teach them how a packet becomes an email?

I went to college with a lot of women who were interested in politics and economics, who aspired to careers in public service, and whose interests lay in questions of how society organizes itself. The women I know who are now working in these fields are having and will absolutely continue to have an impact on the world. But I would dare any of them to name a field of public policy not currently impacted by or disrupted by the Internet. Understanding how to write code that builds an isolated piece of technology is like understanding how to read and write, or knowing the ins and outs of a particular subject like Biology. But understanding how the Internet works is like understanding the way society is governed. The architectural design should be taught in high school, the same way we teach about the design of the US Constitution.

This might seem like a radical recommendation, but there it is. Lessig wrote “Code is Law” which is basically the same idea, but had the unfortunate side effect of focusing everyone’s attention on coding. And I suppose that most engineers get to a place where they understand the architecture of the net by starting out writing code. But I don’t believe that being able to write code is a prerequisite to understanding the design of the architecture, and therefore in my view teaching the architecture is the mandatory prerequisite we don’t have yet. We should be equipping people to answer the simple question: how does the Internet work?

This entry was posted in Uncategorized. Bookmark the permalink.

14 Responses to To learn how the Internet works is to learn civics

  1. Aaron Sloman says:

    Dear Betsy,

    I completely agree with you — and Dave Clark and I met at a DARPA workshop in 2002 where we agreed also, having reached related conclusions independently. My PDF presentation on architectures at that event is (though some of the links to other documents are now defunct).

    I go further than you because it’s not just the architecture of the internet that youngsters need to learn to think about. Minds have architectures, and in the case of humans those architectures develop over time. There are different information processing architectures in different organisms and we need to understand those differences in order to understand the problems and achievements of biological evolution. My first attempt to explain all this was in my 1978 book “The computer revolution in philosophy” especially chapter 6, available on-line Later chapters (also on-line now) develop the importance of architectures in specific contexts, e.g. a child learning about numbers, the functions of a visual system.

    When teaching programming to absolute beginners, I used to introduce a toy chatbot (a simple Eliza) and emphasised the need to think about architectures from that early stage:

    For more sophisticated students and researchers, my colleagues and I developed a toolkit for exploring alternative agent architectures (the SimAgent toolkit).

    I don’t think I have been able to persuade other teachers about the importance of this. So I was delighted to find that you had reached similar conclusions about the dangers of emphasising coding, as so many others have been doing recently. Of course coding is important — without it one cannot develop and test an architectural idea, but its only one of several important aspects of a computing education — others include analysis of problems, comparison of designs, testing, evaluation and comparison of implementations of the same design, etc. And it’s also important to emphasise the importance of a computing education as preparation for studying natural information processing systems, not just products of human engineering. (The influence can go in both directions.)

    One of the most important points that not everyone grasps, but is essential for understanding the internet as well as minds, is the difference between layered architectures, e.g. where virtual machinery at one layer is implemented in machinery in another layer, and vertically divided architectures where coexisting components interact.

    Causal routes between different parts of the architecture and an independently existing environment are also important — that’s one of the main drivers of both biological evolution and system design.

    Best wishes.


  2. End-to-end isn’t a principle of network architecture, it’s a craftsman’s rule of thumb. The trouble with Internet Architecture is that there isn’t one, it’s the Emperor’s Clothes. Any system that professes to consist of rough consensus and running code is, by its own admission, absent an architecture. It’s simply an assemblage of random parts.

    It would be nice if CS departments really did teach network architecture, but they’re too lazy and self-satisfied to cover such a rigorous topic so they essentially teach “The History of Internet Coding” in its place.

  3. Jack Repenning says:

    I learned of this nice article through a tweet originally from @zittrain, which retitled it “To learn how the Internet works is to learn civics.” That might be a better handle on this great idea than “architecture.”

    I recall when the standards that became TCP/IP were coming to be, vast working meetings by design folks from all the companies of the Internet. Problems were discovered, variant solutions were proposed (usually of the “we’ve already written this” variety), disagreements flared, corporate representatives had that haunted look that means “I may have to tell my boss we have to rework millions of dollars of implementation.” Loggerheads. Impass.

    And then, all eyes would turn to a bearded, Birkenstockian fellow named Jon Postel. And he would say ” … … … … no … … … …” Or maybe “yes”.

    And horns were pulled in, and compromises blossomed, and the Internet was born.

    Now, *that’s* civics!

    • betsym says:

      @Jack I agree, “To learn how the Internet works is to learn civics” is a much better soundbite for this idea!

    • Excuse me, but when TCP/IP was developed (from 1973 to 1978, more or less,) corporate interests weren’t involved and Jon Postel was not the referee. That all came a decade later.

  4. Matt Perez says:

    Right on the money!

    Early on people would ask “but who runs this thing?” We should make sure that future citizens of the world know the answer to this most fundamental of questions.

  5. Batarang says:

    We are the machine we’ve been waiting for.

  6. I think this is a very dangerous misconception – “But understanding how the Internet works is like understanding the way society is governed”. No, no, no. This is a version of divine mandate except instead of God you’ve replaced it with The Machine (e.g. Network). It’s the sort of reading a preferred politics from a technology that tends to go badly, because it’s pure story-telling. Think of Social Darwinism, which used evolutionary theory to “understand” why robber-baron capitalism was the natural order of things. In a way, you’re going down the old path of looking for a technical solution (how the Internet works) for a social problem (civics).

    • betsym says:

      Re: looking for a technical solution for a social problem—quite the opposite, I think. Understanding the Internet is a key piece, but hardly sufficient on its own, for solving social problems today. That’s my main point. By civics I don’t mean social problems, I mean the set of baseline knowledge and skills that one should know to be a productive citizen—understanding how the Internet works should be included in that canon of knowledge. To solve social problems in this century, we’re going to need to understand the context in which those problems will play out: the Internet.

      • The problem with that view is the underlying assumption that the way the Internet works today is the way it should always work, is the best way for it to work, or is even rational.

        As Seth suggests, there’s an implicit deification of a technical system that actually tends to work the way it does for a variety of technical and historical reasons, some of them good, some of them arbitrary, and some of them plain wrong. But it works the way it does for the time being and a set of human institutions have grown up around the Internet to keep it operating day-to-day because it requires a particular form of care and feeding.

        These institutions – such as NANOG and ICANN – unfortunately add to the technical inertia that prevents us from replacing the Internet’s technical system with one that would better meet the social needs and the expectations that we have for systems that do what we think the Internet does.

        When the PSTN and the telegraph were the dominant technical communication systems of their particular days, social theorists didn’t deify their technical or institutional systems as vital knowledge for citizens; it was enough to know how to use them.

        There’s a great deal of arrogance among the Internet’s booster community, a great deal of denial about the Internet’s shortcomings, and most destructively there’s a tendency among some boosters to try to pass off its shortcomings as virtues. Few technologies have ever been burdened by the inertia that such attitudes cause.

        Consider that the cell phone is used by more than twice as many people as the Internet, is roughly as old as the Internet, and has improved more people’s lives in more dramatic ways than the Internet and the ask yourself why it’s not more important to learn civics from how the cell network is designed, operated, and managed.

      • I was going to skip a reply that the automobile shapes much of our society, but all citizens don’t need to understand how the internal combustion engine works. Then I saw this cartoon:

  7. Zach Stein says:

    There’s definitely something to be said for writing elegant code and doing it well, but computer science is definitely more than just coding. I’d liken coding and languages to learning to write in English proficiently enough to produce a lab report. You can’t pass freshman chemistry without being a competent writer, similarly you shouldn’t be able to call yourself a computer scientist without being able to write good code.

    I’d also take the idea of computer science as a liberal arts education a little bit further than simply stressing architecture. I think in order to have a well rounded computer science education you need to take a wide array of courses, and not just in the computer science department. Personally, I only minored in computer science, but I work as a software engineer professionally and I think that not having been a computer science major has been to my advantage. I think that every computer science student should have an introductory philosophy course (it helps with reasoning and logic), symbollic logic (basically philosophical programming), a physical science (like chemistry or physics), multiple writing courses, and of course math (INCLUDING STATISTICS!).

    A lot of things in computer science are conceptual, like the 7 layer model in networking architecture. But I also think that a course about networking would be doing the student a disservice if it did not require the student to implement some of these concepts, like perhaps a simple version of the TCP/IP stack. Similarly, when I took algorithms, we did mathematical analysis, written descriptions, and also had to hand in assignments that were working versions of these algorithms (written in the language of our choice, generally C++)… When we discussed Dijkstra’s algorithm we had to create a working version of it and our program had to read an adjacency matrix and determine the shortest path between two arbitrary points.

    Good pedagogy, in any subject, includes an appropriate combination of theory, real world practical examples, discussion, and related issues.

  8. David Galiel says:

    Far more young Americans can name the judges of American Idol than can name a single Supreme Court Justice.

    For that matter, more people voted for the American Idol finalists in 2010, than were cast in the US national elections that same year.

    Less than a quarter of eligible voters age 18-24 bothered to vote in 2010, vs 60% of those age 65 and older. Guess who gets to decide who can introduce what bills when, and who gets to decide if they even come up for a vote, much less whether or not they have the votes to become a law.

    Please explain how learning how a router works is going to fix that.

    the core class we aren’t teaching our kids that we need to be is Internet Architecture—that should be like government or civics classes are today: a prerequisite for graduation…

    …We teach all high school students how a bill becomes a law

    Actually, we don’t. Haven’t for 15 or 20 years. Not in real America. Maybe in Norman Rockwell’s America, or a corporate lobbyist’s fantasy of the America they see through the windows of a jet flying 30,000 feet off the ground – where actual people are too small and insignificant to be visible.

    In real, public school America, “government and civics”, as you talk about them, have either been:

    A) cut altogether (along with art, music and theater and everything else that makes for a better citizen/human being)–during boom years, ironically, because go-go VC-funded digerati couldn’t be troubled to support local taxes to better the public schools their affluent children didn’t attend;
    B) redefined as Learning How Free Markets Work , in Our Christian America, in the same way ketchup was redefined as a “vegetable” for school lunches (and by most of the same people, whom most young Internet-savvy citizens couldn’t be troubled to vote out of office).

    Throughout most of the non-North/Coastal America, in those states where there is *any* civics requirement, it consists of a single, solitary unit, most commonly split into two parts, with half a unit dedicated to “Free Markets” (actual unit title) and the other half unit spent learning revisionist American history where Thomas Jefferson has been redacted and replaced by Phyllis Schlafly, and Newt Gingrich is considered a viable candidate for President of anything besides his own fan club. Not that most of the Northern/Coastal public schools are much better. They’ve mostly decided just not to teach the controversy.

    How a bill becomes law, or anything resembling traditional civics is long gone from public school education. And most colleges in America, public or private don’t, in fact, require CS graduates, or anyone not majoring in the Humanities, to take a single class, nary a single lecture, in government or civics in order to graduate. Every community college in America does not provide the kind of education Wellesley and Oxford do. In point of fact, there are only a handful of traditional, liberal arts colleges left in this country, public or private– the kind that think it matters as much whether you have read Milton, watched Madam Butterfly and appreciated Monet, as it does whether you can milk a VC for start-up cash using packet-switching flapdoodle.

    To appreciate the processes through which technical standards are agreed upon is not unlike appreciating the processes through which laws and regulations are agreed upon…

    …understanding how the Internet works is like understanding the way society is governed.

    Except in the ways in which is it totally different, which is nearly all of them.

    What this country needs is not classes about packet-switching in high school in lieu of teaching young citizens how bills actually become law in our representative, centralized, hierarchical, triple-branched, not-anything-like-packet-switching, American political & governance systems.

    What we desperately need is for privileged young digerati like you to spend a few weeks outside your IP tower educating–and registering—young voters in the poorest, least connected (in every meaning of the word) neighborhoods in America, explaining to them why their vote does matter. And/or lobbying taxpayers at the state and local level to restore public funding of public education, and for real-world civics to be taught to every American.

    Or – here’s a concept – actually teaching real, non-packet-switching civics in an inner-city public school.

    Call it a “civics vacation” if that sound appealing, since the term “public service” is so out of vogue these days.

    Better yet, call it, “Leveling up in America”, since the latest net-dazzled answer to every real-world issue affecting the real lives of real people is to “gamify” it. You could run contests to see who can last longest among the great untwittered.

    It might be, dare I say it, educational.

    Among other things, you might deprogram yourself from the illusion that what is good for whatever corporation happens to be paying your bills to promote its corporate interests at the moment is inherently indistinguishable from what is good for America.

    Meanwhile, you know what the #1 response is going to be to this comment from the most Internet-savvy of your readers?


  9. Sabahattin Gucukoglu says:

    A very nice bit of reflection. It’s the social aspect of the Internet that drives me, a blind standardista, to it, ultimately. Sad to see people not bridging the gap between that particular flavour of socialism and real-world advancement, but oh well, much as to be expected. I urge such people to go read some RFCs and join the development effort in making an open Internet to serve people and things and bring them closer together, instead of likening everything to corporate interests or simple matters of technology with no purpose other than the advancement of material goals. No surprise that email was how I first learned to respect the standards process, and still do.


Comments are closed.