Feeds:
Posts
Comments

Archive for the ‘Education’ Category

I came across this interview with Lesley Chilcott, the producer of “An Inconvenient Truth” and “Waiting For Superman.” Kind of extending her emphasis on improving education, she produced a short 9-minute video selling the idea of “You should learn to code,” both to adults and children. It addresses two points: 1) the anticipated shortage of programmers needed to write software in the future, and 2) the increasing ubiquity of programming in all sorts of fields where people would think it wouldn’t exist, such as manufacturing and agriculture.

The interview gets interesting at 3 minutes 45 seconds in.

Michelle Fields, the interviewer, asked what I thought were some insightful questions. She started things off with:

It seems as though the next generation is so fluent in technology. How is it that they don’t know what computer programming is?

Chilcott said:

I think the reason is, you know, we all use technology every day. It’s surrounding us. Like, we can debate the pro’s and con’s of technology/social media, but the bottom line is it’s everywhere, right? So I think a lot of people know how to read it. They grow up playing with an iPhone or something like that, but they don’t know how to write it. And so when you say, “Do you know what this is,” specifically, or what this job is–and you know, those kids are in first, second, fifth grade–they know all about it, but they don’t know what the job is.

I found this answer confusing. She’s kind of on the right track, thinking of programming as “writing.” I cut her some slack, because as she admits in the interview, she’s just started programming herself. However, as I’ve said before, running software is not “reading.” It’s really more like being read to by a machine, like listening to an audio book, or someone else reading to you. You don’t have to worry about the mental tasks of pronunciation, sentence construction, or punctuation. You can just listen to the story. Running software doesn’t communicate the process that the code is generating, because there’s a lot that the person using it is not shown. This is on purpose, because most people use software to accomplish some utilitarian task unrelated to how a computer works. They’re not using it to understand a process.

The last sentence came across as muddled. I think what she meant was they know all about using technology, but they don’t know how to create it (“what the job is”).

Fields then asked,

There was this study which found that 56% of students would rather eat broccoli than learn math. Do you think that since computer programming is somewhat related to math, that that’s the reason children and students shy away from it?

Chilcott said:

It could be. That is one of the myths that exist. There is some, you know, math, but as Bill Gates and some other people said, you know, addition, subtraction–It’s much more about problem solving, and I think people like to problem-solve, they like mysteries, they like decoding things. It’s much more about that than complicated algorithms.

She’s right that there is problem solving involved with programming, but she’s either mistaken or confusing math with arithmetic when she says that the relationship between math and programming is a “myth.” I can understand why she tries to wave it off, because as Fields pointed out, most students don’t like math. I contend, as do some mathematicians, this is due to the way it’s taught in our schools. The essence of math gets lost. Instead it’s presented as a tool for calculation, and possibly a cognitive development discipline for problem solving, both of which don’t communicate what it really is, and remove a lot of its beauty.

In reality math is pervasive in programming, but to understand why I say this you have to understand that math is not arithmetic–addition, subtraction, like she suggests. This confusion is common in our society. I talk more about this here. Having said this, it does not mean that programming is hard right off the bat. The math involved has more to do with logic and reasoning. I like the message in the video below from a couple of the programmers interviewed: “You don’t have to be a genius to know how to code. … Do you have to be a genius to do math? No.” I think that’s the right way to approach this. Math is important to programming, but it’s not just about calculating a result. While there’s some memorization, understanding a programming language’s rules, and knowing what different things are called, that’s not a big part of it.

The cool thing is you can accomplish some simple things in programming, to get started, without worrying about math at all. It becomes more important if you want to write complex programs, but that’s something that can wait.

My current understanding is the math in programming is about understanding the rules of a system and what statements used in that system imply, and then understanding the effects of those implications. That sounds complicated, but it’s just something that has to be learned to do anything significant with programming, and once learned will become more and more natural. I liken it to understanding how to drive a car on the road. You don’t have to learn this concept right away, though. When first starting out, you can just look at and enjoy the effects of trying out different things, exploring what a programming environment offers you.

Where Chilcott shines in the interview above is when she becomes the “organizer.” She said that even though 95% of the schools have computers and internet access, only 10% have what she calls a “computer science” course. (I wish they’d go back to calling it a “programming course.” Computer science is more than what most of these schools teach, but I’m being nit-picky.) The cool thing about Code.org, a web site she promotes, is that it tries to locate a school near you that offers programming courses. If there aren’t any, no problem. You can learn some basics of programming right inside your browser using the online tools that it offers on the site.

The video Chilcott produced is called “Code Stars” in the above interview, but when I went looking for it I found it under the name “the Code.org film,” or, “What Most Schools Don’t Teach.”

Here is the full 9-minute video:

If you want the shorter videos, you can find them here.

The programming environment you see kids using in these videos is called “Scratch.”

Gabe Newell said of programming:

When you’re programming, you’re teaching possibly the stupidest thing in the entire universe–a computer–how to do something.

I see where Newell is going with this, but from my perspective it depends on what programming environment you’re using. Some programming languages have the feel of you “teaching” the system when you’re programming. Others have the feel of creating relationships between simple behaviors. Others, still, have the feel of using relationships to set up rules for a new system. Programming comes in a variety of approaches. However, the basic idea that Newell gets across is true, that computers only come with a set of simple operations, and that’s it. They don’t do very much by themselves, or even in combination. It’s important for those new to programming to learn this early on. Some of my early experiences in programming match those of new programmers even today. One of them is, when using a programming language, one is tempted to assume that the computer will infer the meaning of some programming expression from context. There is some context used in programming, but not much, and it’s highly formalized. It’s not intuitive. I can remember the first time I learned this it was like the joke where, say, someone introduces his/her friend to a dumb, witless character in a skit. He/she says, “Say hi to my friend, Frank,” and the dummy says, “Hi to my friend Frank.” And the guy/gal says, “NO! I mean…say hello,” making a hand gesture trying to get the two to connect, and the dummy might look at the friend and say, “Hello,” but that’s it. That’s kind of a realization to new programmers. Yeah, the computer has to have almost everything explained to it (or modeled), even things we do without thinking about it. It’s up to the programmer to make the connections between the few things the computer knows how to do, to make something larger happen.

Jack Dorsey talked about programming in a way that I think is important. His ultimate goal when he started out was to model something, and make the model malleable enough that he could manipulate it, because he wanted to use it for understanding how cities work.

Bill Gates emphasized control. This is a common early motivation for programmers. Not necessarily controlling people, but controlling the computer. What Gates was talking about was what I’d call “making your own world,” like Dorsey was saying, but he wanted to make it real. When I was in high school (late 1980s) it was a rather common project for aspiring programming students to create “matchmaking” programs, where boys and girls in the whole school would answer a simple questionnaire, and a computer program that a student had written would try to match them up by interests, not unlike some of the online dating sites that are out there now. I never heard of any students finding their true love through one of these projects, but it was fun for some people.

Vanessa Hurst said, “You don’t have to be a genius to know how to code. You need to be determined.” That’s pretty much it in a nutshell. In my experience everything else flowed from determination when I was learning how to do this. It will drive you to learn what you need to learn to get it, even if sometimes it’s subject matter you find tedious and icky. You learn to just push through it to get to the glorious feeling at the end of having accomplished what you set out to do.

Newell said at the end of the video,

The programmers of tomorrow are the wizards of the future. You’re going to look like you have magic powers compared to everybody else.

That’s true, but this has been true for a long time. In my professional work developing custom database solutions for business customers I had the experience of being viewed like a magician, because customers didn’t know how I did what I did. They just appreciated the fact that I could do it. I really don’t mean to discourage anyone, because I still enjoy programming today, and I want to encourage people to learn programming, but I feel the need to say something, because I don’t want people to get disillusioned over this. This status of “wizard,” or “magician” is not always what it’s cracked up to be. It can feel great, but there is a flip side to it that can be downright frustrating. This is because people who don’t know a wit of what you know how to do can get confused about what your true abilities are, and they can develop unrealistic expectations of you. I’ve found that wherever possible, the most pleasurable work environment is working among those who also know how to code, because we’re able to size each other up, and assign tasks appropriately. I encourage those who are pursuing software development as a career to shoot for that.

A couple things I can say for being able to code are:

  • It makes you less of a “victim” in our technology world. Once you know how to do it, you have an idea about how other programs work, and the pitfalls they can fall into that might compromise your private information, allow a computer cracker to access it, or take control of your system. You don’t have to feel scared at the alarming “hacking” or phishing reports you hear on the news, because you can be choosey about what software you use based on how it was constructed, what it’s capable of, how much power it gives you (not someone else), and not just base a decision on the features it has, or cool graphics and promotion. You can become a discriminating user of software.
  • You gain the power to create the things that suite you. You don’t have to use software that you don’t like, or you think is being offered on unreasonable terms. You can create your own, and it can be whatever you want. It’s just a matter of the knowledge you’re willing to gather and the amount of energy you’re willing to put into developing the software.

Edit 5-20-2013: While I’m on this subject, I thought I should include this video by Mitch Resnick, who has been involved in creating Scratch at MIT. Similar to what Lesley Chilcott said above, he said, “It’s almost as if [users of new technologies] can read, but not write,” referring to how people use technology to interact. I disagreed with the notion, above, that using technology is the same as reading. Resnick hedged a bit on that. I can kind of understand why he might say this, because by running a Scratch program, it is like reading it, because you can see how code creates its results in the environment. This is not true, however, of much of the technology people use today.

Mark Guzdial asked a question a while back that I thought was important, because it brings this issue down to where a lot of people live. If the kind of literacy I’m going to talk about below is going to happen, the concept needs to be able to come down “out of the clouds” and become more pedestrian. Not to say that literacy needs to be watered down in toto (far from it), but that it should be possible to read and write to communicate everyday ideas and experiences without being super sophisticated about it. What Mark asked was, in the context of a computing medium, what would be the equivalent of a “note to grandma”? I remember suggesting Dan Ingalls’s prop-piston concept from his Lively Kernel demos as one candidate. Resnick provided what I thought were some other good ones, but in the context of Mother’s Day.

Context reversal

The challenge that faces new programmers today is different from when I learned programming as a child in one fundamental way. Today, kids are introduced to computers before they enter school. They’re just “around.” If you’ve got a cell phone, you’ve got a computer in your pocket. The technology kids use presents them with an easy-to-use interface, but the emphasis is on use, not authoring. There is so much software around it seems you can just wish for it, and it’s there. The motivation to get into programming has to be different than what motivated me.

When I was young the computer industry was still something new. It was not widespread. Most computers that were around were big mainframes that only corporations and universities could afford and manage. When the first microcomputers came out, there wasn’t much software for them. It was a lot easier to be motivated to learn programming, because if you didn’t write it, it probably didn’t exist, or it was too expensive to get (depending on your financial circumstances). The way computers operated was more technical than they are today. We didn’t have graphical user interfaces (at first). Everything was done from some kind of text command line interface that filled the entire screen. Every computer came with a programming language as well, along with a small manual giving you an introduction on how to use it.

PC-DOS command line interface on the IBM PC, from Wikipedia

It was expected that if you bought a computer you’d learn something about programming it, even if it was just a little scripting. Sometimes the line between what was the operating system’s command line interface, and what was the programming language was blurred. So even if all you wanted to do was manipulate files and run programs, you were learning a little about programming just by learning how to use the computer. Some of today’s software developers came out of that era (including yours truly).

Computer and operating system manufacturers had stopped including programming languages with their systems by the mid-1990s. Programming languages had also been taken over by professionals. The typical languages used by developers were much harder to learn for beginners. There were educational languages around, but they had fallen behind the times. They were designed for older personal computer systems, and when the systems got more sophisticated no one had come around to update them. That began to be remedied only in the last 10 years.

Computer science was still a popular major at universities in the 1990s, due to the dot-com craze. When that bubble burst in 2000, that went away, too. So in the last 18 years we’ve had what I’d call an “educational programming winter.” Maybe we’ll see a revival. I hope so.

Literacy reconsidered

I’m directing the rest of this post to educators, because there are some issues around a programming revival I’d like to address. I’m going to share some more detailed history, and other perspectives on computer programming.

What many may not know is that we as a society have already gone through this once. From the late 1970s to the mid-1980s there was a major push to teach programming in schools as “computer literacy.” This was the regime that I went through. The problem was some mistakes were made, and this caused the educational movement behind it to collapse. I think the reason this happened was due to a misunderstanding of what’s powerful about programming, and I’d like educators to evaluate their current thinking in light of this, so that hopefully they do not repeat the mistakes of the past.

As I go through this part, I’ll mostly be quoting from a Ph.D. thesis written by John Maxwell in 2006 called Tracing the Dynabook: A Study of Technocultural Transformations,” (h/t Bill Kerr) also called, “Dynabook: Once and Future.”

Back in the late 1970s microcomputers/personal computers were taking off like wildfire with Apple II’s, and Commodore VIC-20′s, and later, Commodore 64′s, and IBM PCs. They were seen as “the future.” Parents didn’t want their children to be “left behind” as “technological illiterates.” This was the first time computers were being brought into the home. It was also the first time many schools were able to grant students access to computers.

Educators thought about the “benefits” of using a computer for certain cognitive and social skills.  Programming spread in public school systems as something to teach students. Fred D’Ignazio wrote in an article called “Beyond Computer Literacy,” from 1983:

A recent national “computers in the schools” survey conducted by the Center for the Social Organization of Schools at Johns Hopkins University found that most secondary schools are using computers to teach programming. … According to the survey, the second most popular use of computers was for drill and practice, primarily for math and language arts. In addition, the majority of the teachers who responded to the survey said that they looked at the computer as a “resource” rather than as a “tool.”

…Another recent survey (conducted by the University of Maryland) echoes the Johns Hopkins survey. It found that most schools introduce computers into the curriculum to help students become literate in computer technology. But what does this literacy entail?

Because of the pervasive spread of computers throughout our society, we have all become convinced that computers are important. From what we read and hear, when our kids grow up almost everyone will have to use computers in some aspect of their lives. This makes computers, as a subject, not only important, but also relevant.

An important, relevant subject like computers should be part of a school’s curriculum. The question is how “Computers” ought to be taught.

Special computer classes are being set up so that students can play with computers, tinker with them, and learn some basic programming. Thus, on a practical level, computer literacy turns out to be mere computer exposure.

But exposure to what? Kids who are now enrolled in elementary and secondary schools are exposed to four aspects of computers. They learn that computers are programmable machines. They learn that computers are being used in all areas of society. They learn that computers make good electronic textbooks. And (something they already knew), they learn that computers are terrific game machines.

… According to the surveys, real educational results have been realized at schools which concentrate on exposing kids to computers. … Kids get to touch computers, play with them, push their buttons, order them about, and cope with computers’ incredible dumbness, their awful pickiness, their exasperating bugs, and their ridiculous quirks.

The main benefits D’Ignazio noted were ancillary. Students stayed at school longer, came in earlier, and stayed late. They were more attentive to their studies, and the computers fostered a sense of community, rather than competition and rivalry. If you read his article, you get a sense that there was almost a “worship” of computers on the part of educators. They didn’t understand what they were, or what they represented, but they were so interesting! There’s a problem there… When people are fascinated by something they don’t understand, they tend to impose meanings on it that are not backed by evidence, and so miss the point. The mistaken perceptions can be strengthened by anecdotal evidence (one of the weakest kinds). This is what happened to programming in schools.

The success of the strategy of using computers to try to improve higher-order thinking was illusory. John Maxwell’s telling of the “life and death of Logo” (my phrasing) serves as a useful analog to what happened to programming in schools generally. For those unfamiliar with it, the basic concept of Logo was a programming environment in which the student manipulates an object called a “turtle” via. commands. The student can ask the turtle to rotate and move. As it moves it drags a pen behind it, tracing its trail.  Other versions of this language were created that allowed more capabilities, allowing further exploration of the concepts for which it was created. The original idea Seymour Papert, who taught children using Logo, had was to teach young children about sophisticated math concepts, but our educational system imposed a very different definition and purpose on it. Just because something is created on a computer with the intent of it being used for a specific purpose doesn’t mean that others can’t use it for completely different, and possibly less valuable purposes. We’ve seen this a lot with computers over the years; people “misusing” them for both constructive and destructive ends.

As I go forward with this, I just want to put out a disclaimer that I don’t have answers to the problems I point out here. I point them out to make people aware of them, to get people to pause with the pursuit of putting people through this again, and to point to some people who are working on trying to find some answers. I present some of their learned opinions. I encourage interested readers to read up on what these people have had to say about the use of computers in education, and perhaps contact them with the idea of learning more about what they’ve found out.

I ask the reader to pay particular attention to the “benefits” that educators imposed on the idea of programming during this period that Maxwell talks about, via. what Papert called “technocentrism.” You hear this being echoed in the videos above. As you go through this, I also want you to notice that Papert, and another educator by the name of Alan Kay, who have thought a lot about what computers represent, have a very different idea about the importance of computers and programming than is typical in our school system, and in the computer industry.

The spark that started Logo’s rise in the educational establishment was the publication of Papert’s book, “Mindstorms: Children, Computers, and Powerful Ideas” in 1980. Through the process of Logo’s promotion…

Logo became in the marketplace (in the broad sense of the word) [a] particular black box: turtle geometry; the notion that computer programming encourages a particular kind of thinking; that programming in Logo somehow symbolizes “computer literacy.” These notions are all very dubious—Logo is capable of vastly more than turtle graphics; the “thinking skills” strategy was never part of Papert’s vocabulary; and to equate a particular activity like Logo programming with computer literacy is the equivalent of saying that (English) literacy can be reduced to reading newspaper articles—but these are the terms by which Logo became a mass phenomenon.

It was perhaps inevitable, as Papert himself notes (1987), that after such unrestrained enthusiasm, there would come a backlash. It was also perhaps inevitable given the weight that was put on it: Logo had come, within educational circles, to represent computer programming in the large, despite Papert’s frequent and eloquent statements about Logo’s role as an epistemological resource for thinking about mathematics. [my emphasis -- Mark] In the spirit of the larger project of cultural history that I am attempting here, I want to keep the emphasis on what Logo represented to various constituencies, rather than appealing to a body of literature that reported how Logo “didn’t work as promised,” as many have done (e.g., Sloan 1985; Pea & Sheingold 1987). The latter, I believe, can only be evaluated in terms of this cultural history. Papert indeed found himself searching for higher ground, as he accused Logo’s growing numbers of critics of technocentrism:

“Egocentrism for Piaget does not mean ‘selfishness’—it means that the child has difficulty understanding anything independently of the self. Technocentrism refers to the tendency to give a similar centrality to a technical object—for example computers or Logo. This tendency shows up in questions like ‘What is THE effect of THE computer on cognitive development?’ or ‘Does Logo work?’ … such turns of phrase often betray a tendency to think of ‘computers’ and ‘Logo’ as agents that act directly on thinking and learning; they betray a tendency to reduce what are really the most important components of educational situations—people and cultures—to a secondary, faciltiating role. The context for human development is always a culture, never an isolated technology.”

But by 1990, the damage was done: Logo’s image became that of a has-been technology, and its black boxes closed: in a 1996 framing of the field of educational technology, Timothy Koschmann named “Logo-as-Latin” a past paradigm of educational computing. The blunt idea that “programming” was an activity which could lead to “higher order thinking skills” (or not, as it were) had obviated Papert’s rich and subtle vision of an ego-syntonic mathematics.

By the early 1990s … Logo—and with it, programming—had faded.

The message–or black box–resulting from the rise and fall of Logo seems to have been the notion that “programming” is over-rated and esoteric, more properly relegated to the ash-heap of ed-tech history, just as in the analogy with Latin. (pp. 183-185)

To be clear, the last part of the quote refers only to the educational value placed on programming by our school system. When educators attempted to formally study and evaluate programming’s benefits on higher-order thinking and the like, they found it wanting, and so most schools gradually dropped teaching programming in the 1990s.

Maxwell addresses the conundrum of computing and programming in schools, and I think what he says is important to consider as people try to “reboot” programming in education:

[The] critical faculties of the educational establishment, which we might at least hope to have some agency in the face of large-scale corporate movement, tend to actually disengage with the critical questions (e.g., what are we trying to do here?) and retreat to a reactionary ‘humanist’ stance in which a shallow Luddism becomes a point of pride. Enter the twin bogeymen of instrumentalism and technological determinism: the instrumentalist critique runs along the lines of “the technology must be in the service of the educational objectives and not the other way around.” The determinist critique, in turn, says, ‘the use of computers encourages a mechanistic way of thinking that is a danger to natural/human/traditional ways of life’ (for variations, see, Davy 1985; Sloan 1985; Oppenheimer 1997; Bowers 2000).

Missing from either version of this critique is any idea that digital information technology might present something worth actually engaging with. De Castell, Bryson & Jenson write:

“Like an endlessly rehearsed mantra, we hear that what is essential for the implementation and integration of technology in the classroom is that teachers should become ‘comfortable’ using it. [...] We have a master code capable of utilizing in one platform what have for the entire history of our species thus far been irreducibly different kinds of things–writing and speech, images and sound–every conceivable form of information can now be combined with every other kind to create a different form of communication, and what we seek is comfort and familiarity?”

Surely the power of education is transformation. And yet, given a potentially transformative situation, we seek to constrain the process, managerially, structurally, pedagogically, and philosophically, so that no transformation is possible. To be sure, this makes marketing so much easier. And so we preserve the divide between ‘expert’ and ‘end-user;’ for the ‘end-user’ is profoundly she who is unchanged, uninitiated, unempowered.

A seemingly endless literature describes study after study, project after project, trying to identify what really ‘works’ or what the critical intercepts are or what the necessary combination of ingredients might be (support, training, mentoring, instructional design, and so on); what remains is at least as strong a body of literature which suggests that this is all a waste of time.

But what is really at issue is not implementation or training or support or any of the myriad factors arising in discussions of why computers in schools don’t amount to much. What is really wrong with computers in education is that for the most part, we lack any clear sense of what to do with them, or what they might be good for. This may seem like an extreme claim, given the amount of energy and time expended, but the record to date seems to support it. If all we had are empirical studies that report on success rates and student performance, we would all be compelled to throw the computers out the window and get on with other things.

But clearly, it would be inane to try to claim that computing technology–one of the most influential defining forces in Western culture of our day, and which shows no signs of slowing down–has no place in education. We are left with a dilemma that I am sure every intellectually honest researcher in the field has had to consider: we know this stuff is important, but we don’t really understand how. And so what shall we do, right now?

It is not that there haven’t been (numerous) answers to this question. But we have tended to leave them behind with each surge of forward momentum, each innovative push, each new educational technology “paradigm” as Timothy Koschmann put it. (pp. 18-19)

The answer is not a “reboot” of programming, but rather a rethinking of it. Maxwell makes a humble suggestion: that educators stop being blinded by “the shiny new thing,” or some so-called “new” idea such that they lose their ability to think clearly about what’s being done with regard to computers in education, and that they deal with history and historicism. He said that the technology field has had a problem with its own history, and this tends to bleed over into how educators regard it. The tendency is to forget the past, and to downplay it (“That was neat then, but it’s irrelevant now”).

In my experience, people have associated technology’s past with memories of using it. They’ve given little if any thought to what it represented. They take for granted what it enabled them to do, and do not consider what that meant. Maxwell said that this…

…makes it difficult, if not impossible, to make sense of the role of technology in education, in society, and in politics. We are faced with a tangle of hobbles–instrumentalism, ahistoricism, fear of transformation, Snow’s “two cultures,” and a consumerist subjectivity.

An examination of the history of educational technology–and educational computing in particular–reveals riches that have been quite forgotten. There is, for instance, far more richness and depth in Papert’s philosophy and his more than two decades of practical work on Logo than is commonly remembered. And Papert is not the only one. (p. 20)

Maxwell went into what Alan Kay thought about the subject. Kay has spent almost as many years as Papert working on a meaningful context for computing and programming within education. Some of the quotes Maxwell uses are from “The Early History of Smalltalk”, (h/t Bill Kerr) which I’ll also refer to. The other sources for Kay’s quotes are included in Maxwell’s bibliography:

What is Literacy?

“The music is not in the piano.” — Alan Kay

The past three or four decades are littered with attempts to define “computer literacy” or something like it. I think that, in the best cases, at least, most of these have been attempts to establish some sort of conceptual clarity on what is good and worthwhile about computing. But none of them have won large numbers of supporters across the board.

Kay’s appeal to the historical evolution of what literacy has meant over the past few hundred years is, I think, a much more fruitful framing. His argument is thus not for computer literacy per se, but for systems literacy, of which computing is a key part.

That this is a massive undertaking is clear … and the size of the challenge is not lost on Kay. Reflecting on the difficulties they faced in trying to teach programming to children at PARC in the 1970s, he wrote that:

“The connection to literacy was painfully clear. It is not just enough to learn to read and write. There is also a literature that renders ideas. Language is used to read and write about them, but at some point the organization of ideas starts to dominate the mere language abilities. And it helps greatly to have some powerful ideas under one’s belt to better acquire more powerful ideas.”

Because literature is about ideas, Kay connects the notion of literacy firmly to literature:

“What is literature about? Literature is a conversation in writing about important ideas. That’s why Euclid’s Elements and Newton’s Principia Mathematica are as much a part of the Western world’s tradition of great books as Plato’s Dialogues. But somehow we’ve come to think of science and mathematics as being apart from literature.”

There are echoes here of Papert’s lament about mathophobia, not fear of math, but the fear of learning that underlies C.P. Snow’s “two cultures,” and which surely underlies our society’s love-hate relationship with computing. Kay’s warning that too few of us are truly fluent with the ways of thinking that have shaped the modern world finds an anchor here. How is it that Euclid and Newton, to take Kay’s favourite examples, are not part of the canon, unless one’s very particular scholarly path leads there? We might argue that we all inherit Euclid’s and Newton’s ideas, but in distilled form. But this misses something important … Kay makes this point with respect to Papert’s experiences with Logo in classrooms:

“Despite many compelling presentations and demonstrations of Logo, elementary school teachers had little or no idea what calculus was or how to go about teaching real mathematics to children in a way that illuminates how we think about mathematics and how mathematics relates to the real world.” (Maxwell, pp. 135-137)

Just a note of clarification: I refer back to what Maxwell said re. Logo and mathematics. Papert did not use his language to teach programming as an end in itself. His goal was to use a computer to teach mathematics to children. Programming with Logo was the means for doing it. This is an important concept to keep in mind as one considers what role computer programming plays in education.

The problem, in Kay’s portrayal, isn’t “computer literacy,” it’s a larger one of familiarity and fluency with the deeper intellectual content; not just that which is specific to math and science curriculum. Kay’s diagnosis runs very close to Neil Postman’s critiques of television and mass media … that we as a society have become incapable of dealing with complex issues.

“Being able to read a warning on a pill bottle or write about a summer vacation is not literacy and our society should not treat it so. Literacy, for example, is being able to fluently read and follow the 50-page argument in [Thomas] Paine’s Common Sense and being able (and happy) to fluently write a critique or defense of it.” (Maxwell, p. 137)

Extending this quote (from “The Early History of Smalltalk”), Kay went on to say:

Another kind of 20th century literacy is being able to hear about a new fatal contagious incurable disease and instantly know that a disastrous exponential relationship holds and early action is of the highest priority. Another kind of literacy would take citizens to their personal computers where they can fluently and without pain build a systems simulation of the disease to use as a comparison against further information.

At the liberal arts level we would expect that connections between each of the fluencies would form truly powerful metaphors for considering ideas in the light of others.

Continuing with Maxwell (and Kay):

“Many adults, especially politicians, have no sense of exponential progressions such as population growth, epidemics like AIDS, or even compound interest on their credit cards. In contrast, a 12-year-old child in a few lines of Logo [...] can easily describe and graphically simulate the interaction of any number of bodies, or create and experience first-hand the swift exponential progressions of an epidemic. Speculations about weighty matters that would ordinarily be consigned to common sense (the worst of all reasoning methods), can now be tried out with a modest amount of effort.”

Surely this is far-fetched; but why does this seem so beyond our reach? Is this not precisely the point of traditional science education? We have enough trouble coping with arguments presented in print, let alone simulations and modeling. Postman’s argument implicates television, but television is not a techno-deterministic anomaly within an otherwise sensible cultural milieu; rather it is a manifestation of a larger pattern. What is wrong here has as much to do with our relationship with print and other media as it does with television. Kay noted that “In America, printing has failed as a carrier of important ideas for most Americans.” To think of computers and new media as extensions of print media is a dangerous intellectual move to make; books, for all their obvious virtues (stability, economy, simplicity) make a real difference in the lives of only a small number of individuals, even in the Western world. Kay put it eloquently thus: “The computer really is the next great thing after the book. But as was also true with the book, most [people] are being left behind.” This is a sobering thought for those who advocate public access to digital resources and lament a “digital divide” along traditional socioeconomic lines. Kay notes,

“As my wife once remarked to Vice President Al Gore, the ‘haves and have-nots’ of the future will not be caused so much by being connected or not to the Internet, since most important content is already available in public libraries, free and open to all. The real haves and have-nots are those who have or have not acquired the discernment to search for and make use of high content wherever it may be found.” (Maxwell, pp. 138-139)

I’m still trying to understand myself what exactly Alan Kay means by “literature” in the realm of computing. He said that it is a means for discussing important ideas, but in the context of computing, what ideas? I suspect from what’s been said here he’s talking about what I’d call “model content,” thought forms, such as the idea of an exponential progression, or the concept of velocity and acceleration, which have been fashioned in science and mathematics to describe ideas and phenomena. “Literature,” as he defined it, is a means of discussing these thought forms–important ideas–in some meaningful context.

In prior years he had worked on that in his Squeak environment, working with some educators. They would show children a car moving across the screen, dropping dots as it went, illustrating velocity, and then, modifying the model, acceleration. Then they would show them Galileo’s experiment, dropping heavy and light balls from the roof of a building (real balls from a real building), recording the ball dropping, and allowing the children to view the video of the ball, and simultaneously model it via. programming, and discovering that the same principle of acceleration applied there as well. Thus, they could see in a couple contexts how the principle worked, how they could recognize it, and see its relationship to the real world. The idea being that they could grasp the concepts that make up the idea of acceleration, and then integrate it into their thinking about other important matters they would encounter in the future.

Maxwell quoted from an author named Andrew diSessa to get deeper into the concept of literacy, specifically what literacy in a type of media offers our understanding of issues:

The hidden metaphor behind transparency–that seeing is understanding–is at loggerheads with literacy. It is the opposite of how media make us smarter. Media don’t present an unadulterated “picture” of the problem we want to solve, but have their fundamental advantage in providing a different representation, with different emphases and different operational possibilities than “seeing and directly manipulating.”

What’s a good goal for computing?

The temptation in teaching and learning programming is to get students familiar enough with the concepts and a language that they can start creating things with it. But create what? The typical cases are to allow students to tinker, and/or to create applications which gradually become more complex and feature-rich, with the idea of building confidence and competence with increasing complexity. The latter is not a bad idea in itself, but listening to Alan Kay has led me to believe that starting off with this is the equivalent of jumping to a conclusion too quickly, and to miss the point of what’s powerful about computers and programming.

I like what Kay said in “The Early History of Smalltalk” about this:

A twentieth century problem is that technology has become too “easy.” When it was hard to do anything whether good or bad, enough time was taken so that the result was usually good. Now we can make things almost trivially, especially in software, but most of the designs are trivial as well. This is inverse vandalism: the making of things because you can. Couple this to even less sophisticated buyers and you have generated an exploitation marketplace similar to that set up for teenagers. A counter to this is to generate enormous dissatisfaction with one’s designs using the entire history of human art as a standard and goal. Then the trick is to decouple the dissatisfaction from self worth–otherwise it is either too depressing or one stops too soon with trivial results.

Edit 4-5-2013: I thought I should point out that this quote has some nuance to it that people might miss. I don’t believe Kay is saying that “programming should be hard.” Quite the contrary. One can observe from his designs that he’s advocated the opposite. Not that technology should mold itself to what is “natural” for humans. It might require some training and practice, but once mastered, it should magnify or enhance human capabilities, thereby making previously difficult or tedious tasks easier to accomplish and incorporate into a larger goal.

Kay was making an observation about the history of technology’s relationship to society, that the effect on people of useful technology being hard to build has generally caused the people who created something useful to make it well. What he’s pointing out is that people generally take the presence of technology as an excuse to use it as a crutch, in this case to make immediate use of it towards some other goal that has little to do with what the technology represents, rather than an invitation to revisit it, criticize its design, and try to make it better. This is an easy sell, because everyone likes something that makes their lives easier (or seems to), but we rob ourselves of something important in the process if that becomes the only end goal. What I see him proposing is that people with some skill should impose a high standard for design on themselves, drawing inspiration for that standard from how the best art humanity has produced was developed and nurtured, but guard against the sense of feeling small, inadequate, and overwhelmed by the challenge.

Maxwell (and Kay) explain further why this idea of “literacy” as being able to understand and communicate important ideas, which includes ideas about complexity, is something worth pursuing:

“If we look back over the last 400 years to ponder what ideas have caused the greatest changes in human society and have ushered in our modern era of democracy, science, technology and health care, it may come as a bit of a shock to realize that none of these is in story form! Newton’s treatise on the laws of motion, the force of gravity, and the behavior of the planets is set up as a sequence of arguments that imitate Euclid’s books on geometry.”

The most important ideas in modern Western culture in the past few hundred years, Kay claims, are the ones driven by argumentation, by chains of logical assertions that have not been and cannot be straightforwardly represented in narrative. …

But more recent still are forms of argumentation that defy linear representation at all: ‘complex’ systems, dynamic models, ecological relationships of interacting parts. These can be hinted at with logical or mathematical representations, but in order to flesh them out effectively, they need to be dynamically modeled. This kind of modeling is in many cases only possible once we have computational systems at our disposal, and in fact with the advent of computational media, complex systems modeling has been an area of growing research, precisely because it allows for the representation (and thus conception) of knowledge beyond what was previously possible. In her discussion of the “regime of computation” inherent in the work of thinkers like Stephen Wolfram, Edward Fredkin, and Harold Morowitz, N. Katherine Hayles explains:

“Whatever their limitations, these researchers fully understand that linear causal explanations are limited in scope and that multicausal complex systems require other modes of modeling and explanation. This seems to me a seminal insight that, despite three decades of work in chaos theory, complex systems, and simulation modeling, remains underappreciated and undertheorized in the physical sciences, and even more so in the social sciences and humanities.”

Kay’s lament too is that though these non-narrative forms of communication and understanding–both in the linear and complex varieties–are key to our modern world, a tiny fraction of people in Western society are actually fluent in them.

“In order to be completely enfranchised in the 21st century, it will be very important for children to become fluent in all three of the central forms of thinking that are now in use. [...] the question is: How can we get children to explore ways of thinking beyond the one they’re ‘wired for’ (storytelling) and venture out into intellectual territory that needs to be discovered anew by every thinking person: logic and systems ‘eco-logic?’” …

In this we get Kay’s argument for ‘what computers are good for’ … It does not contradict Papert’s vision of children’s access to mathematical thinking; rather, it generalizes the principle, by applying Kay’s vision of the computer as medium, and even metamedium, capable of “simulating the details of any descriptive model.” The computer was already revolutionizing how science is done, but not general ways of thinking. Kay saw this as a the promise of personal computing, with millions of users and millions of machines.

“The thing that jumped into my head was that simulation would be the basis for this new argument. [...] If you’re going to talk about something really complex, a simulation is a more effective way of making your claim than, say, just a mathematical equation. If, for example, you’re talking about an epidemic, you can make claims in an essay, and you can put mathematical equations in there. Still, it is really difficult for your reader to understand what you’re actually talking about and to work out the ramifications. But it is very different if you can supply a model of your claim in the form of a working simulation, something that can be examined, and also can be changed.”

The computer is thus to be seen as a modeling tool. The models might be relatively mundane–our familiar word processors and painting programs define one end of the scale–or they might be considerably more complex. [my emphasis -- Mark] It is important to keep in mind that this conception of computing is in the first instance personal–”personal dynamic media”–so that the ideal isn’t simulation and modeling on some institutional or centralized basis, but rather the kind of thing that individuals would engage in, in the same way in which individuals read and write for their own edification and practical reasons. This is what defines Kay’s vision of a literacy that encompasses logic and systems thinking as well as narrative.

And, as with Papert’s enactive mathematics, this vision seeks to make the understanding of complex systems something to which young children could realistically aspire, or that school curricula could incorporate. Note how different this is from having a ‘computer-science’ or an ‘information technology’ curriculum; what Kay is describing is more like a systems-science curriculum that happens to use computers as core tools:

“So, I think giving children a way of attacking complexity, even though for them complexity may be having a hundred simultaneously executing objects–which I think is enough complexity for anybody–gets them into that space in thinking about things that I think is more interesting than just simple input/output mechanisms.” (Maxwell, pp. 132-135)

I wanted to highlight the part about “word processors” and “paint programs,” because this idea that’s being discussed is not limited to simulating real world phenomena. It could be incorporated into simulating “artificial phenomena” as well. It’s a different way of looking at what you are doing and creating when you are programming. It takes it away from asking, “How do I get this thing to do what I want,” and redirects it to, “What entities do we want to make up this desired system, what are they like, and how can they interact to create something that we can recognize, or otherwise leverages human capabilities?”

Maxwell said that computer science is not the important thing. Rather, what’s important about computer science is what it makes possible: “the study and engagement with complex or dynamic systems–and it is this latter issue which is of key importance to education.” Think about this in relation to what we do with reading and writing. We don’t learn to read and write just to be able to write characters in some sequence, and then for others to read what we’ve written. We have events and ideas, perhaps more esoteric to this subject, emotions and poetry, that we write about. That’s why we learn to read and write. It’s the same thing with computer science. It’s pretty worthless, if we as a society value it for communicating ideas, if it’s just about learning to read and write code. To make the practice something that’s truly valuable to society, we need to have content, ideas, to read and write about in code. There’s a lot that can be explored with that idea in mind.

Characterizing Alan Kay’s vision for personal computing, Maxwell talked about Kay’s concept of the Dynabook:

Alan Kay’s key insight in the late 1960s was that computing would become the practice of millions of people, and that they would engage with computing to perform myriad tasks; the role of software would be to provide a flexible medium with which people could approach those myriad tasks. … [The] Dynabook’s user is an engaged participant rather than a passive, spectatorial consumer—the Dynabook’s user was supposed to be the creator of her own tools, a smarter, more capable user than the market discourse of the personal computing industry seems capable of inscribing—or at least has so far, ever since the construction of the “end-user” as documented by Bardini & Horvath. (p. 218)

Kay’s contribution begins with the observation that digital computers provide the means for yet another, newer mode of expression: the simulation and modeling of complex systems. What discursive possibilities does this new modality open up, and for whom? Kay argues that this latter communications revolution should in the first place be in the hands of children. What we are left with is a sketch of a possible new literacy; not “computer literacy” as an alternative to book literacy, but systems literacy—the realm of powerful ideas in a world in which complex systems modelling is possible and indeed commonplace, even among children. Kay’s fundamental and sustained admonition is that this literacy is the task and responsibility of education in the 21st century. The Dynabook vision presents a particular conception of what such a literacy would look like—in a liberal, individualist, decentralized, and democratic key. (p. 262)

I would encourage interested readers to read Maxwell’s paper in full. He gives a rich description of the problem of computers in the educational context, giving a much more detailed history of it than I have here, and what the best minds on the subject have tried to do to improve the situation.

The main point I want to get across is if we as a society really want to get the greatest impact out of what computers can do for us, beyond just being tools that do canned, but useful things, I implore educators to see computers and programming environments more as apparatus, instruments, media (the computers and programming environments themselves, not what’s “played” on computers, and languages and metaphors, which are the media’s means of expression, not just a means to some non-expressive end), rather than as agents and tools. Sure, there will be room for them to function as agents and tools, but the main focus that I see as important in this subject area is in how the machine helps facilitate substantial pedagogies and illuminates epistemological concepts that would otherwise be difficult or impossible to communicate.

—Mark Miller,
http://tekkie.wordpress.com

Read Full Post »

Bret Victor, a former designer at Apple, is working on a way to use a computer to make math more meaningful. I can see that he really gets the representational aspect, that the symbols are not the math, just a way to represent it, and it’s not a particularly good way to represent it. This is not the whole of math encapsulated into something that’s easy to understand (math is about assertions and inferences of relationships, which are then proved or disproved), but it’s an alternative to using symbols for representing complex relationships.

Here’s an article talking about Bret’s work on an early version of something he’s working on for the iPad.

Great stuff, and I congratulate him on finding a good use for a computer!

Read Full Post »

This is from Bryan Magee’s 15-part series The Great Philosophers, broadcast on BBC2 in 1987. Here he talks with Hilary Putnam about the philosophy of science.

Alan Kay has talked about how most people don’t understand how science worked in the 20th century, much less the present century. Our schools still teach science in a 19th century fashion in terms of how people can approach knowledge. This episode of the show amply demonstrates this disconnect.

As I studied what was said here about scientific thinking up until the late 19th century, it reminded me a lot of how I was taught computer science. It was thought to be a process of adding on to existing knowledge, and sorting out any inconsistencies. With rare exceptions, alternatives to existing models were not discussed, or even made known to students.

I’m going to put the notes I took from this episode below each section of video, because I found it hard to follow the arguments without going through them slowly, and looking at what Magee and Putnam said explicitly.

Magee: The religious world view has been largely replaced by a world view purportedly derived from science, since the 17th century.

Science was seen as a process of “adding” and sorting for 300 years, up until the late 19th century. The view of knowledge was that it grew by accumulation. Science was seen as getting its success from an inductive method. For 300 years educated people thought of the Universe as just matter in motion. They thought if we went on long enough, we’d find out everything about the Universe there was to know. This whole idea has been abandoned by science, but non-scientists think that scientists still think this way.

Kant challenged the “correspondence” view of truth, that theories correspond directly to reality without nuances, that the world makes its truths apparent, and scientists just find out what that is and write it down. Kant said there’s a contribution of the thinking mind. Truth depends on what exists, and on the mind of the observer. Scientists have come to a similar view, that theories are not merely dictated to us by the “facts.”

The categories and interpretations we use, the ideas within which we organize our observations, are our contributions. The world that’s perceived by us is partly contributed to by external effects, and is partly made up of categories and ways of seeing things that come from us. [Mark says: I think Plato's notion of "forms" also applies here, in terms of our theories. We could equate a theory of a phenomenon to its form in our own minds, and we could recognize that if a phenomenon is unfamiliar enough, different people will create different forms of it in their own minds.]

In the late 19th century the views of scientists changed to realize that the old theories could be wrong. The more modern view is that not only is our view of reality partly mind-dependent, but there are alternatives, and the concepts we impose on the world may not be the right ones, we may have to change them, and there is an interaction between what we contribute and what we find out. It was realized that there were alternative descriptions of some things that were equally as valid.

The new conception of science is that theories are constantly being replaced by newer and better ones, which are richer, that explain phenomena more fully, and there’s a mystery to our universe which will never be completely discovered. The view about “truth” that Putnam said was coming into use more and more in science is the idea that there cannot be a separation between what’s considered true and what our standards of assertability are. So the way that mind-dependence comes in is the fact that what’s true and what’s false is partly a function of what our standards of truth and falsity are. That depends on our interests, which change over time. Putnam defined “interests” in a cultural context, such as, in our modern world we’d recognize that there’s a policeman on the corner. Someone from a tribal culture, which may have no formal social services, wouldn’t recognize a policeman, but would instead see “someone in blue” on the corner.

Even facts within theories can have alternatives, as was evidenced by the theory of relativity.

A scientific theory can be useful even if nobody really understands what it means (quantum mechanics). [Mark says: You could also say the same about Newton's theory of gravity.]

Putnam thinks the way in which the old scientific view (pre-19th century) was destructive was that since it saw scientific findings as objective facts which were accumulated over time, then everything else was considered non-knowledge, that couldn’t even be considered true or false.

Real interesting! Putnam and Magee talk about how computer science, through an interaction with computer simulations, has created a growth of knowledge about the human mind. This relates to what I’ve read about Licklider’s use of computers at MIT in the 1950s, in Waldrop’s book, “The Dream Machine.”

Edit 5-4-2011: I had a brief conversation with Alan Kay about the main theme of this program, and I put particular focus on this part, where Magee and Putnam discussed the role that computer science has played in the advancement of knowledge in other areas of research. He zeroed in on this part, saying that it was a misperception of what really happened, at least in relation to Licklider (and Engelbart). He said the advances in knowledge from computer science have been paradigm shifts, not advancements by interaction. He pointed out that the theory of evolution did not begin in the field of biology, as Magee asserts. He also said that computers did not begin as “a self-conscious analogy to the human mind,” but rather as machines to run calculations. I knew that. I thought Magee’s description of this was rather romantic, and other historical accounts have agreed with his assessment, so I let it slide, but I have since had second thoughts about that.

Magee: Most people with college degrees have no idea what Einstein’s theory of relativity is all about, more than 70 years after it was published. It’s done very little to influence their view of the world. Isn’t there a danger that science and mathematics are racing ahead, and the whole range of insight that that’s giving us into the Universe simply isn’t filtering through to the layman?

Putnam: There was a text on Special Relativity called “Space-Time Physics” that was designed for the first month of the first college physics course, and the authors hoped that someday it would be taught in high schools.

The question and answer above really struck a chord with me. First of all, I didn’t encounter Einstein’s theory of relativity in my first semester physics course in college. All we covered, that I remember, was Newtonian mechanics, though at a more detailed and advanced level than what we got in high school.

The discussion that Magee and Putnam had about General Relativity, and the risk we take with science “racing past” the rest of society, I think, makes a good case for Alan Kay’s efforts to teach more advanced math concepts to children, because without that, they’re never going to understand it. To put this in perspective, take a look at General Relativity, and think about the understanding of mathematics that would be required to understand it.

Strangely enough, I got more exposure to Einstein’s theories of relativity when I was in Jr. high school (1982-’85) than I got at any other time. We watched parts of Carl Sagan’s Cosmos series. In it Sagan talked about Einstein’s theories of relativity, and included Einstein’s notion of gravity as warped space-time. Farther back than that, I had been fascinated by the idea of black holes, since I was in 4th grade. I read all I could on them, and I learned some very strange things: that not even light could escape from them, and that matter was destroyed upon entering them, for all intents and purposes, though I think the evidence still supports the idea of conservation of matter. It’s just that the matter gets separated into its component parts, and some of the matter is converted into energy.

I got exposed a bit to a theory of gravity that was different from Einstein’s or Newton’s outside of school, by a toy inventor, of all people. So I knew there were other theories besides those that were commonly accepted. What became clear to me after exposure to these ideas was that gravity is a fascinating mystery. We didn’t know what caused it then, and we don’t know now, not really, except for mass. The question that would not go away for me was what about mass causes it? The idea that mass causes it just because it exists never satisfied me. The other forces were explained through phenomena I could relate to, but gravity was different.

What Einstein’s theory explains is that gravity is not a force in the way that we think about other forces. His theory said that matter warps space-time, and it is this warping which creates the perception of a force acting on objects and energy. The way Sagan explained it is that we are all “sliding” inward towards the center of the gravity well, on this distortion, and what keeps us from going to the center of the well is the outward force exerted by the earth we stand on. Scientists have tried to explain it using an analogy of a ball setting on a piece of taut fabric, which creates a dip in it. If you toss a marble onto the fabric, it will fall towards the larger ball, due to the anomaly in the fabric. This is not a great analogy, because in it, gravity is pulling the larger ball down creating the dip in the fabric. If you can disregard that fact, what they are trying to get across is its the distortion of the fabric that alters the path of the marble, not any force. In fact what Einstein’s theory says is that there is something about matter that causes this distortion in space-time. That could be attributed to a force, but from everything I’ve studied about the theory so far, Einstein doesn’t say that. That’s left as “a problem for the reader,” so to speak: How does matter create this distortion?

An example of the way school gets science wrong

High school physics was odd to me, because we talked about stuff like how electrons had both the property of a particle and a wave (as Putnam discussed above), a very interesting idea, but when it came to gravity, all we focused on was Galileo’s and Newton’s notions of it, particularly Newton’s Universal Law of Gravitation. One of the things I remember being emphasized was that “this law is the same throughout the Universe.” For the sake of argument, from our perspective, being on Earth, I was willing to accept that claim, but I remember being a bit skeptical that it was really true. I knew that we hadn’t really explored the whole universe, and that we hadn’t even come close to testing this notion everywhere. I was open to the idea that someday we might find an exception to this notion if we were to theoretically explore the Universe, which is something that may never happen (I didn’t even know about Mercury’s orbit, which doesn’t fit Newton’s theory as well as the orbits of the other planets). So, for practical purposes, we could assume that it’s “universal.”

We talked about Einstein’s theory of Special Relativity, and what was really fascinating about that was E = mc2, that there’s a relationship between matter and energy that’s only “separated” by the square of the speed of light. My memory, though, is we hardly talked about General Relativity at all, except perhaps in a historical context. Looking back on this, it’s rather obvious to see why. In high school science we were expected to get a little more into the details of scientific theories, and work with the math concepts more. The school system hadn’t prepared us to work with the notion of General Relativity at that level. So in effect we skipped it, but the conceit that was presented in class was that Newton’s law of gravity was “the truth.”

I remember being asked a question on a physics test that asked, “If aliens visited Earth, would we find that they have the same knowledge of gravity as we do?” I paused. This was an interesting question to me, because I thought it was asking me to consider what understanding another race of intelligent beings would have about this phenomenon. I asked myself, if space aliens existed that were intelligent enough to build craft for interstellar travel, would they have the same ideas about gravity as we do? I answered, “Maybe.” I added something about how since the aliens had managed to make the journey from whatever star system they came from, that their technology was probably more advanced than ours (I mean, we haven’t tried this yet, so that was a good guess), and maybe they had a better understanding of gravity than we did, particularly what caused it. I hedged a bit, but I guessed that there was probably a link between technological development and greater scientific understanding of our universe. Granted, this was a totally speculative answer, but it was a speculative question, as far as I was concerned.

My physics teacher marked this answer wrong. I was floored! I wondered, “What did she expect?” I asked her about it after class, and she said the answer she expected was something along the lines of, “Yes, because the Law of Gravity is universal.” I was so disappointed (in her). It immediately hit me that, “Oh, yeah. I remember we talked about that.” I could’ve almost kicked myself for thinking that she had asked a thought-provoking question, and falling for it! I was supposed to remember to recall what we had talked about in class. I wasn’t supposed to think on it! Duh! How could I have been so stupid? That’s really how perverse and offensive this was. It brings to mind the fictional short story of “Harrison Bergeron,” now that I think about it… However, trying not to see that she was telling me not to think, I tried to talk her through my reasoning, because I thought I gave a legitimate answer. I told her about the other notions of gravity I knew about, and the questions they raised for me. She wouldn’t hear of it. I think I said in a final protest, “Do you really think we’ve discovered everything there is to know about gravity?!” In any case, she didn’t answer me. I walked out of the classroom exasperated. It was one of the most disillusioning experiences of my life. It made me fume!

Looking back on things like this, she probably didn’t even understand what a good question she had asked. Secondly, there were other instances where this happened in my schooling. Sometimes I wanted to think through things and come up with original answers, not merely regurgitate what I had been fed, and I got penalized for it. She and I had not been getting along for most of the time while I was in her class, and I think it was over issues like this. So this was nothing new, but this incident revealed a disturbing fact to me in a way that was so obvious, I couldn’t just brush it off as a misunderstanding between us: Her approach to science was that we were supposed to accept what she said as truth. We were not supposed to think about it, or question it. The only thinking we were supposed to do was in calculating results from experiments, but a lot of that was applying the “correct” formulas. More memorization. Nevertheless, I got an “A” in her class.

Looking at this from a “mountaintop” view, I think this example shows the split between 20th century scientific thinking, and the 19th century thinking that’s been used to teach science in schools. I saw a discussion recently where Alan Kay talked about this with the No Child Left Behind policy, that for students who were developing an understanding of scientific thinking, they had to, on the one hand, gain real understanding, and on the other, remember to answer “wrongly” on the test. That summed up the experience I describe above! I’ve used my example sometimes when I’ve heard people complain about this, because I can say to them I got the same treatment when I was in my high school science classes, more than 20 years ago. As far as I’m concerned, this policy is just taking that idea of instruction, which has been around for years, to its logical conclusion. It’s now metastasized throughout the public education system, at least in the areas that are tested for proficiency, whereas in my day there were exceptions.

—Mark Miller,
http://tekkie.wordpress.com

Read Full Post »

The title of this post is from a verbal gaffe that Dan Quayle committed when he gave a speech at the United Negro College Fund (now called “UNCF”, their slogan being “A mind is a terrible thing to waste”) when he was vice-president. I use it as a symbolic way of introducing this subject.

I came upon the following videos on YouTube. It is a dramatization of Ayn Rand’s thoughtful rant (nay, “indictment” is more like it) of our society’s promotion and acceptance of irrationality, through her character named John Galt, in her novel, “Atlas Shrugged”. It’s called “This is John Galt speaking…,” performed by Christopher Hurt, with video added by Richard Gleaves.

I am not wholeheartedly endorsing Rand’s Objectivist philosophy, but I agree strongly with her criticism of our society in the broadest sense. At times I have felt like screaming some of these criticisms, because I have seen the ignorance described, which seems impermeable, and I understand some things about the destructiveness it can produce. Screaming about it does little good, though. I am reminded of what Adlai Stevenson said of Eleanor Roosevelt, that she’d rather light a candle than curse the darkness.

John Galt’s speech is provocative, but it is provocation with a purpose, to get people to think about what has produced our modern world, and its problems, to think about the causes, not just the effects, and to perish the thought that it all comes about by magic. That’s always valuable, to get a reality check. The reason I feature this rant is not to sway people towards a particular point of view, but to say that even though in our private lives we may find it valuable to hold beliefs in the supernatural, whether they be based in religious or secular views, they have real consequences in the health of our society when they are brought into the realm of politics, because they influence policy in unhealthy directions.

I am not putting all parts of Galt’s monologue here (the original dramatization has 17 parts), but certain key parts that I found thought-provoking, and valuable to share. I have long been interested in what creates and sustains modern civilization, and I think the Objectivist philosophy, as portrayed here, is an important piece of that, but I found it too limiting to be all-encompassing. In my encounters with philosophy, I’ve always found that materialism of any sort is too limiting as a singular governing principle for society. I would classify Objectivism as a “libertarian materialism.” I see it as just something to think about and consider.

Rand goes after all purveyors of irrationality in her time, but she seems to reserve particular scorn for mystics of all stripes, and catholicism. I find her criticism valuable from an anthropological perspective. If you take out the labels of different political systems and religions, and just look at their characteristics, it’s easier to see why those characteristics are probably destructive, as opposed to thinking that a particular instance of those characteristics, with a label, is destructive. That’s missing the forest for the trees.

Richard Gleaves used his own imagery and audio to illustrate what Galt was talking about. I do not agree with all of the imagery used, particularly regarding religion, and some political points. It gives one the sense that all religion is like what is portrayed. I can say from experience that it’s not. Not all sects demand thoughtless obedience, though some popular forms of religion do promote this, and I agree with the specific criticism against that. While I think some of the imagery is relevant, I found it was more valuable to pay attention to the words, and to separate them from the imagery.

Rand seems to attack most forms of authority, a view I don’t agree with. I would just promote the idea of skepticism of authority.

The premise of this monologue is the society in Rand’s fictional tale has collapsed, and a character named John Galt, whom people in the story have wondered about, reveals himself to the world, telling everyone why society has collapsed, and how to bring it back to life.

Part 1: This is John Galt Speaking

Parts 3 and 4: The Morality of Death

There is a brief segment showing a “Hitler youth” rally where it’s difficult to see the subtitles. They say:

“Because you are the epitome of altruism, this youth wants to be altruistic. Because you are our ideal of loyalty, we also want to be loyal. Adolph Hitler, leader of German youth, will speak!”

Part 7: Epistemology, and Free Will

Part 7 is my favorite segment out of the whole series. Gleaves uses clips from the movie, “The Miracle Worker”. The way this was put together is poetic. As I watched it I reflected on myself. At times I feel like Helen Keller’s teacher, trying to reach others. At other times I feel like Helen herself, going for long stretches feeling lost, mystified, and babbling about nothing of much value. Then I have experiences that feel like her at the water pump. The connection is made, and POW! Realization! The joy I feel afterward is like her running around, seeing a little better, taking it all in with a voracious hunger. Wonderful.

Part 8: Evasion, and Causality

Edit 2-19-2011: Emotions (this comes from a new version of the series Gleaves created more recently. It’s called Part 7 there, but it comes after “Evasion and Causality”)

Part 9: The Men of the Mind, and Value and Virtue

Part 15: The destructiveness of mysticism in all its forms, religious and secular

In a way, this post is a follow-up to an interview with Judy Shelton I featured on here about a year ago. She expressed concern that with the bent the U.S. government had at the time, that business owners, the people who create wealth, will eventually go on strike, “like John Galt,” because society no longer appreciates the personal risks they take to create products and services, and create jobs.

What I really like about this is it doesn’t just complain about society, but illustrates the difference between a non-thinking society and a thinking society, and that this difference matters a great deal. The hope is that people will “wake up” and realize that this “dream” of certainty they’ve been in is not all its cracked up to be. While there will always be things we don’t know, there’s a lot less that’s “unknowable” than people think, and it would behoove us to find out as much about what’s really going on as possible, because it DOES affect us.

Like I said, this philosophy is not all-inclusive in terms of the important things that make up a functioning modern society. One thing it neglects is the fact that “intellectual life” is not just in the private sector. It’s also in our universities, at least in some holdouts. There is a healthy element of competition in this system, but in a well functioning system of this sort, the goal should not just be profit. An unfortunate fact I’ve been reading about is that universities are increasingly seeing profit as a primary goal. This narrows the focus of academic study significantly, and not always to good ends. It’s not just happening here. It’s happening in the UK as well.

So while I think Objectivism provides a valuable message to consider, I think it’s good to keep in mind that it is a vantage point from which one can be jarred, and see reality a little better, but that there are other valuable intellectual perspectives to explore and keep in mind as well.

Read Full Post »

I saw this talk that Sir Ken Robinson gave at RSA (the Royal Society for the encouragement of the Arts, Manufactures, and Commerce) online a week ago, and I was deeply impressed with it. He talked about a book he wrote in 2008 called “The Element”, which tries to explain how people get into “their element”, a creative place within themselves where they feel at home. Another major topic of his book is a critique of education systems throughout the world, and a proposal for what might be a better way to educate.

Unfortunately this video does not contain the full talk, just the first 39 minutes. I assume that’s most of it. All I know is the video cut off the conversation. I tried looking around for a more complete version, but I haven’t found it yet.

I recognized a lot of my own learning experience about my talents in what Robinson said. A big thing that struck home for me is that there are many things I’m good at, but I don’t enjoy, and that a problem many people have is they “shoot low and succeed”. I spent part of my life doing these things because I am good at them, and they were rather like low hanging fruit. They were accessible things I could do to make money. That’s pretty important, I’ll grant you. Everyone needs a way to sustain themselves, and that involves looking at your circumstances practically at a certain level. I could even convince myself sometimes that a few of the things I did were the things I’d always wanted to do, because I felt like I was accomplishing something, making a contribution to the world, being rewarded for it, and it related to my true passion. I spent quite a bit of time on those few things. I could feel happy about them most of the time…for a while. With these endeavors I reached a point where my motivation to continue started to wane, and it was a rut I couldn’t get out of. Eventually I reached a point where I said, “I don’t want to do this anymore. It’s too frustrating. It’s unfulfilling. It’s not worth it.” Some would look at the trajectory of what happened and say I had outgrown these things. That’s true to a certain extent. Looking at it honestly, though, I’d say I had either gotten into these things in the first place because I thought they represented the whole domain, the full experience of what I was interested in, which I found out years later was not true, or I felt forced into it because while I did see other possibilities, I didn’t see how I could get to them. So I “settled”.

As I talked about earlier, I also came to a place a few years ago where I didn’t have any other “low hanging fruit” to grasp at that felt satisfying. Without that I felt lost for a little while. I had to realize it’s okay to shoot high for a big goal, even if it means I might fail to reach it. Robert Compton, a tech VC who produced the documentary “2 Million Minutes” talked about this with respect to students picking universities. It’s important to shoot high, even if you fail to get what you want. That doesn’t just mean shooting high because you can, but also because you have done the work to try to prepare for it. That ambition makes you more capable than those who shoot for the easy goals.

I felt for a long time before I embarked on this pursuit that there was something a bit wrong with me, certainly that I was a bit eccentric. I tried to conform more to what others expected, in a sense, but the strange thing is doing that felt like work! And besides, I don’t like trying to not be me. Imagine being a child and having a teacher tell you that you’re doing something wrong by doing your own creative activities, or you won’t amount to anything if you keep it up, in addition to all this. This is why Robinson says that education systems throughout the world tend to kill off our creativity in childhood. You have misunderstanding from your family, and perhaps your friends, and you get discouragement from your teachers. What’s a kid to do but try to conform in that environment? Not that this happened to me so much (I got plenty of encouragement in childhood). It’s just that I didn’t get it as I was entering into adulthood, and I didn’t know how to find a supportive community for my passion. What’s changed everything for me since then is the availability of quality information in the subject area I’m interested in on the internet.

Robinson didn’t talk about this much, but I’ve found that following my passion can be scary. If you’re accessing your own unique set of talents they can look odd to your friends and family. I’ve certainly gotten strange looks from some of my friends, and my mother has been worried for me from time to time. Of course they mean well. An important thing I’ve discovered is that if someone is making you feel wrong or foolish for pursuing what feels great to you, it’s worth looking at whether they’re right. Perhaps they’re trying to alert you to some practical realities you need to pay attention to for the time being, but it’s also worth considering that they could be wrong. Maybe it’s just something they can’t see clearly, and the unknown is scary. The main thing everyone’s noticed is that my behavior towards my pursuits has changed dramatically. I don’t have the same outlook towards them as I used to.

If you’re in the process of discovering your talents you also might be doing things that hardly anyone else around you is doing, and they can’t relate to it. You may see things in ways that few others recognize. You can end up feeling very alone, isolated. “Finding my tribe” has occupied my thoughts a lot lately. I’ve found a few kindred people, both locally and nationally, with whom I’ve been in communication from time to time.

Another big thing Robinson talked about is creativity is not just for special people with an inborn talent. He equated creativity to literacy, and that large numbers of people can be creative, but it may take some prompting and mentoring to help them develop it. He almost expressed it as a skill, because he set up some characteristics for it. Being creative is not passive. You’re creating something, doing work. Secondly, you’re coming up with original ideas that have value. So you’re having to engage your mind, and imagination, and perhaps work with your body, depending on what you’re trying to accomplish. My own experience is that this can be encouraged by setting out the premise that everyone is unique, and everyone has their own voice, their own perception, and their own ideas to contribute–that everyone has their own intrinsic integrity. It probably requires encouraging a sense of one’s individuality, one’s self, and taking some pride in it. An important point Robinson makes is that it’s important to develop people’s critical faculties as well. Creativity without criticism can lead to disasters.

Robinson has brought up elsewhere that the world’s modern education systems came into existence in the 19th century, largely oriented around supporting the Industrial Age. School was designed to inculcate habits needed for creating manufacturing workers. Other sources I’ve consulted have confirmed this. What this does is create a system where certain subjects and traits are selected and emphasized, and other subjects and traits are de-emphasized and rejected. It also makes very narrow selections about intelligence and talent, partly based around myths about them. We’ve heard of the term “gifted”. Robinson said it was like saying that we only want long jumpers (making a sports analogy). We know there are other sports, but this is the one that matters. If you are not a good long jumper, well there’s remedial education in the 100 meter dash. In addition, schools have unnecessarily separated subjects into absolutist categories, and this shuts off multidisciplinary learning opportunities.

Robinson doesn’t totally reject standardized testing. He used a medical test as an example. If he wanted to get his cholesterol tested, he’d want a standardized test. He wouldn’t want it rated according to something his doctor came up with. What he doesn’t like is that standardized testing has become the end-all be-all of public education. He complained that governments always insist on standardizing everything in education, which doesn’t work. Assessment is important, but the method of assessment is important as well. He said that creativity needs to be assessed, but there’s no objective systematic way to do it. It has to be assessed in its own context. This implies that the assessment must by its nature be subjective. In my view standardized tests might be better used as diagnostic tools, as he suggests by the medical example, rather than assessments of how much you’ve learned about a subject area, or assuming that they give a total view of intelligence. What he’d prefer is much more of an emphasis on good teaching, and this means hiring people who have a very good feel for, and are interested in what they teach, and are capable of engaging students in a way that’s compatible with where they are at. Bad teaching can turn students off to learning, defeating the purpose of education. I certainly know about that.

He pointed out, and this is ironic given that we’re talking about a school system that was designed for the Industrial Age, that school systems shun vocational skills, as if they’re unworthy. I’ve been somewhat guilty of having this prejudice. I don’t detest vocational training at all. I think it can be a positive thing for many people. What I react to is how I see schools and universities preferring vocational priorities for academic subjects, over going deep and exploring the ideas. In short it’s what Alan Kay would characterize as instrumental reasoning. It’s the idea that they’ll teach what’s perceived as contributing to the goal of advancing a career in particular sectors of the economy, and they won’t go into exploring the ideas, because it takes away from that goal. That’s the thinking, anyway. I disagree with the premise. There’s an emphasis on skills, and certain modes of thought, but not others.

As for me, I wouldn’t be satisfied with just theory. I love being hands-on with what I’m learning, and I like the idea of creating things that will be useful to people, but I like exploring the ideas at the same time. I’m not satisfied with just being given “how to” knowledge. I want to understand how things are the way they are, and I like creating a synthesis of ideas in order to create new ones. This is how I’ve been at least since I was a teenager. So I agree with his preference that abstract ideas should be combined with real world subject matter, artifacts, and materials. What I would emphasize is that exploration of these ideas and material things should be encouraged, getting into their “guts”. A lot of unplanned learning can take place this way, which to me is the best kind. :)

What I really like about Robinson’s philosophy of education is he says it’s a process of personal development, and that talents you will love can be buried very deep. You may not recognize them until you are exposed to a subject area, an activity, or an environment that brings it out of you. He emphasized that the point of his book is not so much about creativity as diversity of intelligence, and that when he talks about creativity he’s not just talking about the arts.

I was struck by Robinson’s criticism of “back to basics” movements. I haven’t totally liked the idea of “back to basics”, either, because I think it has some weak ideas in important areas. It’s just that every effort to reform public education that’s gotten away from the “back to basics” ideas has turned into something worse. Robinson, in a broad sense, expressed better than I have what I’d like to see our educational system recognize. The thing is I am skeptical that our school system would make a good transition to what he recommends. He has called for a transformation or revolution in education. The only way I see this happening is as a result of forces that come from outside the system. There have been some small movements in the last few years to try to do this using the internet, to bring important lessons to the masses for those who are willing to find them. I really don’t expect this movement to be accepted by the public school system. If anything it will be seen as a threat if it grows, and there will be efforts to change it or try to make people not pay attention to it. It’s going to take parents becoming aware that other possibilities exist, and pursuing them with their children. Private or home schooling is another avenue to pursue. It’s going to take people making the change. “The system” is not going to do it on its own.

—Mark Miller,
http://tekkie.wordpress.com

Read Full Post »

I found this interview (video) with Diane Ravitch on her book, “The Death and Life of the Great American School System”, on C-SPAN’s “Book TV”. She was originally a supporter of No Child Left Behind and charter schools. She has since changed her mind, based on the evidence. I wasn’t particularly inspired by this interview, but I thought what she had to say was insightful.

My own view of school reform has changed over time. I was under the impression that past efforts had failed, but that NCLB and charter schools would be different, more successful. With some caveats it looks like I was wrong.

The one positive aspect I’ve heard about NCLB from educators is that for the first time people can see how well or badly different ethnic groups are doing in the public school system, and the contrasts are stark. Other than that I have heard very little that’s good about it. Ravitch says that charter schools on average do about as well as the public schools. This assertion is echoed by comments (below) from Lt. Governor of Colorado Barbara O’Brien, who’s former post was Education Secretary for Colorado. What’s important is her explanation as to why this is so.

No Child Left Behind

The No Child Left Behind (NCLB) bill was signed into law in 2002. At the time I was rather enthusiastic about it. I had my own conception of how it would work. I assumed it would bring something resembling “market discipline” to public schools. My idea for it was that schools would try various approaches for teaching subjects, and the tests would provide feedback and pressure to improve their teaching methods, given they have autonomy to figure that out. I figured that those who were “teaching to the test” were school environments which had previously been below standard. So “teaching to the test” would be an improvement. I assumed that the best schools would have no problems. The idea I’m getting lately is what happened was very different from what I expected.

I was particularly motivated to support the idea by a small documentary I saw on PBS showing how some schools were utterly failing kids with learning disabilities. It profiled a special Ed. teacher who fielded a bunch of young kids from different schools. Each was not able to read at grade level. It seemed like he had his own private teaching environment. He had found various ways of helping them compensate so that they could learn. His techniques were not being used in the schools where these kids came from. Rather than deal with them, the schools just shoved them aside, because they didn’t understand the students’ disabilities. The documentary showed the consequences of this failure. Some learning disabled students fell through the cracks into young adulthood. They had dropped out of school and were struggling. Statistically, many of them turned to crime. The most heartbreaking thing it revealed is that state governments literally plan future prison expansion years in advance based on current dropout statistics. The pattern had been there for years. States are just dealing with the reality and coping with it. The image it portrayed was clear: Those of you who make it and manage to become functional citizens have a chance. For those who don’t, we’re building a dreary prison cell for you. It’s ready and waiting. Granted, not all dropouts end up in prison, but according to the doc., significant numbers of them do. I definitely got a sense that this was an alarming situation and it needed to be addressed pronto. It was a crying shame this was happening.

I saw a PBS special a couple years ago on “how it’s been going so far” with NCLB. It seemed to be a balanced presentation of the reform, showing positive and negative aspects of it. What stood out to me is it showed that NCLB was having a negative impact even on the best schools in the country, and it got into some of the details on why. They profiled one such school. They interviewed a former science teacher there who basically said that the standardized science test misconstrues science, treating it as a static body of facts, when in fact scientific knowledge is constantly evolving as new discoveries are made. Sometimes old, well-established models are brought into doubt by new evidence. The teacher said that if her students followed what was currently being discovered they would actually score lower on the test, because it assumes that the established knowledge is the only correct answer.

As I learned more about the scientific outlook myself, I realized that the basis for the standardized science test was largely wrong. Part of science is a body of knowledge about models that scientists have constructed in an attempt to understand what they’re studying. These are commonly called “discoveries”. I imagine a standardized test could be devised for testing knowledge about these models, except to get it right they would need to be talked about in terms of ideas that have been tested, reviewed, and criticized to varying degrees, and which can be tested, thought about, and criticized further, rather than “facts” which are merely to be accepted. Some models are extremely reliable, as close to “facts” as science can get. The crucial thing that kids should be learning in school about science is it’s a way of thinking about what we see. It would be very difficult to test for this aspect in a standardized testing format, perhaps impossible, but it would be teaching what science really is.

Much the same could be said about how mathematics is tested (and taught). To the best of my knowledge at this point, mathematics is about testing the validity of assertions made about abstractions, and seeing patterns of relationships between abstractions, using logic. With some exceptions, this is hardly taught in secondary schools (In primary schools it’s harder to get the logic aspect across, perhaps until the later grades, due to the fact that the minds of young children are not developmentally prepared for symbolic, logical thinking. So it should probably be de-emphasized until they are older). Instead what’s typically taught in the best of environments in the current system is a lot of rules, techniques for problem solving, and pattern matching.

I heard a discussion recently where typical math and science education was called “literacy” training, and I think that pretty well sums up what the focus has been, going back to when I was in school. The problem is, as I’ve discussed previously, this doesn’t teach the whole of what math and science are. Instead it teaches aspects, just enough it’s thought to “get people going”, because the assumption is that knowing what these subjects really are should be reserved for the people who want to become mathematicians and scientists, the people who are interested and have a knack for it. What’s taught is background knowledge so that it can be applied to practical problems in the future. It’s thought that the only side benefits are that they’ll teach problem solving, and perhaps critical thinking skills. The assumption is for those purposes, that’s all that’s needed. The devotees can get into the more esoteric aspects (real math, real science) if they want. The goal is to get some of that knowledge, and some of those lessons that produce the desired side-effects into as many people as possible. In my view, the focus of NCLB, and prior standardized testing efforts, fit right in with these goals. It further reinforces the idea of teaching literacy in these subjects, not in how to think in “the way of the mathematician”, and “the way of the scientist”. From what I understand, most math and science teachers don’t get these subjects for what they truly are, either. I don’t mean to apply this criticism just to the modern era. This goes back to the beginning of public schooling in this country.

The second thing the PBS special showed (getting back to that) was how the testing rules did not take into account the issues that the school had to deal with. It cited cases where foreign students were admitted who didn’t speak English. They are required to do this by law. One case was of a foreign student who was required to take the standardized test two days after being admitted. Obviously the student did poorly, because he/she couldn’t read it (though the student was not illiterate in his/her native language). This lowered the school’s overall proficiency score. They had gotten several of these cases. This got the government’s attention. As a result (as per the rules) they came in and started firing administrators and staff. These were the accountability measures put into action.

One teacher who used to be with this school, and who had won the Teacher of the Year award, was heartbroken, because he felt he had to quit teaching. He couldn’t stand what the rules were doing to the school environment. The science teacher who was interviewed also left teaching, and instead stayed with the school in a support role. This got across the idea that rather than improving education, NCLB is watering it down.

As I thought about what NCLB might be doing, just on the academic level, I got the idea that maybe it’s forcing the schools toward a median, bringing poor bad schools up, and dragging good schools down. I’ve heard a few educators talk about it in these terms. This is not what I thought would be happening.

Charter schools

Another reform I thought had promise was the movement for charter schools. The idea was these were fairly close to public schools, but they were allowed more autonomy. They had more degrees of freedom so they could experiment.

Well, in August 2007 I got a bit of a reality check when I listened to Barbara O’Brien, Colorado’s Lt. Governor, in a radio interview on “Caplis & Silverman” at KHOW 630 AM. When asked why Colorado’s schools were not performing as well as expected, she said,

We were complacent. I think we just assumed everything was great, but the world is passing us by, and we’re now competing against countries that are really working hard on science and technology, and literacy. I mean, they have higher literacy rates in a lot of Third World countries than we do in the U.S.

On charter schools she said,

I have been a long-time charter supporter, as you know, and in fact helped write the legislation … I had higher hopes than it’s turned out. So I’m less committed to thinking that will solve our problems, and I’ll tell you why. Basically we’ve lost the knowledge of how to educate kids in tough subjects, you know, science, math, technology-based curriculum. We don’t teach hard literature. You know, we teach easier to read books these days. And so just because kids go to different schools, frankly, from the charter school experience, we’re not seeing that that makes much difference in test scores.

O’Brien went on to say that the intent of the charter school program in Colorado was that they would act as laboratories, and successful strategies would be brought over to public schools. There had been some successes. Efforts have been made to bring those strategies into the public school system, and results have improved.

She said, though, that most of the charter schools are really bad, and contrary to expectations it’s been nearly impossible to shut them down. The reason is charters are governed by local school boards, and like public schools they had succumbed to school system politics. O’Brien said,

We have created an education system, I think, that is easy on adults, and in doing that we’ve lost sight of what it means to run a system that’s really based on what the kids need to perform at a really high level. And where they go to school isn’t going to matter as much as figuring out what the right standards [need to be] to compete with China.

So, what to do? Reform after reform after reform doesn’t seem to do much of anything to improve the lot of public school students. The impression I’ve been getting after doing some research on this is that since the 1990s corporate/economic management outlooks have been imposed on the educational system in an effort to make it more efficient and effective, or in some cases serve certain corporate interests, and this turns out to be a big part of the problem. Basically school reform has been driven by people who either don’t understand education in a holistic way, or don’t understand it at all.

Ravitch goes into some detail on how NCLB and charter schools came about. She broadly answers the question, “What needs to be done?” Her answers are sobering. She says that fixing bad schools in the public system is not an easy problem. It can take many years to see improvement after sustained reform efforts are instituted, if one goes about it realistically. She said one of the things that’s damaged NCLB as a reform effort are the accountability measures: forcing staff to be fired after a few years of bad results. That just means you have to start all over again when you bring new staff in. Reformers live under the illusion (perhaps “delusion” would be a more appropriate term) that there are good, well-tested education models that will convey the important aspects of the subjects that schools want to teach in reliable ways to students. She says in reality no such models exist. Education is more of an art at this point than a science. There are a lot of factors that go into a successful school, and to just look at teaching methods as the answer is a vast oversimplification of the solution.

She said the pressure to conform to standard teaching methods is destroying real education, because you can’t treat teachers like robots. They need to understand the changes they’re expected to make from an educational perspective. I’ve been saying for a while that what would be preferable is if the teacher is interested in learning themselves, so they can teach what learning is about through their own pedagogy to their students, in addition to different ways of thinking.

Another big idea she wanted to get across is that “we need to develop a real curriculum, which we don’t really have right now.” I’m not sure what she means by that. She didn’t explain it. People think of teaching things like English, math, science, history, art, etc. as a curriculum. One aspect she might be referring to is something I’ve heard about in a nearby school district, and which has been standard in Montessori education for decades, which is creating a program that coordinates the teaching of related subjects at different grade levels. This is so that when a student advances, the school has tried to make sure that the student has developed the competencies they need to go on to the next subject without having to make up for a gap between the two, created either by the education program of the school district itself, or teachers who are not acting in concert with each other. What’s surprising to me is most schools, public, or perhaps even private, don’t think of this.

She said improvement involves a number of factors, including things that affect the students, like getting adequate sleep, getting good nutrition, motivation to learn, etc. Assuming that you can improve schools just by looking at the teachers and how their students score on standardized tests is too simplistic. I’ve been guilty of that POV. A non-obvious answer she gave is that the root of poor bad learning environments is poverty, and that a major part of the answer to improving education is addressing poverty. Maybe she was talking more about city support services. To me, she was talking about an issue that the school system has no control over. It has more to do with the local economy and the opportunities it makes possible. Maybe my view of poverty is too simplistic, but I’ve heard of many instances where the financial wealth of a family was not the controlling factor in whether the children were well educated. It was more a factor of whether the family valued education. Though I can see where if the whole family is focused on just surviving, learning school subjects goes out the window.

I don’t have any clear cut answers on how to make education better. I leave that to people who have looked into this more than I have. Apparently Ravitch’s book has become unusually popular in its genre. It sounds like it might be worth a look.

Edit 9-19-2010: Robert J. Samuelson wrote an article on “School Reform’s Meager Results”, and he said something I thought would be of interest:

Motivation comes from many sources: curiosity and ambition; parental expectations; the desire to get into a “good” college; inspiring or intimidating teachers; peer pressure. The unstated assumption of much school “reform” is that if students aren’t motivated, it’s mainly the fault of schools and teachers. The reality is that, as high schools have become more inclusive (in 1950, 40 percent of 17-year-olds had dropped out, compared with about 25 percent today) and adolescent culture has strengthened, the authority of teachers and schools has eroded. That applies more to high schools than to elementary schools, helping explain why early achievement gains evaporate.

Motivation is weak because more students (of all races and economic classes, let it be added) don’t like school, don’t work hard and don’t do well. In a 2008 survey of public high school teachers, 21 percent judged student absenteeism a serious problem; 29 percent cited “student apathy.” The goal of expanding “access” — giving more students more years of schooling — tends to lower educational standards.

Read Full Post »

This is the first in what I hope will be many posts talking about Structure and Interpretation of Computer Programs, by Abelson and Sussman. This and future posts will be based on the online (second) edition that’s available for free. I started in on this book last year, but I haven’t been posting about it because I hadn’t gotten to any interesting parts. Now I finally have.

After I solved this problem, I really felt that this scene from The Matrix, “There is no spoon” (video), captured the experience of what it was like to finally realize the solution. First realize the truth, that “there is no spoon”–separate form from appearance (referring to Plato’s notion of “forms”). Once you do that, you can come to see, “It is not the spoon that bends. It is only yourself.” I know, I’m gettin’ “totally trippin’ deep, man,” but it was a real trip to do this problem!

This exercise is an interesting look at how programmers such as myself have viewed how we should practice our craft. It starts off innocuously:

A function f is defined by the rule that f(n) = n if n < 3 and f(n) = f(n – 1) + 2f(n – 2) + 3f(n – 3) if n >= 3. Write a procedure that computes f by means of a recursive process. Write a procedure that computes f by an iterative process.

(Update 5-22-2010: Don’t read too much into the “cross-outs” I’m using. I’m just trying to be more precise in my description.) Writing it recursively is pretty easy. You just do a translation from the mathematical classical algebraic notation to Scheme code. It speaks for itself. The challenging part is writing the same thing a solution that gives you the same result using an iterative process. Before you say it can’t be done, it can!

I won’t say never, but you probably won’t see me describing how I solve any of the exercises, because that makes it too easy for CS students to just read this and copy it. I want people to learn this stuff for themselves. I will, however, try to give some “nudges” in the right direction.

  • I’ll say this right off the bat: This is not a (classical) mathematical an algebra problem you’re dealing with. It’s easy to fall into thinking this, especially since you’re presented with some algebra as something to implement. This is a computing problem. I’d venture to say it’s more about the mathematics of computing than it is about algebra. As developers we often think of the ideal as “expressing the code in a way that means something to us.” While this is ideal, it can get in the way of writing something optimally. This is one of those cases. I spent several hours trying to optimize the math algebraic operations, and looking for mathematical patterns that might optimize the recursive algorithm into an iterative one. Most of my mathematical the patterns I thought I had fell to pieces. It was a waste of time anyway. I did a fair amount of fooling myself into thinking that I had created an iterative algorithm when I hadn’t. It turned out to be the same recursive algorithm done differently.
  • Pay attention to the examples in Section 1.2.1 (Linear Recursion and Iteration), and particularly Section 1.2.2 (Tree Recursion). Notice the difference, in the broadest sense, in the design between the recursive and iterative algorithms in the sample code.
  • As developers we’re used to thinking about dividing code into component parts, and that this is the right way to do it. The recursive algorithm lends itself to that kind of thinking. Think about information flow instead for the iterative algorithm. Think about what computers do beyond calculation, and get beyond the idea of calling a function to get a desired result.
  • It’s good to take a look at how the recursive algorithm works to get some ideas about how to implement the iterative version. Try some example walk-throughs with the recursive code and watch what develops.
  • Here’s a “you missed your turn” signpost (using a driving analogy): If you’re repeating calculation steps in your iterative algorithm, you’re probably not writing an iterative procedure. The authors described the characteristics of a recursive and an iterative procedure earlier in the chapter. See how well your procedure fits into either description. There’s a fine line between what’s “iterative” and what’s “recursive” in Scheme, because in both cases you have a function calling itself. The difference is in a recursive procedure you tend to have the function calling itself more than once in the same expression. Whereas In an iterative procedure you tend to have a simpler calling scheme where the function only calls itself once in an expression (though it may call itself once in more than one expression inside the function), and all you’re doing is computing an intermediate result, and incrementing a counter, to input into the next step. You should not have operators which are “lingering”, waiting for a function call to return, as a rule, though they did show an example earlier of a function that was mostly iterative, with a little recursion thrown in now and then. With this exercise I found that I was able to find a solution that was strictly iterative.
  • As I believe was mentioned earlier in this chapter (in the SICP book), remember to use the parameter list of your function as a means for changing state.
  • I will say that both the recursive and the iterative functions are pretty simple, though the iterative function uses a couple concepts that most developers are not used to. That’s why it’s tricky. When I finally got it, I thought, “Oh! There it is! That’s cool.” When you get it, it will just seem to flow very smoothly.

Happy coding!

Read Full Post »

Once again, I return to the technique of using a metaphor created by a recent South Park episode (Season 13, Episode 10) to illustrate the way things are (in an entirely different subject). Warning: There is adult, offensive language in the video clips I use below. My usual admonition applies. If you are easily offended, please skip them.

The episode is about the popular perception of wrestling, promoted by the WWF, vs. the real sport. It uses the same theme as an earlier episode I used, which satirized Guitar Hero: The pop culture is taking something which involves discipline and hard work, with some redeeming quality, and turning it into something else entirely with no redeemable value. Rather than challenging us to be something more, it revels in what we are.

This is a follow-up post to “Does computer science have a future?” It fleshes out the challenge of trying to promote a real science in computing…with some satire.

I’ve been getting more exposure to the evolution of CS in universities, which extends to the issue of propping up CS in our high schools (which often just means AP CS), though there’s been some talk of trying to get it into a K-12 framework.

University CS programs have been hurting badly since the dot-com crash of 2001. Enrollments in CS dropped off dramatically to levels not seen since the 1970s. We’re talking about the days when mainframes and minicomputers seemed to be the only options. It’s not too much of a stretch to say that we’ve returned to that configuration of mainframes and terminals, and the thinking that “the world needs only 5 computers”.

After looking at the arc of the history of computing over the last 30 years, one could be excused for thinking that an open network like the internet and an open platform like the personal computer were all just a “bad trip”, and that things have been brought back to a sense of reasonable sobriety. This hides a deeper issue: Who is going to understand computing enough to deal with it competently? Can our universities orient themselves to bring students who have been raised in an environment of the web, video game consoles, iPods, and smart phones–who have their own ideas about what computers are–to an understanding of what computing is, so they can carry technological development forward?

Going even deeper, can our universities bring themselves to understand the implications of computing for their own outlook on the world, and convey that to their students? I ask this last question partly because of my own experience with computing and how it has allowed me to think and perceive. I also ask it because Alan Kay has brought it up several times as an epistemological subject that he’d like to see schools ponder, and in some way impart to students: thinking about systems in general, not just in computers.

The point of the internet was to create a platform upon which networks could be built, so they could be used and experimented with. It wasn’t just built so that people could publish porn, opinion, news, music, and video, and so that e-commerce, information transfer, chat, and internet gaming could take place.

The personal computer was not just created so that we could run apps. on it, and use it like a terminal. It was created with the intent of making a new medium, one where ideas could be exchanged and transactions could take place, to be sure, but also so that people could mold it into their own creation if they wanted. People could become authors with it, just as with pen, paper, and the typewriter, but in a much different sense.

But, back to where we are now…

Most high schools across the country have dropped programming courses completely, or they’re just hanging on by a thread (and in those cases an AP course is usually all that’s left). The only courses in computer literacy most schools have offered in the last several years are in how to use Microsoft Word and Excel (and maybe how to write scripts in Office using VBA), and how to use the web, Google, and e-mail.

CS departments in universities are desperate to find something that gives them relevance again, and there’s a sense of “adapt or die”. I’ve had some conversations with several computing educators at the university and high school level about my own emerging perspective on CS, which is largely based on the material that Alan Kay and Chris Crawford have put forward. I’ve gotten the ear of some of them. I’ve participated in discussions in online forums where there are many CS professors, but only a rare few seem to have the background and open mindedness to understand and consider what I have to say. These few like entertaining the ideas for a bit, but then forget about it, because they don’t translate into their notions of productive classroom activities (implementations). I must admit I don’t have much of a clue about how to translate these ideas into classroom activities yet, either, much less how to sell them to curriculum committees. I’m just discovering this stuff as I go. I guess I thought that by putting the ideas out there, along with a few other like-minded people, that at least a few teachers would catch on, become inspired, and start really thinking about translating them into curriculum and activities.

I’ve been getting a fair sense from afar about how hard it is for computing educators to even think about doing this. For one, academics need support from each other. Since these ideas are alien to most CS educators, it’s difficult to get support for them. I’ve been surprised, because I’ve always thought that it’s the teachers who come up with the curriculum, and in this “time of crisis” for CS they would be interested in a new perspective. It’s actually an old perspective, but it hasn’t been implemented successfully on a wide scale yet, and it’s a more advanced perspective than what has been taught in CS in most places for decades.

The challenge is understandable to me now at one level, because any alternative point of view on CS, even the ones currently being taught in some innovative university programs, run into the buzz saw of the pre-existing student perspective on computing (prepare, there’s an analogy coming):

Trying to teach anything akin to “the real thing” (using computing in deep and creative ways to create representations of our ideas and test them, and possibly learn something new in the process) tends to get weird looks from students (though not from all):

There’s a temptation on the part of some to take away from this experience the idea that the material they’re presenting is no longer relevant, and that the students’ perspectives should be folded into what’s taught. I agree with this up to a point. I think that the presentation of the material can be altered to help students better relate to the subject, but I draw the line at watering down the end goal. I think that subjects have their own intrinsic worth. Rather than trying to find a way to help more students pass by throwing out subjects that seem too difficult, there should instead be remedial support that helps willing students rise up to a level where they can understand the material. To me, the whole idea of a university education is to get students to think and perceive at a more sophisticated level than when they came in. CS should be no different. You’d be surprised, though, how many CS professors think the more important goal is to teach only about existing technology and methodologies.

Talking to most other CS educators at the high school and university level has been an eye-opening and disheartening experience, because we get our terminology confused. I mean to say one thing, and to my amazement I get people who honestly think I’m saying the complete opposite. In other cases we have a different understanding of the same subject, and so the terms we use get assigned different meanings, and I come to a point where I realize we can’t understand each other. The background material for where we’re coming from is just too different.

Many CS professors (whom I have not met, though I’ve been hearing about them) apparently think all of this “real thing” stuff is quaint, but they have real work to do, like “training IT professionals for the 21st century”. Phah! Guess what, people. Java is the new Cobol (in lieu of Fortran, no less…). Web apps. are the new IBM 3270 apps. Remember those days? Welcome to the 1970s! And by the way, isn’t CS starting to look like CIS? Just an observation…

(A little background on the clip below: In the story, after the failed attempt at learning real wrestling (in the clip above), the South Park kids form their own “wrestling show”, which is just play acting with violence, complete with the same scandal-ridden themes of the “WWE wrestling” they admire so much. A bunch of “redneck” adults in South Park gather around to watch in rapt attention.)

Note I am not trying to call anyone “stupid” (the wrestling teacher in South Park has a penchant for calling people that), though I share in the character’s frustration with people who are unwilling to challenge their own assumptions.

I get a sense that with many CS professors the bottom line is it’s all about supporting the standard curriculum in order to turn out what they believe are trained IT professionals who are capable of working with existing technology to create solutions employers need. I wonder if they’ve talked to any software developers who work out in the field. I’m sure they’d get an earful about how CS graduates tend to not be of high quality anymore.

The faculty support their departmental goals and the existing educational field. The belief is, ”Dammit! We’ve gotta have something called ‘CS’, because something is better than nothing.” This ends up meaning that they accommodate the dominant perspective that students have on computing. This ultimately goes back to the dominant industry vision, which now has nothing to do with CS.

When I’ve found a receptive CS professor, what I’ve suggested as a remedy, along with “moving the needle” back to something resembling a real science, is that the CS community needs to invent educational tools: Their own educational artifacts, and their own programming languages. This still goes on, though it’s not happening nearly as much as it did 40 years ago. I think that the perspectives of students need to be taken into consideration. The models used for teaching need to create a bridge between how they think of computing coming in, and where the CS discipline can take them.

The standard languages that most CS departments have been using for the past 14 years or so are C++, and now Java. C++ came from Bell Labs. Java came from Sun Microsystems. Both were created for industrial use by professionals, not people who’ve never programmed a computer before in their lives! In addition, they’re not that great for doing “real CS”. I’ve only heard of Scheme being recommended for that (along with some select course material, of course). I haven’t worked with it, but Python seems to get recommended from time to time by innovative people in CS. It’s now used in the introductory CS course at MIT. My point is, though, there needs to be more of an effort put into things like this in the CS academic community.

What’s at stake

In my previous post I link to above I asked the question, which Alan Kay asked in his presentation, “Does CS have a future?” I kind of punted, giving a general answer that’s characterized the field through the last several decades. I figured it would continue to be the case. This is going to sound real silly, but this next scene in South Park actually helped me see what Kay was talking about: We could lose it all! The strand that spans the gulf between ignorance and “the real thing” (a connection which is already extremely tenuous) could snap, and CS would be all but dead:

What came to mind is that it wouldn’t necessarily mean that the programs called “CS” would be dead, but what they teach would end up being something so different and shallow as to not even resemble the traditional CS curriculum that’s existed for 30+ years.

What I’ve learned is there’s a lot of resistance to bringing a more powerful form of CS into universities and our school system. This is not only coming from the academics. It’s also coming from the students. This is because, ironically, it’s seen as weak and irrelevant. I’ve already given you a feel for where the student perspective is at. Alan Kay identified a reason why most CS academics don’t go for it: They think what they’re teaching is it! They think they’re teaching “real CS”. They have little to no knowledge of the innovative CS that was done in the 1960s and 70s. They couldn’t even recall it if they tried, because they never studied it. They’re historically illiterate, just like our industry.

High school “CS” teachers (why not just call their courses “programming”. That’s what they used to be called) are hapless followers of the university system. They’re less educated than the CS professors about what they do. From what I’ve heard about the standards committees that govern curriculum for the public schools, they’d have no clue about what “real CS” is if it was shown to them. This isn’t so much a gripe of mine as an acknowledgment that the public schools are not designed for teaching the different modes of thought that have been invented through the ages. There’s no point in complaining about a design, except to identify that it’s flawed, and why. The answer is to redesign the system and then criticize it if the intent of the design is not being met.

My sense of the historical ignorance in our field, having been a part of it since I was a teenager, is people take it as an article of faith that there’s been a linear progression of technological improvement. So why look at the old artifacts? They’re old and they’re obviously worse than what we have now. That’s the thinking. They don’t have to verify this notion. They know it in their bones. If they’re exposed to technical details of some of the amazing artifacts of the past, they’ll find fault with the design (from their context). How the design came about is not seen as valuable in and of itself. Only the usefulness that can be derived from it is seen as worthy. Most CS academics are not too distant from this level of ignorance. I get a sense that this comes from their own sense of inadequacy. They know they couldn’t design something like it. They wouldn’t expect themselves to. As far as they’re concerned electrical engineers and programming “gods” created that stuff. They also tend to not have the first clue about the context in which it was designed. They’ll pick out some subsystem that’s antiquated by what’s used now and throw the baby out with the bathwater, calling the whole thing worthless, or at best an antique that should be displayed dead in a museum. You may get the concession out of them that it was useful as a prototype for its time, but what’s the point in studying it now? The very idea of understanding the context for the design is an alien thought to them.

The designs of these old systems weren’t perfect. They were always expected to be works in progress. What gets missed is the sheer magnitude of the improvement that occurred, the leaps in thinking about computing’s potential, and what these new perspectives allowed the researchers to think about in terms of improving their designs, the quality of which were orders of magnitude greater than what came before them (that point is often missed in modern analysis). Technologists often have the mindset of, “What can this technology do for me now?” They take for granted what they have, as in, “Now that I know how to use and do this, that old thing over there is ancient! My god. Why do you think that thing is so amazing?”

Another thing I’ve seen people dismiss is the idea that the people who created those amazing artifacts had an outlook that’s any different from their own, except for the fact that they were probably “artists”. That’s a polite way of dismissing what they did. Since they were so unique and “out there”, many of their ideas can be safely ignored, rather like how many in the open source community politely dismiss the ideas of the Free Software Foundation, and Richard Stallman. The stance is basically, “Thanks, but no thanks.” Yes, they came up with some significant new ideas, but it’s only useful to study them insofar as some of their ideas helped expand the marketability of technology. Their other ideas are too esoteric to matter. In fact we secretly think they’re a little nuts.

As I have written about on this blog, I share Kay’s view that computing has great historical and societal significance. What I’ve come to realize is that most CS academics don’t share that view. Sure, they think computing is significant, but only in terms of doing things faster than we once did, and in allowing people to communicate and work more efficiently at vast distances. The reasons are not as simple as a closed-mindedness. Kay probably nailed this: Their outlook is limited.

What it comes down to is most computer science academics are not scientists in any way, shape, or form. They’re not curious about their field of work. They’re not interested in examining their own assumptions, the way scientists do. Yet they dominate the academic field.

I’ve given some thought to some analogies for the CS major, as it exists today. One that came to mind is it’s like an English major, because the main focus seems to be on teaching students to program, and to do it well. As I’ve said before, programming in the realm of computing is just reading and writing. Where the English major excels beyond what CS teaches is there’s usually a study of some classics. This doesn’t happen in most CS curricula.

In discussions I’ve heard among CS academics, they now regard the field as an engineering discipline. That sounds correct. It fits how they perceive their mission. What generally goes unrecognized is that good engineering is backed by good science. Right now we have engineering backed by no science. All the field has are rules of thumb created from anecdotal evidence. The evidence is not closely scrutinized to see where the technique fits in other applications, or if it could be improved upon.

I am not arguing for a field that is bereft of an engineering focus. Clearly engineering is needed in computing, but without a science behind it, the engineering is poor, and will remain poor until a science is developed to support it.

My own vision of a science of computing could be described as a “science of design”, whose fundamental area of study would be architectures of computing. Lately Alan Kay has been talking about a “systems science”, which as he talked about in the presentation I link to above, includes not just architecture, but a “psychology of systems”, which I translated to mean incorporating a concept of collective “behavior” in a system of interactive systems. Perhaps that’s a shallow interpretation.

As you can tell, I now hold a dim view of traditional CS. However, I think it would be disruptive to our society to just say “let it die”. There are a lot of legacy systems around that need maintaining, and some of them are damn important to our society’s ability to function. There’s a need for knowledgeable people to do that. At the same time, Kay points ahead to the problem of increasing system complexity with poor architectural designs. It’s unsustainable. So it’s not enough to just train maintainers. Our technological society needs people who know how to design complex systems that can scale, and if nothing else, provide efficient, reliable service. That’s just a minimum. Hopefully one day our ambitions will go beyond that.

The discussion we’re not having

I happened to catch a presentation on C-SPAN last month by the National Academy of Engineering and the National Research Council on bringing engineering education into the K-12 curriculum (the meeting actually took place in September). I’m including links to the two-part presentation here, because the people involved were having the kind of discussion that I think that CS academics should be having, but they’re not. The quality of the discussion was top notch, in my opinion.

Engineering in K-12 Education, Part 1, 3 hours

Engineering in K-12 Education, Part 2, 2 hours

What was clear in this presentation, particularly in Part 2, was that the people promoting engineering in K-12 have a LOT of heavy lifting to do to achieve their goals. They are just at the infant stage right now.

Readers might be saying, “How can they possibly think of teaching engineering in primary school? What about all the other subjects they have to learn?” First of all, the organizations that held this event said that they weren’t pressing for adding on classes to the existing curriculum, because they understand that the existing school structure is already full of subjects. Rather, they wanted to try integrating engineering principles into the existing course structure, particularly in math and science. Secondly, they emphasized the engineering principles of design and systems thinking. So it didn’t sound like it would involve shoving advanced math down the throats of first graders, though teaching advanced math principles (again, principles, not drill and practice) in a fashion that young students can understand wouldn’t be such a bad idea. Perhaps that could be accomplished through such a curriculum.

I had a discussion recently with Prof. Mark Guzdial, some other CS professors, and high school teachers on his blog, related to this subject. Someone asked a similar question to what I posed above: “I agree [with what you say about a real science of computing]. But how in the world do you sell that to a K-12 education board?” I came to a similar conclusion as the NAE/NRC: Integrate CS principles wherever you can. For example, I suggested that by introducing linguistics into the English curriculum, it would then be easier to introduce concepts such as parse trees and natural language processing into it, and it would be germane. Linguistics is an epistemological subject. Computing and epistemology seem to be cousins. That was just one example I could think of.

If CS academics would actually think about what computing is for a while, and its relevance to learning, they wouldn’t have to ask someone like me these questions. I’m just a guy who got a BSCS years ago, went into IT for several years, and is now engaged in independent study to expose himself to a better form of CS in hopes of fulfilling a dream.

Universities need to be places where students actually get educated, not just “credentialed”. Even if we’re thinking about the economic prospects of the U.S., we’re fooling ourselves if we think that just by handing a student a diploma that they’re being given a bright future. Our civil and economic future is going to be built on our ability to think, perceive, and create, even if most of us don’t realize it. Our educational systems had best spend time understanding what it will take to create educated citizens.

Read Full Post »

Why I do this

Following an inspiration

I went to see the movie Julie & Julia yesterday, and I really liked it, way more than I expected. I remember Julia Child from her TV show when I was a kid. I can’t remember. Either my mom or my grandmother (or both) used to watch her show regularly. I wanted to see the movie because I thought it was about her life (which it is), but what blew me away was the story of Julie, who takes on a project of going through all of Julia’s recipes and blogging about it. The experience she has doing this matches my own blogging experience in some ways. I am also following my inspiration where it leads, and I also struggle with my own ignorance. What’s comforting and inspiring about the movie is it shows that 1) those who inspire us went through their own struggles and doubts, and 2) we tend to idealize/idolize our inspirations. In a Platonic way (after Plato) these idealized versions we hold within ourselves are really “forms”, and they’re our inspiration, not what we think are our inspiration. We come to own our inspiration using the illusion that it all comes from someone else to make the inspiration stronger within us at first.

