Learning Squeak from Scratch

   
   
   
   
   
olpc scratch
Slime Attack on Scratch
Another week, and another piece of One Laptop Per Child software aiming to turn kids into programming maestros before the distractions of puberty. After four years research, a subset of MIT's seemingly limitless supply of boffin filled cubicles, the rather wonderfully named "Life Long Kindergarten" unleashed "Scratch" upon the world. In a BBC news article that coincided with its official release, their reporter, Jonathan Fildes, closed his article with a reference to a version being developed for the OLPC XO. According to the developers, Scratch is:
a new programming language that makes it easy to create your own interactive stories, animations, games, music, and art -- and share your creations on the web.
Scratch is written in Squeak, an open source implementation of the smalltalk language, and if you've been following the OLPC project for a while, you'll probably have come across the name before, usually in conjunction with etoys. The OLPC wiki says of, etoys:
[etoys is] a media-rich authoring environment with a simple, powerful scripted object model for many kinds of objects created by end-users that runs on many platforms.
And what, might you ask, is Squeak? According to Squeakland, the home of all things related to Squeak and education, it is:
a "media authoring tool"-- software that you can download to your computer and then use to create your own media or share and play with others.
So, are all these things the same?

Well, not exactly. The best explanation I've uncovered came in an email last month to the Squeakland mailing list. In response to a query bout the suitability of etoys for a group of school children with learning disabilities, Eric Eisaman, a physics teacher who has been using Squeak etoys for a few years, pointed out that different classes respond differently to Scratch and etoys and appears to suggest that Scratch is a good introduction to etoys, which is a good introduction to squeak:

[...] "Scratch" is a gentler approach to programming than Etoys yet lacks some of the advanced functionality. [...] The more advanced students have shown some success in creating with the latest Full Squeak image without using Etoys. [...] I think it's important for the students to see growing levels of sophistication built on the same basic virtual machine going from Scratch to Etoys to Squeak to Smalltalk.
olpc squeak
Squeak on OLPC XO
This neatly mirrors the XO's construtivist philosophy of children learning different tools that themselves can be broken down for further inspection and scrutiny. Squeak is the underlying language beneath both etoys and Scratch. Both Etoys and Squeak will be pre-loaded on XOs when they are released, but whether or not Scratch is included will no doubt depend on the ironing out of a few kinks, such as a current inability to run fully functional in Linux.

Although the response to these tools has been very positive, just have a look at the number of diggs the story received when it hit the front page on Tuesday, there are a couple of vaguely worried noises emerging. Although the tools being developed - etoys and Scratch - are without doubt well thought out and expertly implemented, two questions emerge - Why are these tools almost exclusively "game" orientated and are the developers focusing on the tools themselves as opposed to the ability to actually learn tools.

The first question is posed by _why, a ruby developer who has put together a package called HacketyHack which teaches kids to program useful applications with simple coding and the second mirrors a recent concern shown by Mark Shuttleworth of his Shuttleworth Foundation's efforts to develop a meaningful curriculum for young learners.

Whether such concerns are justified with regards to this specific piece of software - _why recently commented that Scratch is a positive step for Squeak - they appear to remain for the wider OLPC project.

Related Entries

14 Comments

wow! great news! are you a scratch developer? reading this? ok, so.. scratch lets lifelong kindergartners easily create and share interactive stories, animations, games, music, and art.. here's a question: can scratch associate multimedia with *text*?

if so, wanna turn scratch into a language teacher?
* http://tinyurl.com/yvrpew
* http://wiki.laptop.org/go/WiXi

"wixi" was thinking twext on wiki as baby step, but the giant leap is to enable context rich (ie participatory multimedia) +text experience for language learners..

so, if wixi/twext can serve scratch in any way, please use it! and let me know if i can help in any way.. thanks!!

It would be good if somebody produced a link to a useful application created with any of these packages.

And to pretend that kids are "programming" anything by dragging little pre-programmed actions around the screen is a huge stretch.

If that is "programming", then using Sound Forge's (Sony's these days) Acid Pro or Fruty Loops to create music is also "programming".

A lot of misleading statements take away the credibility to most of these claims. Let me give you an example, from none less that the BBC article. Source:

http://news.bbc.co.uk/2/hi/technology/6647011.stm

"The site teaches children to code in a language called Ruby. There are seven free lessons, including one that allows them to develop a blog with just six lines of code."

I challenge ANY PERSON on the planet to develop a blog with six lines of code! The right translation is:

"The site teaches children to code in a language called Ruby. There are seven free lessons, including one that allows them to CALL a PRE-EXISTING BLOG APPLICATION with just six lines of code."

As anyone can see, the claims are outright dishonest.

See the source of the "six-lines blog" dishonest claim:

http://hacketyhack.net/

David,
"Why are these tools almost exclusively "game" orientated"

