Friday, September 21, 2007

is papert a purist?

JTPowell's blog (second grade teacher) is inspirational

He is teaching himself Scratch, reading the MIT's Open Course Ware Readings on The Nature of Constructionist Learning (some great readings in this list) and then blogging about his learning process as it develops

Does the perception that Papert is a purist who has been advocating never teach anything directly to the learner come from Papert himself?

Currently, JT is agonising about this and I left a comment on his blog because I went through a similar agonising about breaking down the wall between behaviourism and constructionism when developing quadratics drill software in logo for my students

I think the origins of this purist perception comes from Piaget:
In order for a child to understand something, he must construct it himself, he must reinvent it. Every time we teach a child something, we keep him from inventing it himself.
However, this position was repudiated both by Papert and even more clearly by Kevin McGee in his 1992 thesis, Play and the Genesis of Middle Manager Agents (I have a hard copy):
Piaget's statement is ... potentially dangerous ... There are two processes being alluded to in Piaget's remark. On the one hand, there is the standard constructivist view that all knowledge is ultimately constructed by the individual. On the other hand, there is the further implication that it is somehow bad for individuals not to "reinvent the wheel" by themselves. One way to think about this is in terms of the difference between bringing about agent-conflict and resolving agent-conflict. Individuals need to be able to do both - and any approach to learning which de-emphasises one is seriously limited ...

If we really accept Piaget's strong emphasis on the large-scale, self-equilibrating, systemic nature of mind, then the debate over whether to give students answers or make them struggle for them falls almost entirely outside of the problem of conceptual innovation... it is not possible to give "answers" to individuals who don't have a question (don't perceive a problem to be solved); "making them struggle" is pointless since they have no idea what it is they are struggling for.

It is important to critique Piaget's "invention" quote seriously ... because a misreading of it seems to underly so much bad constructivist pedagogy ...
Kevin McGee was one of Papert's students. Another thought here is that Idit Harel (another Papert student) developed her theoretical approach by combining Vygotsky's zone of proximal development with Papert's constructionism. Really the teacher sets up a zone of appropriate struggle through the environment they help co-create with their students.

Sunday, September 16, 2007

Noel Pearson's "radical centre" concept applied to education

Noel Pearson, The Urgent Quest for a Radical Political Centre:

Noel Pearson understands dialectics and has a philosophical perspective as well as a pragmatic position on aboriginal policy:
The "radical centre" in politics may be defined as the intense resolution of the tensions between opposing principles, a resolution that produces the synthesis of optimum policy. The radical centre is not to be found in simply splitting the difference between the stark and weak tensions from either side of popularly conceived discourse, but rather where the dialectical tension is most intense and the policy positions much closer than most people imagine.

We are prisoners of our metaphors: by thinking of realism/pragmatism and idealism as opposite ends of a two-dimensional plane, we see leaders inclining to one side or the other. Those who harbour ideals but who need to work within the parameters of real power (as opposed to simply cloaking lazy capitulation under the easy mantle of righteous impotence) end up splitting the difference somewhere between ideals and reality. This is called compromise. And it is all too often of a low denominator.

I prefer a pyramid metaphor of leadership, with one side being realism and the other idealism, and the quality of leadership dependent on how closely the two sides are brought together. The apex of leadership is the point where the two sides meet. The highest ideals in the affairs of humans on earth are realised when leadership strives to secure them through close attention to reality.

The best leadership occurs at the point of highest tension between ideals and reality ...

Hence, in Australia what is known as the "Right" promotes indigenous responsibility. What is known as the "Left" promotes indigenous rights. Usually, the "Right" and the "Left" righteously denounce each other. The "Left" (eg. the Greens) says that the Howard government is "callous', "brutal", "lacking compassion". The "Right" says to the "Left" - you are not facing reality, drug abuse, welfare dependency and child abuse in aboriginal communities are realities that simply have do be dealt with.

Read the whole Pearson article. For example:
When I decided that we could no longer go on without saying that our people held responsibilities as well as rights, it was not a repudiation of rights. It was just that all the talk, all the advocacy, all the analysis, all the leadership, and all the policy and politics was about rights. There was no talk about responsibility.
Pearson had to take up the indigenous responsibility agenda because no one else was doing it effectively. Now Pearson is accused of no longer supporting indigenous rights by those who don't understand his real position.

I support Pearson, for the first time in many years Australia now has a genuine insightful political leader, the real thing.

I'm also wondering if the general analytical approach from Pearson here could be more consciously and beneficially applied to other areas of discourse: education, OLPC, global warming, Iraq war etc.

What it presupposes is that the elements of good policy are already there on the stage and have been taken up in varying degrees in different mixes by established large political parties. And then by doing the hard work of dialectical analysis those bits and pieces can be put back together in such a way that perhaps can develop mass appeal.

Certainly, I can see that applies to education policy, to recycle something I said from the wellington grey physics curriculum reform debacle:
Science and maths education seems to be polarising between a back to basics movement and soft sociological reform, often ineffectual "discovery learning". I believe there is a third way, that traditional science education can be reformed and still remain real science. Student designed computer simulations using software such as Etoys / Squeak could play an important role here.
Summarising some of the issues:
  • watering down, diluting, trivializing science and maths curriculum
  • converting science / maths content into sociological content
  • using discovery or inquiry based learning as a substitute for hard facts
This time, I make a connection here between Pearson's dialectic of the radical centre and my analysis of the polarising between a back to basics movement (what the "Right" says) and soft sociological reform, often ineffectual "discovery learning" (what the "Left" says). Both sides are shouting past each other and no progress is being made.

The resolution of this problem comes about through Papert's concept of "hard fun" and Kay's identification of "non universals". First identify the important concepts and then find an engaging and realistic way to teach them to children.

Thursday, September 13, 2007

smalltalk: philosophy, metaphor, semantics, syntax

Programming languages can be categorized in a number of ways: imperative, applicative, logic-based, problem-oriented, etc. But they all seem to be either an "agglutination of features" or a "crystallization of style." COBOL, PL/1, Ada, etc., belong to the first kind; LISP, APL-- and Smalltalk--are the second kind. It is probably not an accident that the agglutinative languages all seem to have been instigated by committees, and the crystallization languages by a single person.

Smalltalk's design--and existence--is due to the insight that everything we can describe can be represented by the recursive composition of a single kind of behavioral building block that hides its combination of state and process inside itself and can be dealt with only through the exchange of messages. Philosophically, Smalltalk's objects have much in common with the monads of Leibniz and the notions of 20th century physics and biology. Its way of making objects is quite Platonic in that some of them act as idealisations of concepts--Ideas--from which manifestations can be created. That the Ideas are themselves manifestations (of the Idea-Idea) and that the Idea-Idea is a-kind-of Manifestation-Idea--which is a-kind-of itself, so that the system is completely self-describing-- would have been appreciated by Plato as an extremely practical joke ...

I recalled the monads of Leibniz, the "dividing nature at its joints" discourse of Plato, and other attempts to parse complexity. Of course, philosophy is about opinion and engineering is about deeds, with science the happy medium somewhere in between. It is not too much of an exaggeration to say that most of my ideas from then on took their roots from Simula--but not as an attempt to improve it. It was the promise of an entirely new way to structure computations that took my fancy. As it turned out, it would take quite a few years to understand how to use the insights and to devise efficient mechanisms to execute them.
- alan kay, the early history of smalltalk
Most books on programming that I have seen don't include much in the way of philosophy or metaphor. They seem to be filled with detailed definitions and techniques.

But from the alan kay quote above it's clear that Smalltalk, the first OOPs language drew heavily from philosophical principles - the monads of Leibniz, "dividing nature at its joints" from Plato. And that this approach leads to a more elegant and internally consistent programming language ("crystallization of style"), rather than a mix of human memory intensive bits and pieces ("agglutination of features")

Maybe we would be better off today if philosophy and also the use of metaphor was taught side by side with programming?

<message receiver><message>
<receiver object><message>
<message receiver><message selector (optional message arguments>

Messages trigger methods in receiving objects

The above is the basic structure of smalltalk semantics. This initially appears easy to follow but for me it became confusing at the level of specific examples

100 + 200

In this case 100 is a message receiver, + is a message selector (binary type) and 200 is an argument for +

Both 100 and 200 are SmallInteger class instances

I found two things difficult to understand (counter intuitive) about this example:
1) Why was + being called a selector, ie. what was it selecting?
2) The 100 and 200 which are similar types of things are behaving in different ways in the example. The 100 is a message receiver and the 200 is an argument to the + message selector

