June 2, 2004

Procedural Literacy: An Idea Whose Time has Come (43 years ago)

by Michael Mateas · , 9:57 pm

Previously at GTxA we’ve discussed the issue of whether media artists and theorists should program (1 2 3 4), mentioned Mary Flanagan’s and Ken Perlin’s new procedural literacy project, and generally championed the idea that new media artists, game designers and theorists, media and software studies theorists, and generally anyone involved in cultural production on, in or around a computer, should know how to program. Of course people have been talking about the importance of procedural literacy for awhile, with Seymour Papert describing his work with teaching children to program in Logo in the 1980 book Mindstorms, Alan Kay and Adele Goldberg describing procedural environments in which everyone, including children, can build their own simulations in the 1977 paper Personal Dynamic Media, and Ted Nelson crying in the wilderness that “you can and must understand computers NOW” (including programming) in his 1974 Computer Lib/Dream Machines. But a couple of months ago Mark Guzdial turned me onto an even earlier argument for universal procedural literacy, one given by A. J. Perlis in a talk at a symposium held at M.I.T. in 1961 to celebrate its 100th anniversary, and published in the collection Management and the Computer of the Future, Martin Greenberger (Ed.), MIT Press. The symposium consisted of 8 talks, with two discussants responding to each talk, and was attended by such luminaries as C. P. Snow, J. W. Forrester, Herb Simon, J. McCarthy, and A. J. Perlis. Perlis’ talk, The Computer in the University, focused on the role the computer should play in a university education.

Perlis begins by describing current common uses of the computer in university settings, primarily for numerical analysis. He notes that most university computer use is characterized by “…extensions of previously used methods to computers; and they are accomplished by people already well trained in their field who have received most of their training without computer contact” [186]. He notes that most students learn to use computers in relatively haphazard ways, either driven by the need of some particular application, or in the context of a numerical analysis course that is primarily focused on teaching numerical methods, or on their own, or in a course that teaches some particular programming language. None of these approaches focus on the teaching of computation per se. In describing the programming language approach, for example, he writes:

A credit course involving the use of some automatic programming language is provided. Fluency in ‘conversation’ with this language and clear understanding of the language’s grammar are the intent of such a course. Here, too, the approach suffers from limited and even misguided pedagogic objectives; and the result is a student well conversant in, say, Algol 60, but still very likely uneducated as to the scope of computation. [187]

Note that this approach is similar to the way computing is currently taught in media arts programs, primarily as a black box tool (substitute Photoshop or Director for Algol 60) rather than focusing on the conceptual possibilities of computation itself.

Perlis goes on:

These approaches all fall far short of what is urgently needed. Whatever appreciation of computers they invoke comes too late in the education program and is inevitably too parochial. It is thus important to state quite clearly when the computer and the student should first meet and what should be the nature of their first acquaintance. As others have stated in other contexts, the product of a university education should receive training directed to the development of sensitivity, rationality, and an intelligent table look-up procedure.

Sensitivity, as the poet MacLeish so aptly has said, is a feeling for the meaning and relevance of facts. Rationality is fluency in the definition, manipulation, and communication of convenient structures, experience and ability in choosing representations for the study of models, and self-assurance in the ability to work with the large systems that are unfortunately necessary for modeling and solving the important problems of our times. Table look-up, of course, refers to the mechanism for gaining access to a catalog of facts and problems that give meaning and physical reference to each man’s concept of, and role in, society. While the computer may conceivably play a small role in the development of human sensitivity, it is quite critical to the other two developments. Indeed, no other mechanical instrument combines so well the theoretical and practical balance necessary to these two developments. [187-188]

While steeped in a scientistic language likely to immediately raise hackles (rationality, table look-up), Perlis argues that the purpose of a university education is to help students develop an intuition for which problems and ideas are important or relevant (a cultural grounding for knowledge), teach students how to think about and communicate models, structures and ideas, and teach students how to educate themselves by tapping the huge cultural reserves of knowledge. The computer plays a critical role in two out of these three areas, and as we’ll see below, he later agrees that it actually plays a critical role in all three.

Consequently, it is felt that the first student contact with the computer should be at the earliest time possible: in the students freshman year. This contact should be analytical and not purely descriptive, and each student during this first course should program and run or have run for him a large number of problems on the computer. At least in engineering and science programs, this course should share with mathematics and English the responsibility for developing an operation literacy, while physics and chemistry develop the background toward which this literacy is applied. In a liberal arts program the course could be delayed until the sophomore year, but certainly deserves inclusion in such a program because of the universal relevance of computers to our time. [188]

He then goes on to admit that the optimum content for such a course is not yet known, but goes on two describe a two term course then being developed at Carnegie Tech (now Carnegie Mellon).

During the first term the students wrote programs in a symbolic machine code, the Carnegie TASS system; and during the current term they are writing their codes in GATE, the Carnegie Algebraic Language system. Coding in machine language, they are taught mechanical algorithms of code analysis that enable them to do manually what the GATE translator does automatically. In particular, they are becoming adept in decoding complex logical relations to produce branching codes and in manual decoding of complex formula evaluations by mechanical processes. The intent is to reveal, through these examples, how analysis of some intuitively performed human tasks leads to mechanical algorithms accomplishable by a machine. [189]

Notice that in this early course there’s a focus not on particular languages or tools, but on how the computer can be transformed into any language or tool, with a focus on process and representation.

In much of the rest of the article he proudly describes Carnegie Tech’s automated grading program, some dubious drill and test approaches to teaching computer language syntax, and the necessity for the development of time sharing so that students can be “in the computer loop” while writing and executing their programs. While most of his examples focus on science and engineering education, the argument is clear: procedural literacy is a necessary component of a general education.

Several respondents then comment on Perlis’ talk, including Peter Elias and J. C. R. Licklider. Elias disagrees with the fundamental importance of programming.

Perhaps our most serious difference is in predicting the ultimate state of affairs when time-shared computers are available on every campus and good symbolic processing languages are in use. By that stage it sounds to me as though Perlis would have programming assume a large role in the curriculum, while I should hope that it would have disappeared from the curricula of all but a moderate group of specialists.

I have a feeling that if over the next ten years we train a third of our undergraduates at M.I.T. in programming, this will generate enough worthwhile languages for us to be able to stop, and that succeeding undergraduates will face the console with such a natural keyboard and such a natural language that there will be very little left, if anything, to the teaching of programming. We shall continue, of course, to have a group of students who are interested and specialize in numerical analysis per se or programming per se. But I hope that this does not continue to have to be a major concern for the large majority of people doing any kind of scientific or engineering work.

I think that if we stop short of that, if it continues to demand as much effort to learn how to speak to machines as it costs us to teach students a course for a couple of semesters, then we have failed. I do not see anything built into the situation which requires as much as that. [203]

Elias desires the development of frictionless tools that, like the computers on Star Trek, with little work allow us to make the computer do our bidding (e.g. “Computer, gather data on the anomaly, correlate it with all known space phenomena, and suggest a course of action.” Computer: “Done”). The problem with this vision is that programming is really about describing processes (as Perlis himself will say in a moment), describing complex flows of cause and effect, and given that it takes work to describe processes, programming will always involve work, never achieving this frictionless ideal.

Licklider responds:

Pete [Elias], I think the first apes who tried to talk with one another decided that learning language was a dreadful bore. They hoped that a few apes would work the thing out so the rest could avoid the bother. But some people write poetry in the language we speak. Perhaps better poetry will be written in the language of digital computers of the future than has ever been written in English. [204]

What I like about this is the recognition that computer languages are expressive languages; programming is a medium. Licklider continues:

Let me explain myself. I am just a psychologist who has had the rare and wonderful opportunity of some contact with computers and some associations with computer people. All I can bring to you, I think, is a little more enthusiasm than my two colleagues here have brought with them. [204]

Amusingly self-deprecating words from the man who will become a major architect of DARPA’s computer science research strategy, and who’s agenda will drive much of the work in interactive computer systems and artificial intelligence for the next couple of decades.

With most of Perlis’ concepts and ideas I agree enthusiastically… The only exception is that you [Perlis] said that the computer would not do anything toward the creation of sensitivity, and with which I disagree wholeheartedly.
Perlis: I disagree with it too. [204]

So here he have the computer strongly incorporated into all three aims of the university, opening the door for thinking about computers in the context of cultural production. Licklider spends the rest of his remarks outlining his well-known vision combining artificial intelligence with rich interfaces to turn the computer into a real-time, interactive, intellectual partner. Much of the discussion centers around the hot, emerging topic of the time: time-sharing. In this context, Licklider makes the following curious remark.

I want to say that although nobody really has tried time sharing yet, enough people have gotten to sit with a big computer for a couple of hours to feel morally certain of the possibilities. I hope you will not mind if I illustrate this. One of my friends has a sign on his wall which says, “Put your clothes back on, lady, I’m a computer man.” The point is that once you get anywhere near something like the man-machine system which Minsky envisages, you know you really want it. [213]

While certainly illustrating that Licklider is a product of his time, a member of the sexist, early ’60s culture of science and technology, this statement is also interesting in pointing to the huge desire that existed within computing culture for real-time interactive computing systems, as well as serving as an indicator for the idealist urge, historically tied into the AI/interactive system vision, to transcend the body and the world of matter.

In Perlis’ response he clarifies his argument as to the central importance of procedural literacy.

Perhaps I may have been misunderstood as to the purpose of my proposed first course in programming. It is not to teach people how to program a specific computer, nor is it to teach some new languages. The purpose of a course in programming is to teach people how to construct and analyze processes. I know of no course that the student gets in his first year in a university that has this as its sole purpose.

The course in calculus that is taught in most universities today is so covered by a mass of techniques that are completely and totally associated with the task at hand that the fundamental processes are recognized only with difficulty by many students. In physics one tries to get insight into the basic physical laws in the first course; but one is talking about physics. In chemistry the course is divided up into perhaps two parts… But you are talking about chemistry, and in many students’ minds the logic is never separable from the chemistry. In English you are concerned with grammar. You learn to express yourself precisely; you learn how to write; and you learn how to write only in English.

A course in programming, on the other hand, if it is taught properly, is concerned with abstraction: the abstraction of constructing, analyzing, and describing processes. It is not the particular problem content of numerical analysis or analyzing a problem statement which is important. Rather, it is possible to skip from problem area to problem area and still stabilize on the concept of process design and analysis. Thus in a programming course, much more than in any of these other courses, it is possible for the student to abstract ideas from the particular examples given…

This, to me, is the whole importance of a course in programming. It is a simulation. The point is not to teach the students how to use Algol, or how to program the 704. These are of little direct value. The point is to make the students construct complex processes out of simple ones (and this is always present in programming), in the hope that the basic concepts and abilities will rub off. A properly designed programming course will develop these abilities better than any other course. I do not have proof that this is true. I only have very little evidence of it. But this is why I think the course should be taught.

Here Perlis makes it clear that programming is a medium, in fact the medium peculiarly suited for describing processes, and as such, a fundamental component of cultural literacy, and a fundamental skill required of new media practitioners and theorists.