Actually, I don't think that's the case at all - there's nothing inherently 'exclusively game oriented' in those tools. Rather, they are very good implementations of 'object' oriented tools. And when I say tools I don't mean just programing language but a complete development environment which encourages experimentation and prototyping - focus on kids 'learning by doing' was very much what Alan Kay (one of the key people involved in OLPC, of course) and his team at Xerox PARC were focused on when developing Smalltalk development environment and their Dynabook laptop in early 70s - you could say spiritual grandparents of today's OLPC...

Smalltalk, when introduced in 80s, was very popular in banking sector for its ability for rapid development and modeling complex financial systems. A few years ago when trying to introduce my son into programming I did research on eToys and I came across many simulation projects (e.g. electronic circuits). He now uses Scratch instead PowerPoint to create interactive presentations...

Troy,
"And to pretend that kids are "programming" anything by dragging little pre-programmed actions around the screen is a huge stretch."

I don't think you know what constitutes programing - it's the ability to construct the correct flow of instructions for your application/program to work and not whether you 'drag' the instructions or 'type' them in....

Delphi wrote:

"I don't think you know what constitutes programing - it's the ability to construct the correct flow of instructions for your application/program to work and not whether you 'drag' the instructions or 'type' them in...."

I *may* know *a bit* more about programming than you think, Delphi - but that will be a VERY interesting topic for another day ;-)

I have a question for you, then: do you think that a person who puts together a Powerpoint presentation is doing "programming"?

"And to pretend that kids are "programming" anything by dragging little pre-programmed actions around the screen is a huge stretch."

No, it isn't a stretch.

If you have a visual programming environment that works with flow chart symbols, that is programming. Very high level programming environments work this way for Rapid Prototyping too. Actually, you can design electronic circuitery and chip mask layouts this way.

Programming is controlling and using the flow of information by a computer, ie, logistic. Try some high level texts on AI.

A powerpoint presentation is NOT programming, a visual HTML editor might indeed be considered a stripped down version of programming. Writing raw PostScript is programming too.

Winter

Troy,
"do you think that a person who puts together a Powerpoint presentation is doing "programming"?"

I think Winter above gave you a pretty good answer about the PowerPoint question. With Scratch, apart from the usual basic programing concepts like variables, loops and conditionals (among other), it also (and perhaps more importantly) introduces in a very clever way OO programing concepts when kids define object's (actor's) properties and behavior - all in all very clean and intuitive...

Winter wrote:

"If you have a visual programming environment that works with flow chart symbols, that is programming. Very high level programming environments work this way for Rapid Prototyping too. Actually, you can design electronic circuitery and chip mask layouts this way."

See the big "IF" at the beginning of your argument?

**IF** you are working in a "visual programming environment", well...doh..., you are engaging in programming. Even you, Winter, can see that.

The real question is:

Does this "create a little animation by dragging a few objects around the screen" scenario qualify as a REAL "visual programming environment"?

Look at the video:

http://news.bbc.co.uk/2/hi/technology/6647011.stm

BTW, in the above video, at 0:43, the author claims "I have created a computer program now" - most people would see it as a simple animation. The REAL program is the one allowing the user to create the very basic animation without any programming knowledge.

Troy you are being very shortsighted. Sorry. Unless you are programming in Assembly, you are most probably putting together blocks of code crafted to make the "programming" easier.

Wikipedia: "A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer."

Yes you can drag blocks around and make a complex computer behavior with scratch. In five minutes using it I made a basic ant simulation. You may or may not cal this "real programming" but that's semantic. The point is: this is helping kids make their computer do something it was not preprogrammed for (office and solitary). That's enhancing them and approaching them to the laptop potential.

I just downloaded Scratch and used it the first time for making a simple little arcade game called SnakeMan which I uploaded to the scratch web site. When you use it you clearly see that it is a real programming environment with different loop control brackets, decision making brackets, imperative commands, event handling and simple object orientation. The difference is just that you don't type code lines but you drag the command elements together. E.g a loop control element really appears as a bracket around a stack of command blocks. This visualizes the function quite well as done otherwise by e.g. Nassi-Schneidermann diagrams. What I missed a little was that you cannot directly control e.g. the position of one object from within the code of another object. You have to introduce global variables to do that, which in "adult" coding would be considered bad style.
And there is no inheritance. But for introduction into programing Scratch is simply excellent.

Roland,
"But for introduction into programing Scratch is simply excellent."

I concur. I can also report Scratch runs quite well on an old Pentium2 233MHz with 128MB (my son's computer) which is what many primary schools still have as their only computers available for students.

Hopefully, Scratch will be ported to Linux very soon and included in the XO's default software as it's, after observing my 12 year old son using both, a much better introduction into (OO) programing than Etoys.

It seems like a great idea to produce a modular/graphic programming toolset written in Python that allows users to make programs 'by dragging little pre-programmed actions around the screen'.
The pre-programmed action blocks then simply compile to a .py file which can be executed.
Is this the basis behind Scratch?
If so it seems like a marvelous introduction to both flow charting and decision making for young programmers. In my mind this is a true 'Visual' programming tool.

For those interested in Scratch on XO - the preliminary version of Scratch ( http://scratch.mit.edu/ ) is now available for download from Activities repository ( http://wiki.laptop.org/go/Activities ).

Close