This sort of thing frustrates me because in the end I'm reduced to rote learning through not really understanding the underlying meaning of the way in which smalltalk was designed. Now thanks to help from some experts I have an explanation.

The metaphors that work here are:
An object (which has various properties) receives a message which tweaks one of those properties

Or a language metaphor:
The subject (which comes first) is directed by the different parts of the rest of the sentence (verbs, etc.)

Message selectors (such as +) are called selectors because they select properties from the receiving object. As an object myself, I can visualise and personalise this quite easily. If someone comes to me and delivers a message then the particularity of the message switches on (selects) certain parts of my mind, ie. accesses particular properties of my mind

I don't really need to know the details of the SmallInteger class to appreciate this, just that the + message selector will trigger something inside that will enable it to complete the task of adding +200 to 100

Another thing that confused me was finding the right metaphor to explain this particular thing. Another smalltalk metaphor is the biological cell, that the contents of the cell are protected or encapsulated and that they respond to messages from outside.

This metaphor is great for helping to understand encapsulation and complexity - cells can diversify and combine to create complex organisms. But it didn't help me explain why + was called a message selector. However, the object and language metaphors did help here. So you need to know the right metaphors for the particular task at hand.

I'll round this out a bit more by using some other examples, mainly from Stephane Ducasse's book, Squeak: Learn Programming with Robots

There are 3 types of messages - unary, binary and keyword

Unary: pica east
"pica" (robot object) is the message receiver. "east" is the message selector. It's just like someone approach me and says, "turn east" That selects the part of my mind that thinks about directions.

Binary: 100 + 200
Already discussed

Keyword: pica go: 100
"pica" (robot object) is the message receiver. go: is a keyword message selectors, they accept arguments (100). So the message go: 100 is sent to the robot.

Keyword with multiple arguments:
pica polygon: numberOfSides size: sizeValue
"pica" (robot object) is the message receiver. The method or message selector is the double barreled polygon:size: (counter intuitive initially). The arguments are numberOfSides and sizeValue

Another Keyword with multiple arguments:
33 between: 30 and: 50
33 is the message receiver. The method or message selector is the double barreled between:and: The message arguments are 30 and 50

reference:
Ducasse, Stephane. Squeak: Learn Programming with Robots (2005) amazon, bots inc

The Monadology by Gottfried Wilhelm Liebniz

The Problem of Universals(philosophical essay)
"Plato was clearly a Realist about universals. His most famous metaphor for the reality of universals was to say that real universals "cut nature at its joints" (Phaedrus 265d-266a). He compares the task of definition to the job of being a butcher. The clumsy butcher just hacks things up in any old way, but the expert butcher deftly slices the animal at its natural joints, neatly separating naturally distinct segments of the animal."

Wednesday, September 12, 2007

Helping the poor developmentally: Denmark compared with Australia

It seems that Denmark has a government, a professional IT society and an aid organisations which work together and display some commitment to using technology innovatively to help the poorest people on this earth. To help the poor to develop, not just to rescue them from starvation or disease:
Some 99 percent of children growing up in developing countries leave school without ever having touched a computer.

But the organisers behind the One Laptop Per Child (OLPC) programme and Denmark’s aid organisation, Danida, hope to change that with the durable, inexpensive XO Computer ...

The computer’s innovative construction earned it accolades and a top prize at the Index: Awards handed out in Copenhagen last month to recognise groundbreaking ‘designs to improve life’. It also won the attention of Ulla Tørnæs, the development co-ordination minister

The organisation will conduct a nationwide campaign among private companies and foundations to raise money for purchasing the computer which will then be part of aid organisation Danida’s supplies to foreign countries.

Five countries are already on the receiving end of the project, and Danida hopes to begin a pilot project with the XO Computer in Nepal in April next year. In addition, Bhutan, Nicaragua, Bolivia and Benin have signed on for shipments.

The Danish IT Society, the country’s largest trade organisation for IT professionals, indicated the project will be part of its 50th anniversary celebration which includes putting focus on the Third World.

Tony Franke, the managing director of the Danish IT Society, hopes the initiative can level the playing field between rich and poor countries in the Digital Age.

‘The computer should not just be seen as a piece of technology. It’s an educational project which first and foremost is intended for children, but at the same time will involve the whole family who through their children will gain familiarity with the digital world.’

Franke has already encountered great enthusiasm from potential contributors, and he expected significant support for the project.

‘The prospects are spreading like rings in the water. It begins as an educational project but in reality it’s a revolution for people that are born and grow up in a poor village but suddenly gain contact with the rest of the world,’ Franke said.
- extracts from 'The Copenhagen Post'
I wonder how we could get this sort of thing happening in Australia? Would our government, our aid organisations and our IT societies pick up on this idea and implement it here. How come it is possible in Denmark but seems like a fantasy to think like this in Australia?

Monday, September 10, 2007

what is the effect of technology, work, play and the media in general on our intelligence?

What is the effect of technology, work, play and the media in general on our intelligence?
Are we becoming smarter or dumber?
Are we living in some sort of Huxleyian "Brave New World" fog, endlessly distracted from the vital issues of our time? A western form of brainwashing? Contrast this with the Marxist view that the capitalist system creates its own gravediggers. Which is correct?
Or, are we becoming smarter but feel unfulfilled because we sense our lives could be much better?

Were people smarter when print was the dominant medium? (Postman and Gatto seem to be saying this)
What effects do TV, video games and the internet have on intelligence?
Is there a general upward trend in intelligence irrespective of media?
Are we getting smarter but still not utilising our full potential, that many are missing out on really important "higher learning" (whatever that is)?
Is the western canon important. Are there important texts or concepts that an educated person ought to read or develop? (Kay has articulated a list of "non universals")
Does the way in which work is organised make us less or more intelligent? (Braverman argued less; Adler argued more)
Are political influences, such as the politics of inclusion, making us dumber? (Furedi argues this)


