Do we treat algorithms as a religion? Computing education to de-mystify the algorithmic world

February 18, 2015 at 7:56 am 6 comments

Ian Bogost believes that an “algorithmic society” is a myth, and believes that we treat algorithms as a religion.

I don’t want to downplay the role of computation in contemporary culture. Striphas and Manovich are right—there are computers in and around everything these days. But the algorithm has taken on a particularly mythical role in our technology-obsessed era, one that has allowed it wear the garb of divinity. Concepts like “algorithm” have become sloppy shorthands, slang terms for the act of mistaking multipart complex systems for simple, singular ones. Of treating computation theologically rather than scientifically or culturally.

This attitude blinds us in two ways. First, it allows us to chalk up any kind of computational social change as pre-determined and inevitable. It gives us an excuse not to intervene in the social shifts wrought by big corporations like Google or Facebook or their kindred, to see their outcomes as beyond our influence. Second, it makes us forget that particular computational systems are abstractions, caricatures of the world, one perspective among many. The first error turns computers into gods, the second treats their outputs as scripture.

via The Cathedral of Computation – The Atlantic.

I respond with another quote:

“And this is that decision which are going to affect a great deal of our lives, indeed whether we live at all, will have to be taken or actually are being taken by extremely small number of people, who are normally scientists. The execution of these decisions has to be entrusted to people who do not quite understand what the depth of the argument is. That is one of the consequences of the lapse or gulf in communication between scientists and nonscientists. There it is. A handful of people, having no relation to the will of society, having no communication with the rest of society, will be taking decisions in secret which are going to affect our lives in the deepest sense.”

That’s C.P. Snow in 1961 (Computers and the World of the Future, ed Martin Greenberger, MIT Press), talking about why everyone on campus should (explicitly) learn algorithms. He foresaw the “algorithmic culture” where algorithms control “a great deal of our lives, indeed whether we live at all.” He had two concerns. One was that the people writing those algorithms are making decisions when they implement them that don’t reflect social or political will. The second was that the “nonscientists” were unwilling to learn the algorithms. Explicitly, Snow’s argument was that those who don’t understand algorithms are at the mercy of those who do. His book, The Two Cultures, blamed the nonscientists for not making the effort to learn the science and algorithms so that they could participate in scientific discourse.

Today, Snow might agree with Bogost. When we don’t understand the algorithms that control our lives, we might see them as divine or magical.  Arthur C. Clarke famously said, “Any sufficiently advanced technology is indistinguishable from magic.”  The corollary (see here) is a better explanation of the phenomena that Bogost describes, ” Any technology, no matter how primitive, is magic to those who don’t understand it.”

I use the above quote in my talks on why we need computing for everyone. Snow is arguing that CS Education is a critical part of a functioning “algorithmic society.” If our social processes and rules are built into the software, not understanding algorithms keeps you from understanding and influencing the algorithms that control your life. Thomas Jefferson said, “An educated citizenry is a vital requisite for our survival as a free people.” Knowledge about computing is part of that education that keeps the citizenry free in today’s algorithm-driven world.

The onus to enable citizens to be free in an algorithm-driven world is on us in computer science, not on the citizenry alone.  We have too much power to hide our algorithms behind interfaces and firewalls.  We have a responsibility to make the computational world (and the algorithms that run it) accessible and understandable.  As Diana Franklin said in her recent CACM essay (which I mentioned here), it’s up to computer science to make computing education work.

Entry filed under: Uncategorized. Tags: , , .

People of ACM: Mehran Sahami, Co-Chair of ACM Ed Board Why Some Teams Are Smarter Than Others: Have more women on the team