The movie is based on two books: My Life in France, by Julia Child, and Julie and Julia: 365 Days, 524 Recipes, 1 Tiny Apartment Kitchen, by Julie Powell, which is based on her blog The Julie/Julia Project. The movie skillfully interweaves the two stories to show parallels in the lives of these two people–and perhaps idealizes them as well.

Coming out of ignorance and teaching others

Speaking of Plato, I came upon a video recently showing Plato’s allegory of ”The cave”. It describes well an aspect of the journey I feel I’ve been on, based on my experience. It was meant as a way of expressing the process that one goes through to reach enlightenment, the responsibility of the enlightened to try to help fellow members of society to go on their own enlightenment journeys, and the obstacles they face in doing it.

There’s a morbid aspect to this allegory. Plato says that those who return to the “prisoners” to try to free them risk death, for those inside do not wish to leave their unenlightened state. I think I read that this allegory was Plato’s way of describing the significance of the life and death of Socrates, and that this allusion to “the danger of death” to the enlightened was an oblique reference to his Athenian trial and death sentence. I don’t feel that this applies today, but I have sometimes seen the mocking and dismissive resistance that Plato described when I’ve tried to share in the “troubles and honors” of fellow developers, and present an expanded viewpoint of computing.

This story is more than 2,000 years old, and it shows that the process of becoming enlightened, and the difficulties in helping others do the same are part of the human condition.

Read Full Post »

Update 8-17-09: I’ve revised this post a bit to clarify some points I made.

I received a request 2-1/2 weeks ago to write a post based on video of a speech that Alan Kay gave at Kyoto University in February, titled “Systems Thinking For Children And Adults.” Here it is. The volume in the first 10 minutes of the video is really low, so you’ll probably need to turn up your volume. The volume in the video gets readjusted louder after that.

On the science of computer science

Kay said what he means by a science of computing is the forward-looking study, understanding, and invention of computing. Will the “science” come to mean something like the other real sciences? Or will it be like library and social science, which means a gathering of knowledge? He said this is not the principled way that physics, chemistry, and biology have been able to revolutionize our understanding of phenomena. Likewise, will we develop a software engineering that is like the other engineering disciplines?

I’ve looked back at my CS education with more scrutiny, and given what I’ve found, I’m surprised that Kay is asking this question. Maybe I’m misunderstanding what he said, but for me CS was a gathering of knowledge a long time ago. The question for me is can it change from that to a real science? Perhaps he’s asking about the top universities.

When I took CS as an undergraduate in the late 80s/early 90s it was clear that some research had gone into what I was studying. All the research was in the realm of math. There was no sense of tinkering with architectures that existed, and very little practice in analyzing it. We were taught to apply a little analysis to algorithms. There was no sense of trying to create new architectures. What we were given was pre-digested analysis of what existed. So it had gotten as far as exposing us to the “TEM” parts (of “TEMS”–Technology, Engineering, Mathematics, Science), but only in a narrow band. The (S)cience was non-existent.

What we got instead is what I’d call “small science” in the sense that we had lots of programming labs where we experimented with our own knowledge of how to write programs that worked; how to use, organize, and address memory; and how to manage complexity in our software. We were given some strategies for doing this, which were taught as catechisms. The labs gave us an opportunity to see where those strategies were most effective. We were sometimes graded on how well we applied them.

We got to experience a little bit of how computers could manipulate symbols, which I thought was real interesting. I wished that there would’ve been more of that.

One of the tracks I took while in college was focused on software engineering, which really focused on project management techniques and rules of thumb. It was not a strong engineering discipline backed by scientific findings and methods.

When I got out into the work world I felt like I had to “spread the gospel,” because what IT shops were doing was ad hoc, worse than the methodologies I was taught. I was bringing them “enlightenment” compared to what they were doing. The nature and constraints of the workplace broke me out of this narrow-mindedness, and not always in good ways.

It’s only been by doing a lot of thinking about what I’ve learned, and my POV of computers, that I’ve been able to see this that I’ve been able to see that what I got out of CS was a gathering of knowledge with some best practices. At the time I had no concept that I was only getting part of the picture even though our CS professors openly volunteered with a wry humor that “computer science is not a science.” They compared the term “computer science” to “social science” in the sense that it was an ill-defined field. There was the expectation that it would develop into something more cohesive, hopefully a real science, later on. Given the way we were taught though, I guess they expected it to develop with no help from us.

Kay has complained previously that the commercial personal computing culture has contributed greatly to the deterioration of CS in academia. I have to admit I was a case in point. A big reason why I thought of CS the way I did was this culture I grew up in. Like I’ve said before, I have mixed feelings about this, because I don’t know if I would be a part of this field at all if the commercial culture he complains about never existed.

What I saw was that people were discouraged from tinkering with the hardware, seeing how it worked, much less trying to create their own computers. Not to say this was impossible, because there were people who tinkered with 8- and 16-bit computers. Of course, as I think most people in our field still know, Steve Wozniak was able to build his own computer. That’s how he and Steve Jobs created Apple. Computer kits were kind of popular in the late 1970s, but that faded by the time I really got into it.

When I used to read articles about modifying hardware there was always the caution about, “Be careful or you could hose your entire machine.” These machines were expensive at the time. There were the horror stories about people who tried some machine language programming and corrupted the floppy disk that had the only copy of their program on it (ie. hours and hours of work). So people like me didn’t venture into the “danger zone.” Companies (except for Apple with the Apple II) wouldn’t tell you about the internals of their computers without NDAs and licensing agreements, which I imagine one had to pay for handsomely. Instead we were given open access to a layer we could experiment on, which was the realm of programming either in assembly or a HLL. There were books one could get that would tell you about memory locations for system functions, and how to manipulate features of the system in software. I never saw discussion of how to create a software computer, for example, that one could tinker with, but then the hardware probably wasn’t powerful enough for that.