"Dumbing down" is a popular phrase. Some people argue that things as varied as TV, playing video games, School and going to work dumb you down. But others argue that TV and video games can make you smarter. Some even argue that School can make you smarter but that is very uncool :-)

Anti elitism and egalitarianism are popular sentiments. But do these sentiments mask anti-intellectualism?

I'd like to explore these questions:

1. the effect of broad media changes on our intelligence
2. the effect of personal computing on our intelligence
3. the effect of the internet and "web2.0" on our intelligence
4. the effect of School on our intelligence
5. the effect of work on our intelligence
6. the effect of the politics of inclusion on our intelligence

READING LIST
(I might come back and update and / or annotate this from time to time)
I am currently reading some of this material and would be interested in the opinions of others who are reading it.

1. the effect of broad media changes on our intelligence

Postman, Neil. Amusing Ourselves to Death: Public Discourse in the Age of Show Business (1985) 116 reviews

Bauerlein, Mark. The Dumbest Generation: How the Digital Age Stupefies Young Americans and Jeopardizes Our Future (Or, Don't Trust Anyone Under 30). (amazon)
Recommended by Mark Nichols in this substantial blog: Solid Thinking

Gee, James Paul. What Video Games Have to Teach Us About Learning and Literacy (2003) 26 reviews

Johnson, Steven. Everything Bad is Good for You: How Today's Popular Culture is Actually Making Us Smarter (2005) 70 reviews



2. the effect of personal computing on our intelligence

Kay, Alan. Some annotated references
"Point of view is worth 80 IQ points"
explanation
: At PARC we had a slogan: "Point of view is worth 80 IQ points." It was based on a few things from the past like how smart you had to be in Roman times to multiply two numbers together; only geniuses did it. We haven't gotten any smarter, we've just changed our representation system. We think better generally by inventing better representations; that's something that we as computer scientists recognize as one of the main things that we try to do.

another explanation
: what is special about the computer is analogous to and an advance on what was special about writing and then printing. It's not about automating past forms that has the big impact, but as McLuhan pointed out, when you are able to change the nature of representation and argumentation, those who learn these new ways will wind up to be qualtitatively different and better thinkers, and this will (usually) help advance our limited conceptions of civilization (source)

Some recent discussion about non universals and powerful ideas here

Papert, Seymour. Mindstorms: Children, Computers and Powerful Ideas (1980) my review

Papert, Seymour. The Children's Machine: Rethinking School in the Age of the Computer (1993)

Maxwell, John. Tracing the Dynabook: A Study of Technocultural Transformations (2006) link to pdf


3. the effect of the internet and web2.0 on our intelligence

Keen, Andrew. The Cult of the Amateur: How Today's Internet is Killing Our Culture (2007) 50 reviews

Is Google Making Us Stupid? Nicholas Carr (argues that net use works against deep, reflective reading; also discusses hisorical parallels)

Weinberger, David. Everything is Miscellaneous: The Power of the New Digital Disorder

video of a debate between Weinberger and Keen

Clay Shirky is my favourite informed commentator on these questions at the Many2Many site. For example, Andrew Keen: Rescuing 'Luddite' from the Luddites, is a critique of Keen

Friedman, Thomas L. The World is Flat: A Brief History of the Twenty-First Century (2005) reviews

Locke, Chris; Searls, Doc; Weinberger, David. The ClueTrain Manifesto: The End of Business as Usual 95 theses




4. the effects of School on our intelligence

Gatto, John Taylor. Dumbing Us Down: The Hidden Curriculum of Compulsory Schooling (1992). Gatto also has a web site, Challenging the Myths of Modern Schooling

the "outcomes based education literature
Berlach, Richard G., Outcomes-Based Education and The Death of Knowledge pdf
Killen, Roy. Outcomes-Based Education: Principles and Possibilities html


5. the effect of work on our intelligence

Braverman, Harry. Labor and Monopoly Capital (1974)

Adler, Paul. Technology and the Future of the Firm: A Schumpeterian Research Agenda (1985)

Langer, Albert. Technology and the Future of Work (1985)

Adler, Paul. Technology and Us (1986)

Adler, Paul. Technology and the Future of Work (1992) description

Postrel, Virginia. The Future and Its Enemies (1998) excerpts reviews


6. the effect of the politics of inclusion on our intelligence


Furedi, Frank. Where Have All The Intellectuals Gone?: Confronting 21st Century Philistinism (2004) reviews

Friday, September 07, 2007

when kids program visually in etoys / squeak what is happening programatically under the hood?

My goal here is to understand OOPs and how it is connected to visual programming from a practical perspective. This is putting some meta issues of the meaning, history, philosophy and importance of OOPs to one side, temporarily.

When you program in etoys you first draw something, then you convert it to an object, then you display a Viewer which enables you to observe the properties (heading, x position, y position etc.) and write scripts for the object. You can also produce a second object and then pass variables between objects. For example, you can pass the heading of a rocket's steering wheel from the steering wheel to a script which belongs to the rocket.



There is stuff happening here which I haven't seen in other programming systems. What other system enables you to visually pass a variable from one object to another and then lets you observe it running and change it while it is running? What is about Squeak / Smalltalk that makes this possible when it is apparently not possible in other programs like Game Maker or Flash?

Specifically, I want to understand what is happening behind the scenes. What classes are involved? And in connection to an earlier blog about OOPs: Is etoys programming an example of "class create" or "object use"?

This involves looking behind the etoys visual interface to the Smalltalk classes and code which is making it possible.

Understanding this might have important implications wrt how we first teach programming to our youth. Can OOPs be taught to youth before procedural programming?

I previously wrote a blog about OOPs in which I quoted from mark guzdial's blog extensively. Mark is saying that OOPs is harder than procedural, with specific reference to "class create" being harder but not so much wrt "object use":
- "Object-use" means instantiating objects, applying methods to objects, writing new methods.
- "Class-create" means creating new classes and solving problems by writing different methods in different classes (distributing responsibility).
Charles Stewart left a comment on my blog suggesting I look at prototype based programming, he left a link to a wikipedia article about it. When I looked that up it said that a prototype was cloning of instances and called it class-less and it made reference to the concept coming from Self and Squeak

Then when I read about the background to morphic I came across this (User-Scripting has since evolved into etoys):
"In the User-Scripting style, you construct surface graphics by directly assembling standard Morphic parts -- e.g. Rectangles, Images, Joysticks, etc., by dragging them from a Parts Bin and arranging them as desired, and then you add user-defined state and behavior by adding instance variables and writing methods for "Players" who represent the individual morphs you wish to script.

The user thus does not directly subclass any particular kind of Morph, but rather she assembles Morphs and gives them special state and behavior by associating them with "Players", which are the fundamental user-scriptable object types for User Scripting."
- IntroductionToMorphic/Morphic-Styles-Scripting
How to look behind the scenes?

If you click on the light gray debug halo, the one with a spanner icon, a menu appears which enables you to inspect the morph. Then by clicking on extension you can see the important classes involved in the programming side of things. Then you select (highlight) the class name you want more information about and followed by Alt+b to open the browser on that class. This contains all the information you want.



Smalltalk has the open-ness and tools to enable you to look under the hood which is a significant other advantage for learning. Any proprietary program which hides or blocks information is reducing the potential to learn important under the hood knowledge.



By poking around in this way I discovered that the important classes involved are MorphExtension and the Player class, which are described as follows:
Object subclass: #MorphExtension
instanceVariableNames: 'locked visible sticky balloonText balloonTextSelector externalName isPartsDonor actorState player eventHandler otherProperties'
classVariableNames: ''
poolDictionaries: ''
category: 'Morphic-Kernel'

MorphExtension provides access to extra instance state that is not required in most simple morphs. This allows simple morphs to remain relatively lightweight while still admitting more complex structures as necessary. The otherProperties field takes this policy to the extreme of allowing any number of additional named attributes, albeit at a certain cost in speed and space.

Model subclass: #Player
instanceVariableNames: 'costume costumes'
classVariableNames: 'BiggestSubclassNumber TimeOfError'
poolDictionaries: 'References'
category: 'Morphic-Scripting'

The fundamental user-scriptable entity. Always represented by a user-specific subclass of Player; instance vars and methods relate to user-defined structures.

costume is a Morph, the primary morph I am currently wearing for graphical display.

Scripts are defined in subclasses of Player. These are UniClasses.

Messages in scripts are sent to Players. A Player may delegate to its costume, or to an object the costume suggests. Or, a Player may designate some other object to receive the script messages it does not understand. (see doesNotUnderstand:)

The UnscriptedPlayer subclass of the Player class is also important:
Player subclass: #UnscriptedPlayer
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Morphic-Scripting'

My instances are Player objects that have not been scripted, and which hence do not require a unique scripts dictionary, etc. As soon as needed, I am transformed automatically into a unique subclass of Player.

I looked at the before and after situation of adding a script to a rocket object. The important changes are in bold.

Before:
a MorphExtension (3333) [externalName = rocket ] [player = an UnscriptedPlayer (1733) named rocket] [other: (rotationCenter -> 0.5@0.5) (forwardDirection -> 0.0) (baseGraphic -> Form(70x64x32))]

After:
a MorphExtension (3333) [player = a Player66 (1733) named rocket] [other: (rotationCenter -> 0.5@0.5) (trailDotSize -> 6) (forwardDirection -> 0.0) (baseGraphic -> Form(70x64x32))]

So, when I added the script the UnscriptedPlayer class changes into Player66 class

Then if I inspect Player66 class in the browser I can see that it has the script I wrote and that the Steer object has been passed into the Player class of the rocket object:

script1
self forward: 1.
self setPenSize: 1.
self turn: Steer getHeading / (self beNotZero: 3)

Conclusions:

Even though I've learnt a lot I'm still not certain about whether this is "class create" or "object use". I still have a lot to learn about OOPs before I can clearly answer this question or even judge whether it is an important question to ask.

However, I do have a much clearer picture of what is happening behind the scenes when I do etoys scripting

Probably the main thing I have gained from this exercise was the knowledge that Squeak has good tools for quickly inspecting objects and classes, that as a system it encourages learning in this sort of way.

web2.0 spray: Stager versus Downes

Stager: Why Teachers Don't Use Web 2.0 - an historical perspective
Downes: Stager, Logo and Web 2.0

Gary Stager loves logo and knows what he is talking about. But when it comes to "web2.0" he shoots from the hip and there is a lot of spray. Moreover, there is some irony involved in criticising web2.0 so strongly in a blog post.

Stephen Downes has done some heavy lifting wrt theorising "web2.0". But in his response he either ignored or didn't understand Stager's logo philosophy and indulges in snide comments about "old-school" versus "new-school"

This is not a real debate, yet. It is two experts sounding forth on their favourite topics without taking the trouble to look deeper at what the other is really trying to say.

Here is my take on some of the issues

Disruptive technologies
Both logo and web2.0 technologies are disruptive to traditional School. So Stager and Downes ought to be on the same side here, more or less.

Politics
I have studied Papert deeply but (sadly) not Illich or Freire. My impression is that they are all on about deschooling society. Both Stager and Downes are arguing for more political and social activism wrt to school reform and are critical of those who can't see this. Where is the difference?

History
Logo has a history, which is eloquently summarised in Stagers post. Web2.0 advocates ought to study and acknowledge that history deeply. Otherwise they will be blinded and trapped in the glitter of the present and not put it into perspective. But web2.0 in general is not about studying history deeply. It's the exception. Web 1.0 is almost as good for doing that.

Expertise
Stager says that Papert was a deep expert leader. Downes says that you have to work it out by yourself with the help of your RSS feed. Both are right but who in the web2.0 movement has actually understood Papert and situated his contribution historically? Quite rightly, Stager is angry about that.

Objects to think with
Stager's point about "objects to think with" is important but needs further elaboration. Downes response is reasonable as a starter but shows no understanding of Papert's deeper meaning of this term

Developmental approach
Should software be developed with children in mind (Stager) or is that not so important because we want to bridge the artificial School / Society gap anyway (Downes)? I think to answer that does require some study of the history of computing and educational computing software. Who is going to do that?

Information theorising
Downes has done heavy lifting here and so is rightly aggrieved at Stager's one liners. Needs more work. In general the "web2.0" response is not to read Downes theories, understand them and respond to them but just to keep on blogging

Tools and philosophy
Stager: "It is difficult to sustain a "revolution" when its goals remain unclear and the soldiers rally around the tools, not ideals"

Downes protests because he has done some significant philosophical work here. But since Downes rejects constructionism that's an ongoing debate that needs to happen. It would be a good thing if we had more debate about tools, philosophy and the human condition.

I think there is some convergence between Papert's philosophy (see invitation to immersion) and the more articulate "web2.0" philosophy (eg. blog of proximal development). But only some. At it's best web2.0 in education is mainly about Vygotsky and written language, whereas Papert is mainly about maths-land (logo) and science-land (LEGO logo). Both are important but the approach is different

More on my views about some of these issues here: a challenge to connectivism

Tuesday, September 04, 2007

morphic / etoys is a superior graphical user interface and programming development system

Morphic is a superior dynamic graphics system which remains undiscovered by our formal education system and so remains hidden from our youth and teachers. It has been around since circa 1995.

The purpose of this article is to outline the argument for superiority. A different article could be written discussing the reasons for the remarkable fact that a superior system has remained largely undiscovered by education systems for over 10 years.

A quick look at the main design features, with screenshots, makes the superiority of morphic clear. The manipulations and screen shots were done in a recent version of squeak obtained from the squeakland site.

1. Concreteness and Directness

Everything on the screen is a morph and can be directly touched and manipulated. Action by contact not action at a distance.



By direct manipulation programming, using the halos, I can quickly alter the size, colour, border and drop shadow of the original rectangle, as shown.



Or I can use the menu halo to alter a closed curve morph to an open curve and use the handles to reshape it.

2. Liveness

If I click on the cyan coloured halo which has an eye icon, then an interactive Viewer pops up which enables me to see the car's x and y co-ordinates and heading in real time. I can also make the car move, turn, make noises and many other things (only part of the Viewer is shown in the screenshot)


The script can be changed even as it runs, allowing the user to see the effect of script changes immediately. The script can be turned on and off directly through the clock icon. Just as you don’t have to (and can’t!) turn off the laws of physics before manipulating an object in the real world, you needn’t suspend stepping before manipulating a morph or even editing its code.

In morphic any morph can have a life of its own: object inspectors update, piano rolls scroll, movies play:


What are morphs? What can they do?

morph = shape or form, from the Greek.

Morphic is a subset of classes within the the Squeak / Smalltalk programming language.

All the things you see on the screen are morphs. So the Squeak GUI is built from morphic and can be reprogrammed if you have the skill and inclination to do that.

Morphs can be programmed to:
  • perform actions in response to user inputs
  • perform actions when they interact with other morphs
  • perform actions at regular intervals
  • control the placement and size of submorphs in building more complex objects
With morphic there is more variety than with more conventional GUI builders

Some history

The first version of morphic was developed by John Maloney and Randy Smith at Sun Microsystems Laboratories as the user interface construction environment for the Self 4.0 system. Self is a prototypebased language, similar to Smalltalk but without classes or assignment. ... For Squeak, morphic was re-written from scratch in Smalltalk.

Conclusion:

The Halo features (direct manipulation programming of size, colour etc.) and the Viewer features (a dynamic graphical inspector and browser) are what make morphic superior to other systems IMHO. Other systems have part of the Scriptor feature (a place to define, edit, test, save and schedule scripts) but not all of it. They don't have late binding, the ability to make changes while the system is running. The ability to test and reprogram on the fly while the program is running is an enormous boost to understanding variables and debugging code.


REFERENCE
An Introduction to Morphic: The Squeak User Interface Framework by John Maloney
This describes morphic, how it works, design principles, some history and compares it with the MVC (Model-View-Controller) framework. The author is one of the original developers of morphic.

Morphic - The Squeak User Interface by Juan Manuel Vuletich
An excellent introduction to the history and design of Morphic. Describes the evolution of Morphic from MVC and Self

Morphic tutorials

Saturday, September 01, 2007

in general programmers are not creatures of the Enlightenment

Should we even try to teach programming? I have met hundreds of programmers in the last 30 years and can see no discernible influence of programming on their general ability to think well or to take an enlightened stance on human knowledge. If anything, the opposite is true. Expert knowledge often remains rooted in the environments in which it was first learned--and most metaphorical extensions result in misleading analogies. A remarkable number off artists, scientists, philosophers are quite dull outside of their specialty (and one suspects within it as well). The first siren's song we need to be wary of is the one that promises a connection between an interesting pursuit and interesting thoughts. The music is not in the piano, and it is possible to graduate Julliard without finding or feeling it.
- alan kay, The Early History of Smalltalk
This has been niggling away at me in the background and in some of my dialogues with others for some time now

I have on occasions argued that programming skills in their own right do stand for "higher order thinking" (a phrase I'm no longer happy with) and deserve their own place in the sun.

And I have argued against the Victorian VELS (integration of computing into the curriculum) on the grounds that young students need exposure to skilled computing teachers and not the English teacher who sits out the front marking while kids get on with their word processing (and playing games they have smuggled in)

But the above quote from alan kay and his general emphasis that the main important thing is the non univerals does force me to look again at these stances

I wasn't wrong about the underlying problems of computer integration. I wasn't wrong that programming skills are in some hard to define way, "advanced". It's not so much that my arguments were wrong but that I didn't have a sufficiently firm grasp of the big picture, that the non universal powerful ideas really is the main issue.

This probably makes school reform harder still. Because the ways Schools generally teach maths and science is not powerful either. I've rocked the boat in science faculties in the past and they didn't like it. And teaching maths on the computer using logo? Yes, you can dabble with that in the middle school if you want to, but there just isn't time for it in the senior curriculum.

Programming can be powerful but unless we get the context and environment right then any gains will be much less than what could have been achieved. As Alan Kay points out many good programmers don't inspire in a more general sense. The harmony is not in the piano. logo or game maker is not weeties for the brain.

Although some of my own history is good it is easy to lose the way, to lose track of the powerful ideas, in the complexity and inflexibility of School

The reason I first decided to learn to program is that I read parts of a cult book, Godel, Escher, Bach by Doug Hofstadter (230 amazon customer reviews) and decided the only way I could possibly understand recursion was to explore it through programming. Mindstorm by Seymour Papert (my review) was another seminal influence, which led me eventually to comp.lang.logo on USENET, which became a vital part of my learning environment for a few years. Good start. So I explored some logo, did fractals and other interesting stuff (ISDP, Quadratics, immersion)

But 20+ years later I'm teaching year 9 specialist computer classes basic IT skills like file management and word processing in a computer lab. I'm bored with it, slipping into darkness.

Of course, I've been doing other interesting stuff along the way, like game making, but overall I've taken my eye off the main game -->> the powerful ideas / non universals. I don't see any easy answers for this in the context of School. But we need to talk about it.

Tuesday, August 28, 2007

eben moglen to tim o'reilly, "you have wasted ten years"

moglen versus o'reilly video

moglen understands the ephemeral and potentially dangerous nature of web2.0 (eg. google aggregates our data centrally in exchange for free apps, its not certain what they will do with it in the future), looks behind it to more fundamental issues - freedom, property, money

his critique of o'reilly and the OS part of FOSS is spot on, IMO

some moderating commentary here from Peter Rock

Friday, August 24, 2007

thoughts on a python programming competition

NCSS Challenge: The National Computer Science School python programming competition run by the School of Information Technologies, at the University of Sydney

I'm on long service leave, so I had time to participate in this competition, since they encourage teacher participation. NB. I would not have had time for it - no way - if I had been teaching.

I was very rusty on my python programming. Having the intensity of a competition with strict deadlines (complete 5 challenges a week for 5 weeks) provided some clear structure and pressure to get on with it

My general view about programming is that it is hard to learn. I'm also quite keen to improve my skill because for me programming has a deep sense of epistemological importance wrt to future of the human race. Two links and one quote about this. Why program? What is programming?
(Abelson and Sussman)....writing a computer program is really about the intellectually difficult task of how to control a complex system. The programming language provides us with a means to express and explore ideas about this which would otherwise be too complex to manage.
Each participant is given a profile page where, inter alia, they can enter their code into a window. A server runs some tests on the code which then provides feedback and whether your code was successful or not. You have 5 tries before you lose any points, which is a necessary feature for a machine check. Although far from perfect this mechanism does mean that the organisers do not become snowed under with marking. The negative is that it also limits the creativity or individuality of the competition, unlike some Game Maker competitions I have recently been involved with.

Forums are also provided. One of the forums allows participants to put in a query for code they think should work but which doesn't. I used this a few times. Then a real person evaluates your code and gives you some feedback.

So, there is a combination of machine checking and human checking which minimises work load for the organisers but provides necessary human to human feedback for those who are puzzled with a hard problem. The testing process meant that you had to finish off your program completely to pass all the tests. If you didn't then you received zero points

In the main this feedback mechanism worked well for me. ie. normally the feedback (either machine or human) made sense and I could then proceed to improve my code. Sometimes I thought the tests were either mean (not explained in the challenge) or trivial (eg. "!" missing in a print statement) but the 5 point buffer made up for that.

It was a competition. There was scoring with points, a leader board was published etc. Overall, I found this provided focus and was motivating. However, when I couldn't solve the spreadsheet problem fully after 4 days it made me dispirited for a while. So it could be hard for those struggling with the basics more than me.

The challenges varied in difficulty from easy to hard (my opinion). Examples of hard problems included a spreadsheet simulation (I learnt about eval in doing this one, but still didn't manage to meet all the criteria in time) and programming a MUD.

The challenges focused pretty much on the maths and logic domain. My logical thinking mechanisms have been give a good workout! The sort of things covered required me to improve my skills in the use of strings, lists, dictionaries, conditionals and importing and reading files. For example, one of the problems involved reading in an English to German dictionary (provided) and programming some translations of nouns from English to German and back again. Other problems involved sequences, working out what the sequence was and then writing a program to provide the correct output for an input sequence number.

So, my criticism here is that this is reinforcing an already stereotyped pool of recruits into programming, those who are already good at maths and logic. I think more than this will be required to reverse the trend of declining IT enrollments to courses. Read Mark Guzdial's post, The Wonderful Opportunities of the Declining Enrollment Crisis

Briefly, here are some of the things I learnt or beliefs which were reinforced from the programming part of the competition:
  • computer programming is not easy (I've already said that)
  • you need to put in the hours
  • it's necessary to have some large slabs of uninterrupted time, the very thing that nearly all teachers do not have
  • sometimes logic errors totally confound me, initially, I just cannot see how the error message I am receiving, either from python traceback, or, from the competition automatic tests, could possibly be correct
  • but then it's either terribly frustrating or wonderfully elating when some time later your next effort either succeeds or fails
  • surely I'm not the only programmer who experiences despair and / or elation
  • more than once I did not read the question thoroughly enough and this led to errors which could have been avoided - pretty funny since I'm a teacher who sometimes tell students to read the question carefully and then become frustrated sometimes when they don't seem to
  • overall the testing process pushed me in the direction of becoming more rigorous and proactive, to think before submitting code - to question some of my "she'll be right, mate" attitudes
  • you need a good reference manual, pp. 49-50 of Python in a Nutshell (list and dictionary methods) has become well worn.
Many thanks to the IT crew at University of Sydney for organising this.

Thursday, August 23, 2007

OOPs?

I entered in the National Computer Science School python programming competition run by the School of Information Technologies, at the University of Sydney. It's been great for my learning. Some of the challenges have been hard, for me. eg. simulate a spreadsheet, make a MUD game (although there was a fair bit of guidance for the latter).

But one thing I noticed was no requirement for object oriented programming.

I do have a beginners book on python programming (Python Programming for the absolute beginner by Michael Dawson) which does teach OOPs. Don't be put off by the dumbed down title, it has very clear explanations which is unusual in my experience for programming books.

Also I've become aware of the origins of OOPs through reading Alan Kay's Early History of Smalltalk and also Dan Ingalls Design Principles Behind Smalltalk and this knowledge makes a difference (without going into those detail at this stage).

So, I've become aware of two things.

At best, Education is stuck at the level of procedural or structured programming. Or quite often for most students, just applications, no programming at all.

OOPs is important (vital) for programming more complex systems but is harder and therefore makes limited inroads into formal Education.

Despite finding it hard to get my head around OOPs myself I don't really want to believe the second statement. I'm hoping that etoys / squeak (visual programming) might provide the answer of making OOPs more accessible. I'm not sure.

Reading Mark Guzdial's blog (he has published books in both Smalltalk and Python) makes me think that part of OOPs (creating classes) might be too difficult

This:
"Objects, for example, are harder for people to understand than procedural programs. Distributing responsibility and process across multiple objects increases cognitive overhead. That's empirically demonstrated. While it may be provably better (e.g., improvements in cohesion, coupling, and encapsulation), it demands more from its practitioners -- and in so doing, makes it harder to take on that role. As more complex ideas flow into the task of programming (structured programming, strong type systems, iterators, abstract classes, interfaces, and so on), the cognitive demands increase."
- Plea to Language Designers: Bring Back GoTo!
And this:
Two of the graduate students working with me, Brian Dorn and Allison Tew, did a fascinating study over the winter break and submitted a paper on it (still awaiting word on acceptance). They reviewed all the programs (scripts) that graphics designers had written for Adobe Photoshop and then had shared with other graphics designers/programmers at a specific website. These were written in Adobe's form of JavaScript. Brian knew (from an earlier study reported in his ACM ICER 2006 paper) that these designers/programmers had virtually no formal computer science background. The questions that Brian and Allison were asking included "Without a curriculum directing coverage of everything, what programming constructs do these end-user programmers use -- either because it's so useful, or because it's easy enough to understand without a course, or both?" In a real sense, this is studying "natural" programming -- what programmers "in the wild," who program because it's useful to them, do without the influence of a teacher.

As one might imagine, every program used variables and assignments, and virtually every program used conditionals and relational operators. But then there are some subtle and fascinating differences. Over 60% of the projects they found used FOR loops, but only 37.5% used WHILE loops. Are FOR loops nearly twice as useful or twice as easy to understand as WHILE loops? They also found that the use of TRY-CATCH for dealing with exceptions appeared in over 60% of the projects they reviewed. Perhaps exceptions are much more useful or much easier to understand than WHILE loops, though virtually everyone teaches a WHILE loop but not everyone teaches exceptions. Programmer-created functions appear in over 70% of the programs they reviewed. Programmer-created objects appear in less than 20% of the programs. Perhaps "objects-first" isn't as natural as we might think.
Studying Programming in the Wild
And these extracts from a discussion he was having on another list:
- "Object-use" means instantiating objects, applying methods to objects, writing new methods.
- "Class-create" means creating new classes and solving problems by writing different methods in different classes (distributing responsibility).
- "Early" means in the first week of class, or in the students' first programming assignment

Using the term "impossible" seems to be setting up a strawman. Nothing in education is "impossible." How about if we use a new term: "works," where works means "students can be successful in completing tasks using what they perceive as a reasonable amount of effort." ...

Reconsidering the phrase "objects-early is impossible," let's first consider "object-use early doesn't work." I'd say that the evidence AGAINST that is pretty strong. Not only do we have evidence of broad student success in tools like Alice (which doesn't have classes and methods in the same sense as Java or Smalltalk, so it tends to be "object-use" rather than "class-create") but even in Logo -- whose turtle is clearly a "first object." Roy Pea and Midian Kurland found that few students that they studied really learned Logo well, but there's a good bit of evidence from studies like Sharon Carver's that students could learn Logo -- that Logo "works."

Now let's consider "class-create early doesn't work." The way I read the research, there's a lot of support for that statement: Creating classes and writing distributed methods is *hard*. Consider some of the research evidence:
- Anne Fleury's work showed that students far prefer in-line code, even going so far as to prefer constants to named values. The Psychology literature makes that obvious: having to look elsewhere to find the value for something increases cognitive load.
- T.R.G. Green's work showed that increasing cognitive load (by making people look elsewhere for code and values) makes it harder to program, e.g., people read more slowly and make more errors.
- John Carroll's and Mary Beth Rosson's work at IBM in the 1980's on Smalltalk found that programmers had a hard time understanding the distinction between classes and instances.
- Even Adele Goldberg's technical reports from Xerox PARC in the 1970's showed that most of their students weren't able to complete program modification tasks in the given time. It took too much time to find where a particular feature was buried in a particular class. It didn't "work."

Overall, it's hard to test this hypothesis convincingly. It's hard to control for all factors and get students to program the same things with and without making classes. But there is a macro-level way of testing this evidence. For the schools whom I've talked to, the failure rate in introductory classes jumped when they went to class-create early, either in C++ or Java. That evidence suggests that it's true that class-create early doesn't work....

For myself, I'm going to stick with an approach of object-use early and class-create later (week 10 or later). Here are my reasons:

- PROGRAMMING IS HARD. Even procedural programming. I see students struggling with where to put the RETURN even in week five. In our last midterm, I was dismayed with how many students were still struggling with how to manipulate two different indices when working with two different arrays (sounds). I'm happy with where our students get in 15 weeks.

- OBJECT ORIENTED PROGRAMMING IS HARDER. I have seen no evidence that class-create programming is EASIER than procedural programming when dealing with introductory-level concepts and CS1 level of programming. I've seen lots of evidence (referenced in my last message) that it's harder. This doesn't have to do with the teaching method -- this is entirely a matter of cognitive load. The raw task of O-O programming requires a greater cognitive load than procedural programming.

- I CAN'T AFFORD TO MAKE IT HARDER. With high failure rates, students' perception of CS as being too hard, and declining enrollments, I can't afford to include class-create early. The costs aren't worth the benefits of learning object-oriented programming in the first course. I believe we need more of a gradual slope in our intro course, not such a steep curve that looks to students like a wall.
- NSF CPATH, Jobs and Objects
Mark Guzdial makes a lot of sense. Reality check. However, I'm still very interested in pushing ahead and learning OOPs myself as well as further exploring the potential of etoys in that context.

Wednesday, August 22, 2007

Ramon Leon: On Smalltalk

Another great Smalltalk blog. Here are some of the things I found there:

Smalltalk in Action
This provides a link to a video which demonstrates the power of late binding:
... some of the features of the refactoring browser on a running instance of the classic Asteroids game. He extracts a method to a component, changes the color of the asteroids, then shows off undo and redo. He does so while the game is running without ever having to break his flow with something as silly as a compile, debug, run cycle that we’ve all grown so accustomed to in most other languages.
Building a blog using Seaside
This links to a screencast of Ramon building a blog in seaside in 15 minutes. Seaside is a web development program which is written in Smalltalk

My Journey to Linux
The transition from being a Windows guy to a Linux guy. Shit happens.

Why Smalltalk
"I’m still amazed by how many people think they can grok Smalltalk by seeing syntax examples. Smalltalk isn’t its syntax, it’s its environment. Smalltalk is a living world of running objects, there are no files, no applications, just what’s running. To understand Smalltalk, you have to either actually use it for a while, or have a seasoned Smalltalker demonstrate it to you. Reading sample code just won’t cut it."

Ramon's top posts are here

Thursday, August 16, 2007

powerful ideas discourse


I asked Alan Kay, on the Squeak list, for some clarification of the "non universals" slide from his Europython 2006 keynote

This has sparked a discussion about powerful ideas - what are they and why don't they figure more in School or University education?

The 'non universals' thread starts here (my initial post) or for an overview of the August archive (to follow the subthreads more coherently) look here

Some of the discussion points so far:
  • Where does the non universals list originate from?
  • Clarification of the meanings of these terms from the non universals list: 'Theory of Harmony' and 'Similarities over Differences'
  • Why aren't powerful ideas taken up by School?
  • Elaboration on the reasons for the huge gulf between genuinely powerful ideas and the current reality of our formal education systems
One quote from Alan Kay, which is part of this discussion:
Someone once asked Mohandas Gandhi what he thought of Western Civilization, and he said he "thought it would be a good idea!"

Similarly, if you asked me what I thought of University Education, I would say that "it would be a good idea!"
These are important issues, we need to discuss them more. Understatement.

child's play


Fix my laptop

10 yo boy and 8 yo girl disassemble, troubleshoot a loose wire, and reassemble the XO - visit link to joel's blog to see video and read more description

Tuesday, August 07, 2007

mark guzdial on computing education: the importance, problems and possible solutions

I spent some happy hours reading Mark Guzdial's amazon blog. It's really good. Fantastic!

Mark's teaching approach is to start with a rich concept from the wider world of science or economics, for example, and then use computers, including programming, to enrich the study of that domain. As well he has background exposure to the philosophical and educational ideas of Alan Kay and Adele Goldberg, which he incorporates systematically in his thinking and writing. Every blog he writes is of a high standard, no waste or diversions from the central theme of educational computing (unlike my blog!). Here are some of the main issues which I feel he covers brilliantly:
  • the reasons why computer education including programming is vitally important, ie. a coherent argument about why everyone should learn to program
  • recognition of and reasons for the world wide enrollment decline in computer science
  • recognition with evidence that many students find programming hard and fear it
  • discussion of student understanding of basic computer concepts
  • contextualised computer education as part of the solution to these problems
  • description and feedback from the courses they run at Georgia Tech.
  • critical discussion about getting more girls involved in studying computing
I'll link to some sample posts of Mark's below with a brief commentary from me to flesh some of this out and give readers with little time some meaty places to get started:

Why Should Everyone Learn to Program? (Or, WHO should learn to program?)
Outline of an argument put to Mark's Associate Dean

What Students Think of Media Computation
Inspirational feedback from students from the Georgia Tech Media Computation course

The Wonderful Opportunities of the Declining Enrollment Crisis
Analyses the reasons for decline in Computer Science enrollments and what could be done about it

Follow-up: Report on Grace Hopper Panel
Discussion of "Female-friendly education: Increasing participation or watering down?"

CompFreak Round-Up
Summary of projects tackled and some student feedback from the Computational Freakonomics course

What is Computing?
The computer is the most significant invention for augmenting human thought since the invention of writing ...

Computational Freakonomics
Description of this course

Contextualised Computing Education
Rationale for a new type of computer education

Students find programming distasteful
"
I’ve had a couple of experiences over the last few months that demonstrated to me just how much students dislike programming, at a deeper level than I had expected ..."

BOOKS
Mark is the author of several books about computing, just linking to a couple here:
Introduction to Computing and Programming in Python, A Multimedia Approach

Squeak: Open Personal Computing and Multimedia (with Kim Rose)

Thursday, August 02, 2007

everything bad while in the process of amusing us to death is good


Daniel Livingstone has the intellectual wherewithal to compare two books which on the surface point us in opposite directions. Brilliant!!

Amusing Ourselves to Death: Public Discourse in the Age of Show Business (1986) by Neil Postman
Everything Bad is Good for You: How Today's Popular Culture is Actually Making us Smarter (2005) by Steven Johnson

Daniel's blogs are thought provoking:
Amused to Death
TV Culture Makes us Smarter ... than what?
Smarter and Sillier

I’ve been reading a lot about alan kay’s ideas recently and discovered that Postman was a member of the advisory board for the Viewpoints Research Institute until his death in 2003

In his biography of Kay, John Maxwell analyses the connection b/w Postman’s social analysis and Kay’s ideas about using computers with children. Here is a long quote from Maxwell's thesis about this:

Kay’s warning that too few of us are truly fluent with the ways of thinking that have shaped the modern world—logical argument and systems dynamics — 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, and I know I’ve missed something important in my understanding of math and science. 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. (1997, p. 19)
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 (Postman was a member of the advisory board for the Viewpoints Research Institute until his death in 2003); that we as a society have become incapable of dealing with complex issues. Postman charges that public argument on the scale of that published in and around the US Constitution would be impossible today, because the length and depth of the argumentation simply would not fit in a television format, newspapers would not print it, and too few people would buy it in book format (Postman 1986).
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 Paine’s Common Sense and being able (and happy) to fluently write a critique or defense of it. (Kay 1996 p. 548)
Another example of “literacy” that Kay repeatedly mentions is the ability to hear of a disease like AIDS and to recognize that a “disastrous exponential relationship” holds:
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. (Kay 1994)
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” (1995). 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” (1995). 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 havenots” 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. (Kay 2000a, p. 395)
What is to be done, then? This sort of critique puts the education system in the United States (and most Western countries, by obvious extension) in such bad light that many are tempted to depair. Kay’s project is relentless, though: with or without the school system, the attempt to reach children with powerful ideas and the means to working with them is always worthwhile. Part of the key to seeing a way through this is to remember that education does not equal school, nor does television (or any other medium) represent an essential obstacle to education. “Television,” says Kay, again recalling Postman’s argument, “is the greatest ‘teaching machine’ ever created. Unfortunately, what it is best at teaching are not the most important things that need to be learned” (1995). But in this are also the seeds of an alternative; how could different media be harnessed in such a way as to lead in a more productive direction? How can children have any “embedded cultural experience” that encourages learning logic and systems thinking? The answer isn’t in the design of any particular curriculum. Rather, Maria Montessori’s vision inspires Kay: putting the emphasis on children’s “absorbent minds” and the freedom to play and explore.
The objects in our system are instead a help to the child himself, he chooses what he wants for his own use, and works with it according to his own needs, tendencies and special interests. In this way, the objects become a means of growth. (Montessori 1972, p. 150)

expertise and historical perspective

There is or was a good argument about "web 2.0" in the comments section following on from David Warlick's First Year Teachers post

David Thornburg (Comment 11) introduces some historical perspective and argues a radical rejectionist position that there is nothing new in "web 2.0" and he cites a number of web 2.0 technologies that have historical precursors:

Blogging? Oh, you mean “bulletin boards?” These were wildly popular when Marc Andreeson was in elementary school.

Oh, I know, Second Life! Yesiree. That has Web 2.0 written all over it. Except that Neal Stephenson wrote all about it in Snowcrash, published in 1992. His vision of a parallel virtual world became reality a few years later with a program called the Palace that kids all over the world were using to create virtual worlds ...
He goes on to point out that there is a difference between qualitative change (truly new stuff) and quantitative change ("web 2.0")

Although he is correct in a technical sense (a point acknowledged in the discussion and reinforced by Tom Hoffman, Comment 20: we should use language correctly, web 2.0 is hyped) I don't think he wins the debate overall

Chris Lehmann (Comment 13) and Andy Carvin (Comment 15) challenge David's qualitative / quantitative distinction in pointing out that a lot of incremental changes (even if not representing true innovation) do eventually add up to a qualitative change in the overall environment. I agree with this dialectic: sufficient quantitative change can lead into qualitative change.

A brief summary of some of the points they and others made:
hardware: broadband explosion, cheaper storage
software: easier to use applications, RSS matters for keeping track, tagging / folksonomies, open APIs
social: more user generated content: eg. blogs, wikis, photos, podcasts, video, more community
economic: low to zero barriers of entry to publish

I liked the way Mike Guerana (comment 46) summed it up:
The new iterations of the “old” web technologies have been amazing evolutions in being able to receive information that is more customized and personal. I like the fact that I can use Google Reader for RSS and not have to visit each page throughout the day. I don’t care what it is called ...
OK. David Thornburg made a bold discussion point and there was a good response from some authorities and participants in the "web 2.0" community.

But historical analysis has many perspectives. There are other good critical discussion points about "web 2.0" that could have been made but were not. IMO, David Thornburg was making a technical-historical point, that web2 technologies have pre-web precursors. I think it might be more important to make the educational-historical point that we have seen great computer based educational technologies in the past - logo is a good example - that have now faded so much from view that many in the "web 2.0" community may not have even heard about them or the educational philosophies of their advocates (Papert, Harvey, Kay, Stager etc.)

Sylvia Martinez elaborates on this other history in web 20 and historical perspectives:

Right now the concept of Web 2.0 in schools is in the hands of excited educators who have felt the power of learning something new and want to share it with their students and other educators. It’s a contagious, revolutionary feeling that we are on the cusp of something that will change the world.

This feels SO much like the 80’s, when computers first started trickling into schools. But the dark side is how schools, instead of letting educators show the way, turned to corporations and publishers to commercialize and pre-package the computer into school-friendly forms. It deprived students and teachers of authentic chances to program, to make music, and to create. Instead of the revolution in learning that seemed to be ever so temptingly on a permanent horizon, it turned computers into test prep machines that reinforced the way school “delivered” information to students.

The score: Technology - 0, “School” - 1

Furthermore, within the thread and within the web 2.0 community some things are said, by intelligent people, that I think are wrong / dangerous. For instance:

Miguel Guhlin (comment 42): "I don’t have to worry about being an expert since there are so many people out there who are experts…I can rely on you"

David Weinberger has written a book with this title: "Everything is Miscelleous"

Andrew Keen, a web 2.0 critic, said in his debate with David (video link) that the book was good but he could never agree with the title. I agree, the title is very bad. (I haven't read the book)

Leigh Blackall in response to my earlier post said he relied on trusted experts: "my Youtube experience is made up of recommendations from experts I already trust".

This argument reinforces my belief that expertise is another important question that "web 2.0" needs to address. When experts argue then we begin to make progress. We should not be trusting experts but building environments where they are encouraged to argue.

Overall the debate on David Warlick's blog was great because experts argued on issues of importance, many of the comments were of high quality and their was passion and involvement.

But web 2.0 is not always like this. One of Seymour Papert's learning principles espoused long ago in The Children's Machine (1992) is that, "a good conversation enhances learning". Well, how about a bad conversation? And aren't there many bad conversations on web 2.0 forums? As I said in an earlier blog:
Global village idiocy, banalisation, hive mind, self censorship and chasing popularity are all real problems.
As web 2.0 scales this problem may well become worse. eg. at the moment most teachers who blog do have things of interest to say, they tend to be movers and shakers who want to change the system. Perhaps those clammering for more and more of web 2.0 ought to reflect a little on what normally happens to technologies once they enter the mainstream.