30 Responses to “Procedural Literacy: An Idea Whose Time has Come (43 years ago)”


  1. B. Rickman Says:

    So do you think these guys tried to create a “procedural literacy” revolution for education and failed, or has that revolution yet to occur? I find it ironic that you are calling for the same things they wanted in the 60’s, when the education system is the way it currently is because of what they wanted to do in the 60’s.

  2. andrew Says:

    As a footnote, starting in the late eighties or early nineties, Carnegie Mellon required all freshmen, regardless of major, to take a semester of Computing Skills Workshop, that introduced them to the suite of software on the campus computing system, Andrew. At the time (and perhaps to this day, 15 years later?), that was an unusual course requirement. There was no programming involved, however.

    As an undergrad at CMU, I became one of the many TA’s for this course. While it was difficult enough to get a painting major to use Excel, I like to imagine that a few weeks could have been spent introducing programming concepts. However I wonder if Perlis realized just how dreadful of a process that would be for some students, who would probably loathe the thought of describing processes in the abstract. I’ve heard some say they think everyone has the capability to program, and while technically this may be true, in practice it could be that for some, just the concept of abstractly representing processes feels so cold and mechanical, they could never bring themselves to do it, or at least not without kicking and screaming.

    If anyone has any links to articles on the topic of “why I hate programming”, please share them, it would be interesting to better understand the obstacles to the ideal of procedural literacy.

  3. Rob Says:

    My experience of TAing Intro to Programming has been that people become okay with programming once they have built a good mental model to work with; that these are my pieces, they behave like this, and we can build that out of them. But teaching the mental model takes time, and languages themselves often stand in the way of building good models. They present an abstract representation for processes – but the abstraction itself is inevitably leaky, in some languages more than others.

    Starting just with languages with minimal syntax: Scheme and Lisp. Even something like the quote mark operator can be a huge stumbling block for many students – why does ‘foo behave so strangely, and is different from foo and from “foo”? Explaining this requires breaking abstraction barriers away from the nice high-level process description, and going into macroexpansion and internal object representation and a mess of processes underlying the language itself, which students never get. Or the alternative, to gloss over it, and run the risk of students building completely wrong models of its behavior, and having their programs fail in what appear to be arbitrary and capricious ways. It’s immensely frustrating for everyone.

    Things get worse with lower-level languages. C, C++, and Java, are all pretty complex syntactically and semantically – statements have to be in blocks, and sometimes they start new blocks, which are sometimes invisible, all depending on the usage of brackets; sometimes they return values, sometimes they don’t; sometimes you can ignore what they return, sometimes you can’t; sometimes they produce side-effects, sometimes they don’t, etc. These languages present mental pieces that have all sorts of sharp edges, weird angles and, worst of all, tend to break in completely unexpected ways.

    So in addition to Andrew’s posting, I’d also like to throw in the problem of language frustration. Learning to program requires learning to deal with an endless stream of arbitrary language minutiae; requires not merely precision, but pedantry, until you get the idea of what goes on underneath. But I don’t know whether an intuitive language be designed at all and still be complex enough to be useful.

  4. Michael Says:

    So do you think these guys tried to create a “procedural literacy” revolution for education and failed, or has that revolution yet to occur?

    I think the revolution has been slowly moving along – more a procedural literacy evolution. More people are able to control their computers in more ways now than they could 43 years ago. And there are certainly scripting environments now (such as scripting in Flash or Director, VB, back in the 80’s Hypercard) that enable more people to engage in some degree of procedural authorship. But all of these special purpose environments come at the price of obscuring the full expressive potential of computation. The next stage of procedural literacy is learning to navigate the huge tower of absraction that exists in any computer system, with each layer definining its own little process universe, and with all layers, including the programming languages themselves, contingent human-authored artifacts, each carrying the meanings, assumptions, biases and affordances of their author.

    While it was difficult enough to get a painting major to use Excel, I like to imagine that a few weeks could have been spent introducing programming concepts. However I wonder if Perlis realized just how dreadful of a process that would be for some students, who would probably loathe the thought of describing processes in the abstract. I’ve heard some say they think everyone has the capability to program, and while technically this may be true, in practice it could be that for some, just the concept of abstractly representing processes feels so cold and mechanical, they could never bring themselves to do it, or at least not without kicking and screaming.

    While programming does have its abstract aspects, it also has the properties of a concrete craft practice. Programmers build these elaborate Rube Goldberg machines, in a practice that feels like a combination of writing and mechanical tinkering. But you’re right that the mechanical tinkering part demands precision. I think a block for many people is not so much abstraction, but the extreme attention to detail demanded by programming. A “loose idea” is not enough – it must be fully described in great detail before it will run on a machine.

    So in addition to Andrew’s posting, I’d also like to throw in the problem of language frustration. Learning to program requires learning to deal with an endless stream of arbitrary language minutiae; requires not merely precision, but pedantry, until you get the idea of what goes on underneath.

    The “what goes on underneath” part references the fact that every language encodes a model of computation. Full procedural literacy would involve freedom from any particular model. But this is a high standard for literacy. Many programmers happily spend their lives working in imperative languages truly believing that computation is fundamentally about sequences of instructions, with occasional branching and looping. It most decidely is not, any more than computation is fundamentally an eval-apply cycle (list processing langauges), forward chaining rules with no specification of sequencing (rule languages), backward chaining rules with unification (logic languages), or the many higher-level architectures, all of which can be built on top of the others, none more fundamental than the others.

  5. noah Says:

    I have the impression that these sorts of things often only open up for people once they can tinker.

    In the standard Intro to CS it takes people a long time to get to the point where there are things they can play with.

    Markup is certainly easier than programming, but nevertheless I think the speed with which so many people learned HTML in the mid-90s may be instructive.

    People learned HTML by getting the source of other people’s HTML files and then tinkering. Changing things and seeing what worked, taking elements from one page and trying to insert them into another, and so on. Usually looking at an reference or formal definition came later, as did starting any HTML page from scratch.

    I think Intro to CS would seem more like it was a course about processes if students started the class with existing, functional processes that they then started to alter and combine. Most Intro to CS, as Rob points out, starts out teaching about syntax — which seems pretty far from the goal of thinking about process.

    I’ve been reading some in the CS education literature recently, and I haven’t found anyone advocating this “start with tinkering” approach. Though I did find a report by the AAUW saying that tinkering/exploration is one of the things women really like about later CS classes (and its absence is part of what they dislike in earlier ones).

    Am I missing something here?

  6. Ian Bogost Says:

    Of procedural literacy’s many registers, it strikes me that two are colliding here:

    (1) Teaching procedurality to young kids who have flexible minds and open futures

    (2) Teaching procedurality to adults who have never learned any, and have less flexible minds.

    (2) seems a lot harder than (1) to me. But I think the problem has less to do with the mechanics of CS instruction — although syntax vs. procedure is a good issue to discuss — and more to do with the students’ lack of previous, foundational experience with procedural systems of any kind. They need to have played more Go, Chess, and Backgammon, to have learned more natural languages (including, perhaps especially, dead languages), played with more Legos, created more amateur architectural plans, learned to dance, etc…

    The challenge is that all of those charges are in the past perfect tense. How can you recuperate that?

    I have many thoughts on (1), and I may share them here or on WCG soon. I’ve been trying to turn them into an article.

  7. Michael Says:

    I’ve been reading some in the CS education literature recently, and I haven’t found anyone advocating this “start with tinkering” approach.

    The “start with tinkering” approach is what I tried to do in Computation as an Expressive Medium, an immersion approach to learning programming as opposed to a “memorize the vocabulary and grammar” approach. Interestingly, I had several students in the class who already had strong programming backgrounds (including a couple of people with CS degrees). We talked about having them place out of the course, but decided they should take it because they had never read some of the historical and theoretical material we were reading in the course and had never written the kinds of programs we were writing. As one of them said, “I never got to write interesting programs as a CS major”, which I think was his way of saying that he never got to tinker and really explore programming as a medium.

    (2) Teaching procedurality to adults who have never learned any, and have less flexible minds.

    (2) seems a lot harder than (1) to me. But I think the problem has less to do with the mechanics of CS instruction — although syntax vs. procedure is a good issue to discuss — and more to do with the students’ lack of previous, foundational experience with procedural systems of any kind.

    I think we are in a transitional phase where adults are entering graduate programs in New Media with no prior experience in procedurality. As programs such as Georgia Tech’s new undergraduate degree in Computational Media, which is half CS courses and half Literature Communication and Culture courses, are created, I think we can expect that future graduate students in New Media will have programming experience. And even for those students who come into graduate New Media programs without an undergraduate background in New Media, in the future we can expect that they learned to program in elementary school. One of the things I like about the phrase “procedural literacy” is that it immediately conjures its opposite, implying that an inability to think procedurally really is a form of illiteracy, with as dire harmful consequences as the inability to read and write.

    But, even when we can expect that all students entering graduate New Media programs are procedurally literate, there will still be a need for courses that explore procedurality as a medium, that explore the interrelationship between conceptual and theoretical concerns and code. This goes beyond merely knowing how to program, and is really about being able to conceptually think about code.

  8. B. Rickman Says:

    [Group 1 has flexible minds and open futures]

    [Group 2 does not]

    I don’t think group 1 exists. I don’t think it is going to magically appear in twenty years, just because third graders have computers in the classroom.

    Okay, yes, there will be a handful of these ideal students who will be procedurally literate as a result of all the right accidents in their education, but I doubt they will ever occur in meaningful numbers. It is, in fact, the goal of education, specifically for higher education (because I don’t see how it would occur any earlier) to provide this literacy. And, to be a pessimist, I don’t see procedural literacy becoming a priority in our lifetimes.

  9. Rob Says:

    Noah: I’ve been reading some in the CS education literature recently, and I haven’t found anyone advocating this “start with tinkering” approach.

    My experience has been that CS majors are taught the mechanics of the tools, and expected to do a lot of this tinkering on their own to complement their education. For example, a good CS graduate picks up most language knowlege on their own, from coding within and outside of class. Like natural language learning via immersion. :)

    But even then they’re rarely taught the creative aspects, just the mechanics. Like Michael mentions, it can be quite hard to find projects that guide experimentation with programming as a creative medium – which is why classes like his are really exciting news.

    Michael: Full procedural literacy would involve freedom from any particular model. But this is a high standard for literacy.

    I’m also wondering what’s required to attain this standard, and what it is, exactly. I mean, in speaking of procedural literacy, we’re going above mere syntax, above data structure considerations; we’re going above algorithm analysis and cost trade-offs; we’re even above particular models of computation, imperative to functional, to inference-based, etc.

    But this is where my imagination fails me. What exactly is this procedural literacy that gives one freedom from the messiness of particular models of computation, but could also be taught to beginners? I mean, full literacy in computer science does eventually lead to that kind of a gestalt vision, but that’s not what you have in mind, is it?

  10. Ian Bogost Says:

    Michael — But, even when we can expect that all students entering graduate New Media programs are procedurally literate, there will still be a need for courses that explore procedurality as a medium

    I’ll agree with that. But I’d also argue that procedurality is not limited to code, as I hinted above.

    Brandon — t is, in fact, the goal of education, specifically for higher education (because I don’t see how it would occur any earlier) to provide this literacy

    I think you’re dead wrong on this. This has to start a lot earlier. Think about kids’ receptivity to the conceptual and symbolic at a young age. This has to happen now, not later.

  11. B. Rickman Says:

    I don’t see where there is room for it. The curriculum for primary and secondary education in most American schools is already chock full. Perhaps you’d want to integrate procedural literacy in with mathematics, which seems like a good place. But there are a number of extant battles for control of the math curriculum, and a large amount of “secondary level” math skills — trigonometry, precalculus — are being pushed up into community colleges and universities.

    But I think you missed my main point, which is that you should never expect a procedurally literate student to walk into your classroom. You have to teach it. And, to make it more challenging, you shouldn’t need to use a computer to do it.

  12. Ian Bogost Says:

    Brandon — your lack of progressive interest stands second only to your destructive approach to every issue you address publicly.

    Clearly, you have no experience with kids or their education. Procedural literacy starts at the earliest of stages, and as I argued can begin with extra-curricular media such as board games, toys, and other media, as I explicitly suggested above. Furthermore, personalities like Seymour Papert and Alan Kay have created means for kids to learn about programming from a very early age, since the mid 1970s. Futhermore, even if one were willing to admit that US curricula were replete with valuable learning (which I am not), your suggestion that such curricula are “chock full” wreaks of a massive misunderstanding of the inherent problems of institutionalized education today. The notion that Michael and my suggestions about procedural literacy correspond or participate with any “accepted” notion of primary public education in the contemporary USA leave me in the most confused of states, given that both of us are arguing for a change in pedagogical approaches.

    Your suggestion that the responsibility to teach kids in any kind of topic that exceeds the current educational modalities suggests not only that you chose to ignore my insistence that procedurality must be cultivated at any early age, but also that your understanding of the topic at hand is deeply deluded. Were teachers like Michael and I (yes, we’ve actually taught!) expecting a wealth of procedurally literate students to waltz into our program, do you think we would discuss such topics with such devoted interest and attention? Or perhaps you simply hope to exercise some kind of glib trump card in arguing that computers aren’t useful systems of computation, or that my own entirely non-computer based suggestions of principal tools for procedural learning simply do not qualify for the blindered, broad-based objections you raise.

    If ever you choose to consider any of the issues on this or other public forums in a way that wreaks of anything but disdain and anitpathy, I shall consider responding further. Until then, I wish you the best of luck in your antipathetic antimodalism.

  13. B. Rickman Says:

    Wow!

    Well, first of all I will take Ian’s response as an admission that you are indeed a revolutionary, seeking not simply to push the educational system down a better path, but to overturn it in favor of radical new ideas. (Ideas that aren’t new with respect to Papert and Kay, but would certainly be a new pedagogy at the little red schoolhouse.)

    My first response to this was to directly question the feasibility of such an action. My instinct was to look at how this “procedural literacy” could fit in with the real and everyday institutions of education. My mistake! The bomb-lobbing revolutionaries are going to do away with all the old institutions. Papert and Kay were only the first wave, and now it is up to you, my young BFG-toting soldier, to carry on the fight!

    Enough with the levity. I am overly glib, that is true. Because I see a solid lack of any critical foundation for all of these radical new ideas, for the fad that is ludology, for the clever slight-of-hand that is trying to replace “computers in the classroom” with “games in the classroom”. Yes, I have big problems with the current state of education as well, but I also think that the “cognitive revolution” that accompanied the rise of the modern computer is deeply flawed. Which makes me a reactionary against the ideas of Papert and Kay.

    You are welcome to address my perspective in whatever forum appeals most to you.

  14. Michael Says:

    But this is where my imagination fails me. What exactly is this procedural literacy that gives one freedom from the messiness of particular models of computation, but could also be taught to beginners? I mean, full literacy in computer science does eventually lead to that kind of a gestalt vision, but that’s not what you have in mind, is it?

    Something like a gestalt may be what I have in mind. And no, it’s not something that can be taught to beginners. That’s why I said it’s a high standard for procedural literacy, a level that many programmers with degrees in computer science may not have. What I mean is the ability to think architecturally about computation, to invent new representations and languages as you need them, to mix-and-match different computational concepts, to not be blindered by any one model of computation. But getting there means being exposed in turn to many models of computation, something that won’t happen in one introductory course. Abelson and Suchman’s The Structure and Interpretation of Computer Programs is indeed and intro to CS that, in a first course on programming, has you do things like write interpreters for computer languages. So it tries to accelerate this architecturalist understanding of computation. I don’t know how well it works in this regard. Any comments? And it certainly has the wrong focus as an introductory approach to teaching procedural literacy for new media scholars and practitioners.

  15. Michael Says:

    On the topic of “why I hate programming”, and how the level of detail required to write working programs may turn off many new programmers, it’s interesting that Perlis already identified the ability to deal with the detail work required to fully specify processes as one of the fundamentals of programming. In a list of the “elements of programming”, he offers this unromantic and not very revolutionary-sounding item:

    A Priori Attention to Eventualities Regardless of Likelihood. The development of a mechanical attitude toward mechanical processing requires that processing of even unlikely cases by provided for. The programming of the solution of a quadratic equation and the analysis of the general second-degree equation in two variables to select conic sections are good examples where many students fail to provide for eventualities. The willingness to program through a tedious collection of tests on special cases must be fostered. (emphasis added)

  16. William Huber Says:

    Abelson and Sussman’s SICP (known also as “The Purple Book,” “The Wizard Book” and my favorite – “The Splodey Book” – ‘because it made my head explode,’ as one LISP hacker once told me) would be an excellent text for teaching procedural fluency. It is, really, language agnostic, free from the conventions and presumptions that most other texts on algorithms and the like have, and I can imagine it being expanded and adapted (and some of the engineering-specific assumptions – that everyone is fluent with calculus, an assumption that the material didn’t really require) to emphasize the creative aspects.

    Because people really did feel free to play with the exercises in the text, tweaking them and making them more amusing and more fun.

    It’s been a good number of years since I took the course that used that text, and honestly, I really wouldn’t mind going through it again. A fugue of epiphanies were in that little purple book for me.

  17. Christy Says:

    Being a pgrad in New Media with no programming background (but a ‘tinkerer’ at least) I wholeheartedly agree that pgrads need to know programming. I’ve reached a wall with my content creation because there are so many things I want to do but do not know how to. I can ask questions on developer lists but don’t really get all the info I need to power ahead. We’ve got ‘expert’ staff at Uni that are set up to support gaps in our knowledge — which is good for problem-solving — but I really want to learn these things. The obstacle for me is $$. I can’t afford to do the classes I want to do. The other option, which I take up, is auditing undergrad classes on the subject I want to know more about but then I can’t chat with the tutors and so on, only attend the lectures.

    What would be great is if a semester class is introduced, like methodology classes for pgrads who come from artistic backgrounds, where programming is taught as a necessary intro for all NM pgrads.

  18. Rob Says:

    I agree, SICP is an excellent book. It really gets across the idea of language being a problem modeling tool – that if you encounter a new kind of a problem, first imagine what kind of a language would make solving it trivial, then implement that language, and write your solution in it. Which is another way of teaching people how to analyze real-world problems, create models on the right level of abstraction, and build new computational processes that fit it.

    But with its emphasis on solving math and EE problems, it’s horrible for teaching anyone but engineering undergrads. Those frustrate the non-engg people – but to change the emphasis, some work would have to go into building good graphics and media wrappers for Scheme that the students could easily use, and practically rewriting whole sub-chapters of the book… :)

  19. William Huber Says:

    Rob, I can’t completely agree. I agree with changing the eng. focus. But turning to Advanced Logo is probably going to cloud the issue. If I were going to take one pedagogical myth to task in this thread, it would be the “adding pictures makes it easier for non-techies” myth – this isn’t Fun with Dick and Jane we’re trying to learn and teach. In fact, there are a number of expressive things with text that can be done with Scheme that don’t involve higher math and still teach recursion, environments, scope, assignment, meta-circular evaluation and the like.

    The visual tools can be used to help visualize the procedures themselves – I remember being shown an almost abstract visualization of sort algorithms that did an excellent job in helping train my own visualization (and, for me, and perhaps for many others, it’s the internal visualization, the transformation of the procedures into spatio-visual metaphors in my head – and hopefully, the right metaphors with the right entailments – that compromises much of the real learning.)

    One tool, in fact, that could be helpful would be a visual metaphor output to a debugger, that simultaneously output approriate visualizations for conditionals, loops, algorithms, et al while simultaneously bouncing through the code.

  20. michael Says:

    Rob, I can’t completely agree. I agree with changing the eng. focus. But turning to Advanced Logo is probably going to cloud the issue. If I were going to take one pedagogical myth to task in this thread, it would be the “adding pictures makes it easier for non-techies” myth…

    William, I agree that teaching programming for artists and humanists shouldn’t be only about the visual. In fact, for the assignments I gave the first time I taught computation as an expressive medium, only one of them was explicitly about producing imagery – the rest were about treating the web as a data structure, creating tools for image manipulation (pushing on the notion that tools themselves are authored, and should be considered as a space for intervention), and text interaction.

    One of my concerns about using scheme, however, would be the issue of a community of practice. For a language such as Java, there are many artists already using it, which means that there are many people to talk to, large amounts of code available to build upon and so forth, when doing creative work with Java. Because of the ubiquity of Java VMs in web browsers, the web can easily be used as a mechanism for viewing Java-based work. I think one of the goals of such a class should be to not only increase procedural literacy, but give the students concrete skills in a language that’s already broadly used and that they can start using in their own practice.

    In your list of procedural concepts, we did cover recursion, environments, scope and assignment using Java, but not meta-circular evaluation. The last is of course critical for thinking about how to implement interpreters for your own languages. But I think there’s no way I’d teach meta-circular evaluation in a computation as an expressive medium course. Remember that the students in such a class, unlike SICP students, are also reading historical and theoretical texts in new media, and have to connect the readings to the programming material. So they’re doing some extra conceptual work that the SICP students aren’t. A programming course for humanists and artists should not be thought of as dumbed down CS, or CS made friendly, but rather as an alternative CS curriculum. It’s all right for it to be hard, to be “splodey”, but there are many different ways to be “splodey” besides teaching traditional CS material. Incidently, the Java students are also learning about OO design (which is really knowledge representation), a concept that the scheme students don’t get.

    One tool, in fact, that could be helpful would be a visual metaphor output to a debugger, that simultaneously output approriate visualizations for conditionals, loops, algorithms, et al while simultaneously bouncing through the code.

    Very nice idea! Points towards some of the interesting tool development that should be done to support the teaching of procedural literacy.

  21. michael Says:

    Because I see a solid lack of any critical foundation for all of these radical new ideas, for the fad that is ludology, for the clever slight-of-hand that is trying to replace “computers in the classroom” with “games in the classroom”. Yes, I have big problems with the current state of education as well, but I also think that the “cognitive revolution” that accompanied the rise of the modern computer is deeply flawed.

    Brandon, I don’t quite follow the connection between game studies and teaching procedural literacy. While games are certainly an instance of a procedural medium, the concept of procedural literacy is much broader than games. As far as the cognitive revolution, which in its uncritical formulations treats humans as information processors identical to contemporary computers, the only antidote would seem to be procedural literacy. Only through an understanding of programming and how computers really operate could someone gain a deep understanding of the similarities and differences between human experience and computation.

  22. William Huber Says:

    Thank you for your follow-up, Michael. I’m still inordinately fond of LISP variants – and the fact that it’s a short bridge from hardware to software when discussing CARs and CDRs – but you may be right about the value of the extant body of Java material.

    In our intro to CS class, though, we did do OO work in Scheme. It was spun out of the assignment section of SICP, and including implementing a primitve OO framework using message-passing. It was in those exercises, too, that students were able to be the most creative, designing an OO virtual world of restaurant-objects and food-objects, along with the usual ATM and bank account objects. In defense of Scheme, it makes it easy to teach OO by actually implementing it, rather than receiving it full-formed from the forehead of Zeus, as it were.

  23. Rob Says:

    If I were going to take one pedagogical myth to task in this thread, it would be the “adding pictures makes it easier for non-techies” myth – this isn’t Fun with Dick and Jane we’re trying to learn and teach.

    Nice strawman there, William. :)

    No, just “adding pictures” would be absurd; it ameliorates nothing. On the other hand, things need to be approached differently, because some of the assumptions SICP makes about math and engineering backgrounds of its readers are simply false in our current context.

    Take the calculus assignment in ch. 2, where students write a pattern-matching system that takes an equation and performs symbolic differentiation. Or, for that matter, the analog circuit simulator from ch. 3, which is really just an excuse to introduce streams (they’re like wires :), and delayed evaluation. They’re fun assignments, but unnecessarily difficult for those who never took basic engineering courses. There’s no reason to make Calculus I and Intro to Circuits into prerequisites for teaching pattern matching and streams.

  24. B. Rickman Says:

    Michael: “Only through an understanding of programming and how computers really operate could someone gain a deep understanding of the similarities and differences between human experience and computation.”

    I think there is danger in the promotion of procedural literacy for its own sake. Yes, people should study these things in order to contrast experience and computation, but unless you make that the explicit goal — the contrast, the critique — you end up with procedural literacy for its own sake.

    So, speaking as a reactionary, I’m not sure that computers should ever be allowed into the classroom, because their presence clouds the issue of what should be taught — an understanding of processes versus skills to make the computer do cool stuff. Only when there are technical goals for a course should you need students to sit at a computer, and that time should not be considered as instructional time.

    Which opens up the question: how can procedural literacy be presented without a computer? There are plenty of ways to present mechanical computation without a CRT, but they have become neglected.

  25. Hideous Pursuit Says:
    ProcLit, ResearchArt, ZigBee
    Procedural Literacy Is Your Art Research? ZigBee article…

  26. Matthew G. Kirschenbaum Says:
    The Pedagogy of Programming
    I took programming courses in both high school and college, at least three or four all told (Basic and Pascal-I'm dating myself). I couldn't have been less interested. The pedagogical approach was entirely vocational. Just as my French and Sp…

  27. noah Says:

    Echoing Andrew’s formulation, a paper from Peter Bogh Andersen and collaborators titled “Teaching Programming to Liberal Arts Students — a Narrative Media Approach” contains the heading “Why Multimedia Students Need Programming.” They describe Lingoland, the homepage for which now bears the headline “Game Metaphors in Programming.”

  28. Water Cooler Games Says:

    BASIC games on the web

    One of the things we’re often grousing about in the computing education and games education communities is programming literacy (some people call this procedural literacy, but I reserve that phrase for a more general concept of literacy, more on this…

  29. Reality Panic » Gaming Literacy, Parenting, etc… Says:

    […] 8230; (Anyone got a good reference?) Also, makes me think of Ken Perlin’s efforts to evangelize procedural thinking and progr […]

  30. Procedural Literacy is the New Black Says:

    […] need for accessible procedural literacy is not a new idea.  Just like opportunities afforded by traditional literacy, it is obvious that a divide will occur […]

Powered by WordPress