By and large, CS fit the fashion of the time. The one exception I remember is that in the CS department’s orientation/introductory materials they encouraged students to build their own computers from kits (this was in the late 1980s), and try writing a few programs, before entering the CS program. I had already written plenty of my own programs, but as I said, I was intimidated by the hardware realm.

My education wasn’t the vocational school setting that it’s turning into today, but it was not as rigorous as it could have been. It met my expectations at the time. What gave me a hint that my education wasn’t as complete as I thought was that opportunities which I thought would be open to me were not available when I looked for employment after graduation. The hint was there, but I don’t think I really got it until a year or two ago.

What would computing as a real science be like?

I attended the 2009 Rebooting Computing summit on CS education in January, and one of the topics discussed was what is the science of computer science? In my opinion it was the only topic brought up there that was worth discussing at that time, but that’s just me. The consensus among the luminaries that participated was that historically science has always followed technology and engineering. The science explains why some engineering works and some doesn’t, and it provides boundaries for a type of engineering.

We asked the question, “What would a science of computing look like?” Some CS luminaries used an acronym “TEMS” (Technology, Engineering, Mathematics, Science), and there seemed to be a deliberate reason why they had those terms in that order. In other circles it’s often expressed as “STEM.” Technology is developed first. Some engineering gets developed from patterns that are seen (best practices). Some math can be derived from it. Then you have something you can work with, experiment with, and reason about–science. The part that’s been missing from CS education is the science itself: experimentation, an interest and proclivity to get into the guts of something and try out new things with whatever–the hardware, the operating system, a programming language, what have you–just because we’re curious. Or, we see that what we have is inadequate and there’s a need for something that addresses the problem better.

Alan Kay participated in the summit and gave a description of a computing science that he had experienced at Xerox PARC. They studied existing computing artifacts, tried to come up with better architectures that did the same things as the old artifacts, and then applied the new architectures to “everything else.” I imagine that this would test the limits of the architecture, and provide more avenues for other scientists to repeat the process (take an artifact, create a new architecture for it, “spread it everywhere”) and gain more improvement.

(Update 12-14-2010: I added the following 3 paragraphs after finding Dan Ingalls’s “Design Principles Behind Smalltalk” article. It clarifies the idea that a science of computing was once attempted.)

Dan Ingalls gave a brief description of a process they used at Xerox to drive their innovative research, in “Design Principles Behind Smalltalk,” published in Byte Magazine in 1981:

Our work has followed a two- to four-year cycle that can be seen to parallel the scientific method:

  • Build an application program within the current system (make an observation)
  • Based on that experience, redesign the language (formulate a theory)
  • Build a new system based on the new design (make a prediction that can be tested)

The Smalltalk-80 system marks our fifth time through this cycle.

This parallels a process that was once described to me in computer science, called “bootstrapping”: Building a language and system “B” from a “lower form” language and system “A”. What was unique here was they had a set of overarching philosophies they followed, which drove the bootstrapping process. The inventors of the C language and Unix went through a similar process to create those artifacts. Each system had different goals and design philosophies, which is reflected in their design.

To give you a “starter” idea of what this process is like, read the introduction to Design Patterns, by Gamma, Helm, Johnson, and Vlissides, and take note of how they describe coming up with their patterns. Then notice how widely those patterns have been applied to projects that have nothing to do with what the Gang of Four originally created with the patterns they came up with. The exception here is the Gang of Four didn’t redesign a language as part of their process. They invented a terminology set, and a concept of coding patterns that are repeatable. They established architectural patterns to use within an existing language. The thing is, if they had explored what was going on with the patterns mathematically, they might very well have been able to formulate a new architecture that encompassed the patterns they saw, which if successful, would’ve allowed them to create a new language.

The problem in our field is illustrated by the fact that more often than not, there’s been no study of the other technologies where these patterns have been applied. When the Xerox Learning Research Group came up with Smalltalk (object-orientation, late-binding, GUI), Alan Kay expected that others would use the same process they did to improve on it, but instead people either copied OOP into less advanced environments and then used them to build practical software applications, or they built applications on top of Smalltalk. It’s just as I described with my CS education: The strategies get turned into a catechism by most practitioners. Rather than studying our creations, we’ve just kept building upon and using the same frameworks, and treating them with religious reverence–we dare not change them lest we lose community support. Instead of looking at how to improve upon the architecture of Smalltalk, people adopted OOP as a religion. This happened and continues to happen because almost nobody in the field is being taught to apply mathematical and scientific principles to computing (except in the sense of pursuing proofs of computability), and there’s little encouragement from funding sources to carry out this kind of research.

There are degrees of scientific thinking that software developers use. One IT software house where I worked for a year used patterns on a regular basis that we created ourselves. We understood the essential idea of patterns, though we did not understand the scientific principles Kay described. Everywhere else I worked didn’t use design patterns at all.

There has been more movement in the last few years to break out of the confines developers have been “living” in; to try and improve upon fundamental runtime/VM architecture, and build better languages on top of it. This is good, but in reality most of it has just recapitulated language features that were invented decades ago through scientific approaches to computing. There hasn’t been anything dramatically new developed yet.

The ignorance we ignore

“What is the definition of ignorance and apathy?”

“I don’t know, and I don’t care.”

A twentieth century problem is that technology has become too “easy”. When it was hard to do anything whether good or bad, enough time was taken so that the result was usually good. Now we can make things almost trivially, especially in software, but most of the designs are trivial as well.

— Alan Kay, The Early History of Smalltalk

A fundamental problem with our field is there’s very little appreciation for good architecture. We keep tinkering with old familiar structures, and produce technologies that are marginally better than what came before. We assume that brute force will get us by, because it always has in the past. This is ignoring a lot. One reason that brute force has been able to work productively in the past is because of the work of people who did not use brute force, creating: functional programming, interactive computing, word processing, hyperlinking, search, semiconductors, personal computing, the internet, object-oriented programming, IDEs, multimedia, spreadsheets, etc. This kind of research went into decline after the 1970s and has not recovered. It’s possible that the brute force mentality will run into a brick wall, because there will be no more innovative ideas to save it from itself. A symptom of this is the hand-wringing I’ve been hearing about for a few years now about how to leverage multiple CPU cores, though Kay thinks this is the wrong direction to look in for improvement.

There’s a temptation to say “more is better” when you run into a brick wall. If one CPU core isn’t providing enough speed, add another one. If the API is not to your satisfaction, just add another layer of abstraction to cover it over. If the language you’re using is weak, create a large API to give it lots of functionality and/or a large framework to make it easier to develop apps. in it. What we’re ignoring is the software architecture (all of it, including the language(s), and OS), and indeed the hardware architecture. These are the two places where we put up the greatest resistance to change. I think it’s because we acknowledge to ourselves that the people who make up our field by and large lack some basic competencies that are necessary to reconsider these structures. Even if we had the competencies nobody would be willing to fund us for the purpose of reconsidering said structures. We’re asked to build software quickly, and with that as the sole goal we’ll never get around to reconsidering what we use. We don’t like talking about it, but we know it’s true, and we don’t want to bother gaining those competencies, because they look hard and confusing. It’s just a suspicion I have, but I think An understanding of mathematics and the scientific outlook is important for all this essential to the process of invention in computing. We can’t get to better architectures without it. Nobody else seems to mind the way things are going. They accept it. So there’s no incentive to try to bust through some perceptual barriers to get to better answers, except the sense that some of us have that what’s being done is inadequate.

In his presentation in the video, Kay pointed out the folly of brute force thinking by showing how humungous software gets with this approach, and how messy the software is architecturally. He said that the “garbage dump” that is our software is tolerated because most people can’t actually see it. Our perceptual horizons are so limited that most people can only comprehend a piece of the huge mess, if they’re able to look at it. In that case it doesn’t look so bad, but if we could see the full expanse, we would be horrified.

This clarifies what had long frustrated me about IT software development, and I’m glad Kay talked about it. I hated the fact that my bosses often egged me on towards creating a mess. They were not aware they were doing this. Their only concern was getting the computer to do what the requirements said in the quickest way possible. They didn’t care about the structure of it, because they couldn’t see it. So to them it was irrelevant whether it was built well or not. They didn’t know the difference. I could see the mess, at least as far as my project was concerned. It eventually got to the point that I could anticipate it, just from the way the project was being managed. So often I wished that the people managing me or my team, and our customers, could see what we saw. I thought that if they did they would recognize the consequences of their decisions and priorities, and we could come to an agreement about how to avoid it. That was my “in my dreams” wish.

Kay said, “Much of the applications we use … actually take longer now to load than they did 20 years ago.” I’ve read about this (h/t to Paul Murphy). (Update 3-25-2010: I used to have video of this, but it was taken down by the people who made it. So I’ll just describe it.) A few people did a side-by-side test of a 2007 Vista laptop with a dual-core Intel processor (I’m guessing 2.4 Ghz) and 1 Gig. RAM vs. a Mac Classic II with a 16 Mhz Motorola 68030 and 2 MB RAM. My guess is the Mac was running a SCSI hard drive (the only kind you could install on a Mac when they were made back then). I didn’t see them insert a floppy disk. They said in the video that the Mac is “1987 technology.” Even though the Mac Classic II was introduced in 1991, they’re probably referring to the 68030 CPU it uses, which came out in 1987.

The tasks the two computers were given were to boot up, load a document into a word processor, quit out of the word processor, and shut down the machine. The Mac completed the contest in 1 minute, 42 seconds, 25% faster than the Vista laptop, which took 2 minutes, 17 seconds. Someone else posted a demonstration video in 2009 of a Vista desktop PC which completed the same tasks in 1 minute, 18 seconds–23% faster than the old Mac. I think the difference was that the laptop vs. Mac demo likely used a slower processor for the laptop (vs. the 2009 demo), and probably a slower hard drive. The thing is though, it probably took a 4 Ghz dual-processor (or quad core?) computer, faster memory, and a faster hard drive to beat the old Mac. To be fair, I’ve heard from others that the results would be much the same if you compared a modern Mac to the old Mac. The point is not which platform is better. It’s that we’ve made little progress in responsiveness.

The wide gulf between the two pieces of hardware (old Mac vs. Vista PC) is dramatic. The hardware got about 15,000-25,000% faster via. Moore’s Law (though Moore’s Law only applied to transistors, not speed), but we have not seen a commensurate speed up in system responsiveness. In some cases the newer software technology is slower than what existed 22 years ago.

When Kay has elaborated on this in the past he’s said this is also partly due to the poor hardware architecture which was adopted by the microprocessor industry in the 1970s, and which has been marginally improved over the years. Quoting from an interview with Alan Kay in ACM Queue in 2004:

Neither Intel nor Motorola nor any other chip company understands the first thing about why that architecture was a good idea [referring to the Burroughs B5000 computer].

Just as an aside, to give you an interesting benchmark—on roughly the same system, roughly optimized the same way, a benchmark from 1979 at Xerox PARC runs only 50 times faster today. Moore’s law has given us somewhere between 40,000 and 60,000 times improvement in that time. So there’s approximately a factor of 1,000 in efficiency that has been lost by bad CPU architectures.

The myth that it doesn’t matter what your processor architecture is—that Moore’s law will take care of you—is totally false.

Another factor is the configuration and speed of main and cache memory. Cache is built into the CPU, is directly accessed by it, and is very fast. Main memory has always been much slower than the CPU in microcomputers. The CPU spends the majority of its time waiting for memory, or data to stream from a hard drive or internet connection, if the data is not already in cache. This has always been true. It may be one of the main reasons why no matter how fast CPU speeds have gotten the user experience has not gotten commensurately more responsive.

The revenge of data processing

The section of Kay’s speech where he talks about “embarrassing questions” from his wife (the slide is subtitled “Two cultures in computing”) gets to a complaint I’ve had for a while now. There have been many times while I’m writing for this blog when I’ve tried to “absent-mindedly” put the cursor somewhere on a preview page and start editing, but then realize that the technology won’t let me do it. You can always tell when a user interaction issue needs to be addressed when your subconscious tries to do something with a computer and it doesn’t work.

Speaking about her GUI apps. his wife said, “In these apps I can see and do full WYSIWYG authoring.” She said about web apps., “But with this stuff in the web browser, I can’t–I have to use modes that delay seeing what I get, and I have to start guessing,” and, “I have to edit through a keyhole.” He said what’s even more embarrassing is that the technology she likes was invented in the 1970s (things like word processing and desktop publishing in a GUI with WYSIWYG–aspects of the personal computing model), whereas the stuff she doesn’t like was invented in the 1990s (the web/terminal model). Actually I have to quibble a bit with him about the timeline.

“The browser = next generation 3270 terminal”
3270 terminal image from Wikipedia.org

The technology she doesn’t like–the interaction model–was invented in the 1970s as well. Kay mentioned 3270 terminals earlier in his presentation. The web browser with its screens and forms is an extension of the old IBM mainframe batch terminal architecture from the 1970s. The difference is one of culture, not time. Quoting from the Wikipedia article on the 3270:

[T]he Web (and HTTP) is similar to 3270 interaction because the terminal (browser) is given more responsibility for managing presentation and user input, minimizing host interaction while still facilitating server-based information retrieval and processing.

Applications development has in many ways returned to the 3270 approach. In the 3270 era, all application functionality was provided centrally. [my emphasis]

It’s true that the appearance and user interaction with the browser itself has changed a lot from the 3270 days in terms of a nicer presentation (graphics and fonts vs. green-screen text), and the ability to use a mouse with the browser UI (vs. keyboard-only with the 3270). It features document composition, which comes from the GUI world. The 3270 did not. Early on, a client scripting language was added, Javascript, which enabled things to happen on the browser without requiring server interaction. The 3270 had no scripting language.

There’s more freedom than the 3270 allowed. One can point their browser anywhere they want. A 3270 was designed to be hooked up to one IBM mainframe, and the user was not allowed to “roam” on other systems with it, except if given permission via. mainframe administration policies. What’s the same, though, is the basic interaction model of filling in a form on the client end, sending that information to the server in a batch, and then receiving a response form.

The idea that Kay brought to personal computing was immediacy. You immediately see the effect of what you are doing in real time. He saw it as an authoring platform. The browser model, at least in its commercial incarnation, was designed as a form submission and publishing platform.

Richard Gabriel wrote extensively about the difference between using an authoring platform and a publishing platform for writing, and its implications from the perspective of a programmer, in The Art of Lisp and Writing. The vast majority of software developers work in what is essentially a “publishing” environment, not an authoring environment, and this has been the case for most of software development’s history. The only time when most developers got closer to an authoring environment was when Basic interpreters were installed on microcomputers, and it became the most popular language that programmers used. The old Visual Basic offered the same environment. The interpreter got us closer to an authoring environment, but it still had one barrier: you either had to be editing code, or running your program. You could not do both at the same time, but there was less of a wait to see your code run because there was no compile step. Unfortunately with the older Basics, the programmer’s power was limited.

People’s experience with the browser has been very slowly coming back towards the idea of authoring via. the AJAX kludge. Kay showed a screenshot of a more complete authoring environment inside the browser using Dan Ingalls’s Lively Kernel. It looks and behaves a lot like Squeak/Smalltalk. The programming language within Lively is Javascript.

We’ve been willing to sacrifice immediacy to get rid of having to install apps. on PCs. App. installation is not what Kay envisioned with the Dynabook, but that’s the model that prevailed in the personal computer marketplace. You know you’ve got a problem with your thinking if you’re coming up with a bad design to compensate for past design decisions that were also bad. The bigger problem is that our field is not even conscious that the previous bad design was avoidable.

Kay said, “A large percentage of the main software that a lot of people use today, because it’s connected to the web, is actually inferior to stuff that was done before, and for no good reason whatsoever!”

I agree with him, but there are people who would disagree on this point. They are not enlightened, but they’re a force to be reckoned with.

What’s happened with the web is the same thing that happened to PCs: The GUI was seen as a “good idea” and was grafted on to what has been essentially a minicomputer, and then a mainframe mindset. Blogger Paul Murphy used to write, from a business perspective, about how there are two cultures in computing/IT that have existed for more than 100 years. The oldest culture that’s operated continuously throughout this time is data processing. This is the culture that brought us punch cards, mainframes, and 3270 terminals. It brought us the idea that the most important function of a computer system is to encode data, retrieve it on demand, and produce reports from automated analysis. The other culture is what Murphy called “scientific computing,” and it’s closer to what Kay promotes.

The data processing culture has used web applications to recapitulate the style of IT management that existed 30 years ago. Several years ago, I heard from a few data processing believers who told me that PCs had been just a fad, a distraction. “Now we can get back to real computing,” they said. The meme from data processing is, “The data is more important than the software, and the people.” Why? Because software gets copied and devalued. People come and go. Data is what you’ve uniquely gathered and can keep proprietary.

I think this is one reason why CS enrollment has fallen. It’s becoming dead like Latin. What’s the point of going into it if the knowledge you learn is irrelevant to the IT jobs (read “most abundant technology jobs”) that are available, and there’s little to no money going into exciting computing research? You don’t need a CS degree to create your own startup, either. All you need is an application server, a database, and a scripting/development platform, like PHP. Some university CS departments have responded by following what industry is doing in an effort to seem relevant and increase enrollment (ie. keep the department going). The main problem with this strategy is they’re being led by the nose. They’re not leading our society to better solutions.

What’s natural and what’s better

Kay tried to use some simple terms for the next part of his talk to help the audience relate to two ideas:

He gave what I think is an elegant graphical representation of one of the reasons things have turned out the way they have. He talked about modes of thought, and said that 80% of people are outer-directed and instrumental reasoners. They only look at ideas and tools in the context of whether it meets their current goals. They’re very conservative, seeking consensus before making a change. Their goals are the most important thing. Tools and ideas are only valid if they help meet these goals. This mentality dominates IT. Some would say, “Well, duh! Of course that’s the way they think. Technology’s role in IT is to automate business processes.” That’s the kind of thinking that got us to where we are. As Paul Murphy has written previously, the vision of “scientific computing,” as he calls it, is to extend human capabilities, not replace/automate them.