6 Comments Add your own

  • 1. Raul Miller  |  February 18, 2015 at 8:40 am

    I have some problems with C.P. Snow’s reasoning.

    One issue has to do with the structure of society, and the nature of social will. It seems to me that social will is contextual – social imperatives at one level of abstraction often conflict with social imperatives at other levels of abstraction. Or, more simply: reasonable people may quite reasonably disagree on important issues.

    (Consider, for example, some recent announcements by the FBI where the FBI director opposes the use of encryption and his staff are in favor of the use of encryption. If that is not a indication that people should be free to make their own decisions on this issue, then I don’t know how it is possible to make a clear statement about such things in any context.)

    (Or, consider the social need for diversity of thought and experience – it can be impossible for a person to represent a conflicting person’s contribution in this regard, unless they first abandon their own contribution. On the other hand, a person with a depth of contribution may appear to others to have deep internal conflicts. Furthermore: some forms of diversity might depress some while delighting others.)

    Another issue is that the long term social implications of a particular algorithmic decision are often obscure. For example, a good UI enables some kinds of work while disabling other kinds of work. Furthermore, some people might describe this issue using dichotomies such as arrogance/humility or good/evil or happiness/regret while others might describe this issue using abstractions such as specialization or focus, while yet others might simply ignore this aspect and focus on the pragmatics of the implementation or simply follow someone else’s lead.

    Finally, in my experience, Arthur C. Clarke was sometimes correct but that this concept is often used incorrectly. Yes, it’s true that people may treat technology that they understand as “magical”. But a large number of people think of concepts of magic in terms of disgust. All too often people think they understand something but have a model of what’s easy and what’s hard based on experiences which are at odds with or even in conflict with another person’s experiences.

    For that matter, getting things done often involves being able to discard irrelevant technology and/or the ability to recreate a viable instance of relevant technology.

    Put differently: I while I agree, somewhat, with the goal C.P. Snow expresses — that people should learn about algorithms — I arrive at my agreement with that goal by disagreeing with C.P. Snow’s reasoning about motivations. And, I also feel that other people might wind up opposing that goal for reasons of their own (which will have elements which are incomprehensible to me but which will have other elements that I have considered).

  • 2. alanone1  |  February 18, 2015 at 9:22 am

    Just to hop on the bus, there doesn’t seem to be a lot of understanding of computing in computing — for the most part the field has done a terrible job of scaling itself and to take advantage of the few good ideas that have arisen in the last 60 or so years.

    The generally poor practices and what gave rise to them are also reflected in quite a bit of computing pedagogy — for example, the emphasis on “algorithms and data structures” (the very stuff of 50s computing) as opposed to “design, systems, scaling and UI” (which have been the center of computing advances since the mid-60s).

    Another critique would be along the lines of the field being unable to deal with the term “science” in “computer science” as other than a designer jeans label slapped on to add “loft” where the field has almost none. (Part of what Ian is worrying about, is precisely the lack of the kind of epistemological perspective that real science requires from it’s representation systems.)

    I think it would be good for everyone to learn “real science”, including “real computer science”, but I think the pedagogy for either — especially the latter — hasn’t appeared in most parts of education.

    • 3. Mark Guzdial  |  February 18, 2015 at 1:34 pm

      I’ve been thinking along a similar line, Alan. How much of what we do in computing is needlessly complicated because we don’t really understand what we’re doing?

      I used to do a little “How much computing do you already know?” quiz at the start of my sophomore level class in object-oriented design using Squeak. One of the problems was, “Print out all the times tables from 0 to 10, from 0*0=0 to 10*10=100.” About 25% of the class did it with WHILE loops. One time, I took aside one of those students who used a WHILE loop and asked, “Why not use a FOR loop? It’s about 3 lines of code that way.” He said, “I was told that WHILE was more flexible than FOR, so I studied and practiced that and never learned FOR.”

      How much of what we do is because we learned only one way to do something, and don’t know how to express it in the easier, shorter, more understandable way? We learned one way, and just keeping doing that, because we don’t bother to find another way?

  • 4. Eric Gilbert  |  February 18, 2015 at 9:44 am

    Nice post, Mark!

    Also, there’s been very little research on human-interpretable algorithms: ones that can explain themselves to people. Not impossible to imagine; HCC meets CS theory.

    • 5. Mark Guzdial  |  February 18, 2015 at 1:35 pm

      That’s a really interesting idea, Eric. It’s akin to Annie Anton’s work on how to express privacy laws in ways that programmers understand it, and Casey Fiesler’s work on how to express terms-of-service agreements in ways that users understand them. How do we express algorithms in such a way that end-users understand the implications for them?

  • […] When I give talks about teaching computer to everyone, I often start with Alan Perlis and C.P. Snow in 1961. They made the first two public arguments for teaching computer science to everyone in higher education.  Alan Perlis’s talk was the most up-beat, talking about all the great things we can think about and do with computer.  He offered the carrot.  C.P. Snow offered the stick. […]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 6,143 other followers


Recent Posts

Blog Stats

  • 1,607,268 hits
February 2015
« Jan   Mar »

CS Teaching Tips

%d bloggers like this: