>One of Hello World's great problems is that it
>doesn't scope. You do it on the command line. You do
>it in a GUI. On a webpage. But there's no easy
>continuation of the lesson, you just throw it away.
When the language in question (as it is here) is Java I must agree. However when teaching other languages, I have progressed from HelloWorld thus:
1) console based hello-world.
2) GUI label.text = "" based hello-world.
3) button with command=quit based hello-world.
4) button with command->change label -> quit
5) Basic GUI adder (two text boxes, one button, and a label for the result)
6) String copier using two text area's (on-click copy text from one area to the other).
At this point you have enough basic GUI components to allow a switch to traditional lessons, introducing fuctional decomposition, data-structures, and basic algorithms. OTOH, you also have given the students the perception of signifigant progress. I have generally found the resulting morale boost leads to spontaneous experimentation and self-directed learning.
Still there is nothing magical about "HelloWorld", the properties example could be structured in a similar way.
With Java, the lack of a syntactially clean analogue for lisp/python closures, smalltalk blocks, or tcl eval(), C/C++'s function pointers, etc. There is a substantial barrier to introducing GUI programming that early.
Note that this is an issue with using Java as a *FIRST* language only. Once a student has learnt basic programming skills, the learning barrier is substantially reduced.