Kay said that 1% of people look at tools and respond to them, reconsidering their goals in light of what they see as the tool’s potential. This isn’t to say that they accept the tool as it’s given to them, and adjust their goals to fit the limitations of that version of the tool. Rather, they see its potential and fashion the tool to meet it. Think about Lively Kernel, which I mentioned above. It’s a proof of this concept.

There’s a symbiosis that takes place between the tool and the tool user. As the tool is improved, new ideas and insights become more feasible, and so new avenues for improvement can be explored. As the tool develops, the user can rethink how they work with it, and so improve their thinking about processes. As I’ve thought about this, it reminds me of how Engelbart’s NLS developed. The NLS team called it “bootstrapping.” It led to a far more powerful leveraging of technology than the instrumental approach.

The “80%” dynamic Kay described happened to NLS. Most people didn’t understand the technology, how it could empower them, and how it was developed. They still don’t. In fact Engelbart is barely known for his work today. Through the work that was done in the early days of Xerox PARC, a few of his ideas managed to get into technology that we’ve used over the years. He’s most known now for the invention of the mouse, but he did much more than that.

In the instrumental approach the goals precede the tools, and are actually much more conservative than the approach of the 1-percenters. In the instrumental scenario the goals people have are similar whether the tools exist or not, and so there’s no potential for this human-tool interaction to provide insight into what might be better goals.

Kay talked about this subject at Rebooting Computing, and I think he said that a really big challenge in education is to get students to shift from the “80%” mindset to one of the other modes of thought that have to do with deep thinking, at least exposing students to this potential within themselves. I think he would say that we’re not predisposed to only think one way. It’s just that left to our own devices we tend to fall into one of these categories.

I base the following on the notes Kay had on his slides in his speech:

He said that in the commercial computing realm (which is based on the way mainframes were sold to the public years ago) it’s about “news”: The emphasis is on functionality, and people as components. This approach also says you get your hardware, OS, programming language, tools, and user interface from a vendor. You should not try to make your own. This sums up the attitude of IT in a nutshell. It’s not too far from the mentality of CS in academia, either.

The “new” in the 1970s was a focus on the end-user and whether what they can learn and do. “We should design how user interactions and learning will be done and work our way down to the functions they need!” In other words, rather than thinking functionality-first, think user-first–in the context of the computer being a new medium, extending human capabilities. Aren’t “functionality” and “user” equally high priorities? Users just want functionality from computers, don’t they? Ask yourself this question: Is a book’s purpose only to provide functionality? The idea at Xerox PARC was to create a friendly, inviting, creative environment that could be explored, built on, and used to create a better version of itself–an authoring platform, in a very deep sense.

Likewise, with Engelbart’s NLS, the idea was to create an information sharing and collaboration environment that improved how groups work together. Again, the emphasis was on the interaction between the computer and the user. Everything else was built on that basis.

By thinking functionality-first you turn the computer into a device, or a device server, speaking metaphorically. You’re not exposing the full power of computing to the user. I’m going to use some analogies which Chris Crawford has written about previously. In the typical IT mentality this is the idea. It’s too dangerous to expose the full power of computing to end users, so the thinking goes. They’ll mess things up either on purpose or by mistake. Or they’ll steal or corrupt proprietary information. Such low expectations… It’s like they’re children or illiterate peasants who can’t be trusted with the knowledge of how to read or write. They must be read to aloud rather than reading for themselves. Most IT environments believe that they cannot be allowed to write, for they are not educated enough to write in the computer’s complex language system (akin to hieroglyphics). Some allow their workers to do some writing, but in limited, and not very expressive languages. This “limits their power to do damage.” If they were highly educated, they wouldn’t be end users. They’d be scribes, writing what others will hear. Further, these “illiterates” are never taught the value of books (again, using a metaphor). They are only taught to believe that certain tomes, written by “experts” (scribes), are of value. It sounds Medieval if you ask me. Not that this is entirely IT’s fault. Computer science has fallen down on the job by not creating better language systems, for one thing. Our whole educational/societal thought structure also makes it difficult to break out of this dynamic.

The “news” way of thinking has fit people into specialist roles that require standardized training. The “new” emphasized learning by doing and general “literacy.”

We’re in danger of losing it

Everyone interested in seeing what the technology developed at ARPA and Xerox PARC (the internet, personal computing, object-oriented programming) was intended to represent should pay special attention to the part of Kay’s speech titled “No Gears, No Centers: ARPA/PARC Outlook.” Kay told me about most of this a couple years ago, and I incorporated it into a guest post I wrote for Paul Murphy’s blog, called “The tattered history of OOP” (see also “The PC vision was lost from the get-go”). Kay shows it better in his presentation.

I think the purpose of Kay’s criticism of what exists now is to point out what we’ve lost, and continue to lose. Since our field doesn’t understand the research that created what we have today, we’ve helplessly taken it for granted that what we have, and the method of conservative incremental improvement we’ve practiced, will always be able to handle future challenges.

Kay said that because of what he’s seen with the development of the field of computing, he doesn’t believe what we have in computer science is a real field. And we are in danger of losing altogether any remnants of the science that was developed decades ago. This is because it’s been ignored. The artifacts that are based on that research are all around us. We use them every day, but the vast majority of practitioners don’t understand the principles and outlook that made it possible to create them. This isn’t a call to reinvent the wheel, but rather a qualitative statement: We’re losing the ability to make the kind of leap that was made in the 1970s, to go beyond what that research has brought us. In fact, in Kay’s view, we’re regressing. The potential scenario he paints reminds me of the science fiction stories where people use a network of space warping portals for efficient space travel and say, “We don’t know who built it. They disappeared a long time ago.”

I think there are three forces that created this problem:

The first was the decline in funding for interesting and powerful computing research. What’s become increasingly clear to me from listening to CS luminaries, who were around when this research was being done, is that the world of personal computing and the internet we have today is an outgrowth–you could really say an accident–of defense funding that took place during the Cold War–ARPA, specifically research funded by the IPTO (the Information Processing Techniques Office). This isn’t to say that ARPA was like a military operation. Far from it. When it started, it was staffed by academics and they were given a wide berth in which to do their research on computing. An important ingredient of this was the expectation that researchers would come up with big ideas, ones that were high risk. We don’t see this today.

The reason this computing research got as much funding as it did was due to the Sputnik launch. This got Americans to wake up to the fact that mathematics, science, and engineering were important, because of the perception that they were important for the defense of the country. The U.S. knew that the Soviets had computer technology they were using as part of their military operations, and the U.S. wanted to be able to compete with them in that realm.

In terms of popular perception, there’s no longer a sense that we need technical supremacy over an enemy. However, computing is still important to national defense, even taking the war against Al Qaeda into account. A few defense and prominent technology leaders in the know have said that Al Qaeda is a very early adopter of new technologies, and an innovator in their use for their own ends.

In 1970 computing research split into part government-funded and part private, with some ARPA researchers moving to the newly created PARC facility at Xerox. This is where they created the modern form of personal computing, some aspects of which made it into the technologies we’ve been using since the mid-1980s. The groundbreaking work at PARC ended in the early 1980s.

The second force, which Kay identified, was the rise of the commercial market in PCs. He’s said that computers were introduced to society before we were ready to understand what’s really powerful about them. This market invited us in, and got us acquainted with very limited ideas about computing and programming. We went into CS in academia with an eye towards making it like Bill Gates (never mind that Gates is actually a college drop-out), and in the process of trying to accommodate our limited ideas about computing, the CS curriculum was dumbed down. I didn’t go into CS for the dream of becoming a billionaire, but I had my eye on a career at first.

It’s been difficult for universities in general to resist this force, because it’s pretty universal. The majority of parents of college-bound youth have believed for decades that a college degree means a secure economic future–meaning a job, a career that pays well. It’s not always true, but it’s believed in our culture. This sets expectations for universities to be career “launching pads” and centers for social networking, rather than institutions that develop a student’s faculties, their ability to think, and expose them to high level perspectives to improve their perception.

The third force is, as Paul Murphy wrote, the imperative of IT since the earliest days of the 20th century, which is to use technology to extend and automate bureaucracy. I don’t see bureaucracy as a totally bad thing. I think of Alexander Hamilton’s quote about public debt, rephrased as, “A bureaucracy, if not excessive, will be to us a blessing.” However, in its traditional role it creates and follows rules and procedures formulated in a hierarchy. There’s accountability for meeting directives, not broad goals. Its thinking is deterministic and algorithmic. IT, being traditionally a bureaucratic function, models this (we should be asking ourselves, “Does it have to be limited to this?”) My sense of it is CS responded to the economic imperatives. It felt the need to lean towards what industry was doing, and how it thinks. The way it tried to add value was by emphasizing optimization strategies. The difference was it used to have a strong belief in staying true to some theoretical underpinnings, which somewhat counter-balanced the strong pull from industry. That resolve is slipping.

Kay and I have talked a little about math and science education. He said that our educational system has long viewed math and science as important, and so these subjects have always been taught, but our school system hasn’t understood their significance. So the essential ideas of both tend to get lost. What the computer brings to light as a new medium is that math (as mathematicians understand it, not how it’s typically taught) and science are essential for understanding computing’s potential. They are foundations for a new literacy. Without this perspective, and the general competencies in math and science to support it, both students and universities will likely continue the status quo.

Outlook: The key ingredient

Kay’s focus on outlook really struck me, because we have such an emphasis in our society on knowledge and IQ. My view of this has certainly evolved as I’ve gotten into my studies.

Whenever you interview for a job in the IT industry you get asked about your knowledge, and maybe some questions that probe your management skills. In technology companies that actually invent stuff you are probed for your mental faculties, particularly at tech companies that are known as “where the tech whizzes work.” I had an interview 5 years ago with a software company where the employer gave me something that resembled an IQ test. I have not seen nor heard of a technology company that asks questions about one’s outlook.

Kay said,

What outlook does is give you a stronger way of looking at things, by changing your point of view. And that point of view informs every part of you. It tells you what kind of knowledge to get. And it also makes you appear to be much smarter.

Knowledge is ‘silver,’ but outlook is ‘gold.’ I dare say [most] universities and most graduate schools attempt to teach knowledge rather than outlook. And yet we live in a world that has been changing out from under us. And it’s outlook that we need to deal with that. And in contrast to these two, IQ is just a big lump of lead. It’s one of the worst things in our field that we have clever people in it, because like Leonardo [da Vinci] none of us is clever enough to deal with the scaling problems that we’re dealing with. So we need to be less clever and be able to look at things from better points of view.

This is truly remarkable! I have never heard anyone say this, but I think he may be right. All of the technology that has been developed, that has been used by millions of people, and has been talked about lo these many years was created by very smart people. More often than not what’s been created, though, has reflected a limited vision.

Given how society’s perception of computing has been, I doubt Kay’s vision of human-computer interaction would’ve been able to fly in the commercial marketplace, because as he’s said, we weren’t ready for it. In my opinion it’s even less ready for it now. But certainly the internal and networked computing vision that was developed at PARC could’ve been implemented in machines that the consuming public could’ve purchased decades ago. I think that’s where one could say, “You had your chance, but you blew it.” Vendors didn’t have the vision for it.

What’s needed in the future

One of Kay’s last slides referred to Marvin Minsky. I am not familiar with Minsky, and I guess I should be. He said that in terms of software we need to move from a “biology of systems” (architecture) to a “psychology of systems” (which I’m going to assume for the moment means “behavior”). I don’t really know about this, so I’m just going to leave it at that.

In a chart titled “Software Has Fallen Short” Kay made a clearer case than he has in the past for not idolizing the accomplishments that were made at ARPA/Xerox PARC. In the past he’s tried to discourage people from getting too excited about the PARC stuff, in some cases downplaying it as if it’s irrelevant. He’s always tried to get people to not fall in love with it too much, because he wanted people to improve upon it. He used to complain that the Lisp and Smalltalk communities thought that these languages were the greatest thing, and didn’t dream of creating anything better. Here he explains why it’s important to think beyond the accomplishments at PARC: It’s insufficient for what’s needed in the future. In fact the research is so far behind that the challenges are getting ahead of what the current best research can deal with.

He said that the PARC stuff is now “news,” and my guess is he means “it’s been turned into news.” He talked about this earlier in the speech. The essential ideas that were developed at PARC have not made it into the computing culture, with the exception of the internet and the GUI. Instead some of the “new” ideas developed there have been turned into superficial “news.”

Those who are interested in thinking about the future will find the slide titled “Simplest Idea” interesting. Kay threw out some concepts that are food for thought.

A statement that Kay closed with is one he’s mentioned before, and it depresses me. He said that when he’s traveled around to universities and met with CS professors, they think what they’ve got “is it.” They think they’re doing real science. All I can do is shake my head in disbelief at that. Even my CS professors understood that what they were teaching was not a science. For the most part what’s passing for CS now is no better than what I had–excepting the few top schools.

Likewise, I’ve heard accounts saying that there are some enterprise software leaders who (mistakenly) think they understand software engineering, and that it’s now a fully mature engineering discipline.

Coming full circle

Does computer science have a future? I think as before, computing is going to be at the mercy of events, and people’s emotional perceptions of computing’s importance. This is because the vast majority of people don’t understand what computing’s potential is. Today we see it as “current” not “future.” I think that people’s perception of computing will become more remote. Computing will be in devices we use every day, as we can see today, and we will see them as digital devices, where they used to be analog.

“Digital” has become the new medium, not computing. Computing has been overlayed with analog media (text, graphics, audio, video). Kay has said for a while now that this is how it is with new media. When it arises, the generation that’s around doesn’t see its potential. They see it as the “new old thing” and they just use it to optimize what they did before. Computing for now is just the magical substrate that makes “digital” work. The essential element that makes computing powerful and dynamic has been pushed to the side, with a couple of exceptions, as it often has been.

Kay didn’t talk about this in the video, but he and I have discussed this previously. There used to be a common concept in computing, which has come to be called “generative technology.” It used to be a common expectation that digital technology was open ended. You could do with it what you wanted. This idea has been severely damaged by the way that the web has developed. First, commercial PCs, which were designed to be used alone and in LANs, were thrust upon the internet using native code and careless programming, which didn’t anticipate security risks. In addition, identities became more loosely managed, and this became a problem as people figured out how to hide behind pseudonyms. Secondly, the web browser wasn’t designed initially as a programmable medium. A scripting language was added to browsers, but it was not made accessible through the browser. The scripting language was not designed too well, either.

Many security catastrophes ensued, each eroding people’s confidence in the safety of the internet, and the image of programming. People who didn’t know how to program, much less how the web worked, felt like they were the victims of those who did know how to program (though this went all the way back to stand-alone PCs as well when mischievous and destructive viruses circulated around in infected executables on BBSes and floppy disks). Programming became seen as a suspicious activity, rather than a creative one. And so as vendors put up defensive barriers to try to compensate for their own flawed designs, it only reinforced the initial design decision that was made when the commercial browser was conceived: that programming would be restricted to people who worked for service providers. Ordinary users should neither expect to gain access to code to modify it, nor want to. It’s gotten to the point we see today where even text formatting on message boards is restricted. HTML tags are restricted or banned altogether in favor of special codes, and you can’t use CSS at all. Programming by the public on websites is usually forbidden, because it’s seen as a security risk. And most web operators don’t see the value of letting people program on their site.

Kay complained that despite the initial idealistic visions of how the internet would develop, it’s still difficult or impossible to send a simulation to somebody on a message board, or through e-mail, to show the framework for a concept. What I think he had envisioned for the internet is a multimedia environment in which people could communicate in all sorts of media: text, graphics, audio, video, and simulations–in real time. Specialized software has made this possible using services you can pay for, but it’s still not something that people can universally access on the internet.

To get to the future we need to look at the world differently

I agree with the sentiment that in order to make the next leaps we need to not accept the world as it appears. We have to get out of what we think is the current accepted reality, what we’ve put up with and gotten used to, and look at what we want the world to be like. We should use that as inspiration for what we do next. One strategy to get that started might be to look at what we find irritating about what currently exists, what we would like to see changed, and think about it from a fundamental, structural perspective. What are some things you’ve tried to do, but given up on, because when you tried to use the tools or resources available they just weren’t up to the task? What sort of technology (perhaps a kind that doesn’t exist yet) do you think would do the job?

For further reading/exploring:

A complete system (apps. and all) in 20KLOC – Viewpoints Research

Demonstration of Lively Kernel, by Dan Ingalls

Edit 8-21-2009: A reader left a comment to an old post I wrote on Lisp and Dijkstra, quoting a speech of Dijkstra’s from 10 years ago, titled “Computing Science: Achievements and Challenges.” Towards the end of his speech he bemoaned the fact that CS in academia, and industry in the U.S. had rejected the idea of proving program correctness. He attributed this to an increasing mathematical illiteracy here. I think his analysis of cause and effect is wrong. My own CS professors liked the discipline that proofs of program correctness provided, but they rejected the idea that all programs can and should be proved correct. Dijkstra held the view that CS should only focus on programs that could be proved correct.

I think Dijkstra’s critique of anti-intellectualism in the U.S. is accurate, however, including our aversion to mathematics, and I found that it answered some questions I had about what I wrote above. It also gets to the heart of one of the issues I harp on repeatedly in my blog. His third bullet point is most prescient. Quoting Dijkstra:

  • The ongoing process of becoming more and more an amathematical society is more an American specialty than anything else. (It is also a tragic accident of history.)
  • The idea of a formal design discipline is often rejected on account of vague cultural/philosophical condemnations such as “stifling creativity”; this is more pronounced in the Anglo-Saxon world where a romantic vision of “the humanities” in fact idealizes technical incompetence. Another aspect of that same trait is the cult of iterative design.
  • Industry suffers from the managerial dogma that for the sake of stability and continuity, the company should be independent of the competence of individual employees. Hence industry rejects any methodological proposal that can be viewed as making intellectual demands on its work force. Since in the US the influence of industry is more pervasive than elsewhere, the above dogma hurts American computing science most. The moral of this sad part of the story is that as long as computing science is not allowed to save the computer industry, we had better see to it that the computer industry does not kill computing science. [my emphasis]

—Mark Miller,
http://tekkie.wordpress.com

Read Full Post »

Older Posts »

Follow

Get every new post delivered to your Inbox.