Need teaching ideas

Hannes Hirzel hirzel at spw.unizh.ch
Tue Mar 12 21:38:20 UTC 2002


Hi Donald

On Tue, 12 Mar 2002, Donald MacQueen wrote:

> I am teaching Squeak to nine kids at my local school.  The students
> are three 8th graders and 6 7th graders.  We are using the book
> “Squeak – A Quick Trip to Objectland”.  We have classes once a
> week for an hour in the school computer lab, and have been meeting
> for just over a month.

On hour a week is not much. So probably the book you're mentioning is not
the right thing.

Why not use the turtle graphics setup Stéphane Ducasse (attention au
francophones, j'ai mis l'accent aigu ;-) j'espère que ça marche!)

http://www.iam.unibe.ch/~ducasse/WebPages/Turtle.html

You could draw nice graphics end then export them as EPS files.
Many drawing programs can import EPS files including the one which comes
with Office 2000.

Abelson / DiSessa is a good source for ideas about Turtle Graphics.


As Squeak can nicely calulate with fractions I would work a bit on that as
well. Do some calculations. Perhaps link this with the musical example I
mention below.  


The Argentinian Squakers have done some 2-dimensional chart morphs. You
could probably use them to do some elementary statistics like calculating
the mean and plotting the points.


 
> It is difficult to tell how things are going. I ask if they understand
> what’s going on and get blank looks.  I ask if anyone is completely
> lost and get the same look.  They all seem to like the Squeak
> environment, especially the music and games. My twelve year old
> daughter is in the class and she says she know what’s going on, but
> I don’t think she see any use in what she has learned.
> 
> I think what is needed is some kind of project that would not only be
> ‘cool’ but also teach them something.  We did John Maloney’s TestMorph
> tutorial and they thought the rainbow morph was ‘cool’ as it bounced up
> and down, but even something this simple was a bit over their heads at
> this point.

Why not let them write dynamic essays?

Some thoughts:
a) I like the idea of doing Powerpnt like writing ("slides", sheets
   with ideas) 

b) Each project corresponds to one slide which is associated with a
   concept. The slides do not have to be necessarily ordered in a
   linear sequence. 

c) Jump to project buttons link the projects: Any morph nowadays can
   be a button.

d) Do your own parts bin flaps and populate the initial flaps with
   interesting morphs (including image maps made from pictures you
   shot with a digital camera, or for example a bullet list morph
   http://minnow.cc.gatech.edu/squeak/2141). 

e) Use a stripped down image which is now possible so you can easily
   collect let's say some 80 projects on a CD.
   (I'll have an experimental shrinking script for 3.3a)

f) Alan Kay recently gave the tip how to program buttons which show
   and hide morphs with e-toys. It is really straightforward although
   the show and hide messages are somewhat hidden (in the miscellaneous
   section I think) 
   See also http://minnow.cc.gatech.edu/squeak/SimpleButtonMorph for
   a more Smalltalk coding approach.

g) Use a HTML/CSS output script to publish the "Active essay" (at the
   moment I'm writing one; a simple version is working I could send you)

To sum up: for doing this you have to "enhance" and configure the out-of
the box image before you hand it out to the kids.


Write some dynamic essay yourself about basic music theory (different
kinds of scales perhaps with some animation: hightlight the notes when
they are played)

Exciting would as well be to show the connection between the frequency of
a note and the musical interval and the length of a string or an organ
pipe.

Program a game to recognize musical intervals.

Or program a vocabulary trainer they could fill themselves

and so on.....


> I looked at doing Dan Shafer’s counter tutorial, but I think scripting
> would just confuse them right now.  

Yes I agree. And programming a counter is not especially exciting. It' is
just the standard exercise in Smalltalk culture to teach in the beginning.

I’d like to find some kind of project
> involving sound and animation that they could do without too much trouble.
> I thought about doing at tic-tac-toe game, but the graphics involved in
> displaying the board might be too hard.
>

What about the following use case:

1) Drag out a Morph catalog from the "Widgets" flap
2) Click on "Presentation"
3) Dragg out a row morph
4) Click on "Basic" and dragging out a RectangleMorph
5) Blue-click on the rectangle to get the halos and then
   shift resize the morph into a square with the yellow resize
   hallo.
6) Give it another color with the purple halo
7) Do two additional copies with the green duplicate halo
8) Name the squares "field1", "field2", "field3".
9) Put these three fields into the row morph of point 3)
10) Delete the four EllipseMorphs still in the row morph by clicking on
    their x-halo.
11) Duplicate row morph two additional times
12) Name the three row morphs "Row1", "Row2", "Row3"
13) Drag out a column morph from the presentation part of the morphic
    catalog.
14) Name this morph field
14) Insert the three row morphs.
15) Delete the red, yellow and green rectangles

Voila, you have a tic-tac-toe field.

To put men into the fields with Smalltalk code you would have to use


man _ (EllipseMorph new extent: (60 @ 60)) openInWorld.

(((World
submorphNamed: 'board') submorphNamed: 'Row2') submorphNamed: 'field2')
addMorph: man.       

Ahem - it _should_ work like this but some additional tweaking is
necessary. The layout is not as expected...

And this example might already be a bit complicated to understand.
However I like the idea how you can as construct a user interface
with direct manipulation and then control it by Smalltalk
expressions.


A simpler idea: A feel what programming is might be obtained by opening a
workspace and doing exercises like the following:


e1 _ EllipseMorph new.
e1  extent: 60 @ 60.
e1 position: 100 @ 200.
e1 color: Color red.
e1 openInWorld.


r1 _ RectangleMorph new.
r1  extent: 100 @ 100.
r1 position: 0 @ 0.
r1 color: Color yellow.
r1 openInWorld.

Later you could do things like

e1 color: Color blue.
r1 color: Color green.
e1 position: 200 @ 200.

And so one. This is object-oriented programming in the naive-sense -
actually in the sense one would expect not having been exposed to it
before: There are objects in the computer you can control easily.

A more sophisticated example would be to have a ball fallwing from the
top of the screen accelerated by the gravitational force and rebounce
from the soil. (Morphic stepping needed)


Let's keep on looking for other ideas and please share them if you find
something which you find interesting!

Cheers
Hannes Hirzel




More information about the Squeak-dev mailing list