Vision for a numeracy activity: Difference between revisions

From OLPC
Jump to navigation Jump to search
(→‎Comments would be most welcome: +countdown ideas. +'can do it on the web'.)
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This page is a sketch of some ideas for an Activity providing
This page is a sketch of some ideas for an Activity providing
an environment for exploring numbers, and through them, the world.
an environment for exploring numbers, and through them, the world.
It was started by [[User:MitchellNCharity|MitchellNCharity]] 09:29, 28 January 2008 (EST). I'd call it an essay, but since I won't
It was started by [[User:MitchellNCharity|MitchellNCharity]] 09:29, 28 January 2008 (EST).
have a chance to even read through it once this morning, it's current
more of a very rough first draft.


==A vision==
==A vision==


Picture TamTamSynth. The screen is a workbench. You create various
Picture [[TamTam]]'s synthLab. The screen is a workbench. You create various
blocks, move them around the screen, and wire them together. Or
blocks, move them around the screen, and wire them together. Or
EToys. You create things on the screen, edit their values and
[[Etoys]](Squeak). You create things on the screen, edit their values and
behaviors, and can connect those values together.
behaviors, and can connect those values together.


You create a new calculator block. Picture a normal screen
First, we create a new calculator block. Picture a normal screen
calculator. Which you can use a usual. There's no need to be as big
calculator. Which you can use a usual. There's no need to be as big
as the Calculate activity, so there is lots of screen space left over.
as the [[Calculate]] activity, so there is lots of screen space left over.


Now create a number-line block. It shows a normal number line. Since
Now create a number-line block. It shows a normal number line. Since
Line 26: Line 24:
When you use the calculator, and its number changes, the number-line
When you use the calculator, and its number changes, the number-line
changes to show the new number as well. And when you click and drag
changes to show the new number as well. And when you click and drag
the dot on the number-line, the calculator changes as well.
the dot on the number-line, the calculator changes too.


When you do arithmetic on the calculator, the number-line can show the
When you do arithmetic on the calculator, the number-line can show the
bouncing arrows representation of the arithmetic.
"bouncing arrows" representation of the arithmetic.


There are lots and lots of different kinds of blocks. Let's look at
There are lots and lots of different kinds of blocks. Let's look at
Line 52: Line 50:


Consider the n-sided-polygon block showing a triangle. Instead of
Consider the n-sided-polygon block showing a triangle. Instead of
being a static picture of a triangle, it's like Dr Geo. You can grab
being a static picture of a triangle, it's like [[DrGeo]]. You can grab
the corners, and change the shape of the triangle.
the corners, and change the shape of the triangle.


Line 58: Line 56:
block may present enrichment content. Provide some enrichment content
block may present enrichment content. Provide some enrichment content
for a little while, and then go on to some other. It might label the
for a little while, and then go on to some other. It might label the
angle of one of the corners, updating the number of course as you
angle of one of the corners, updating the number, of course, as you
continue to change the shape of the triangle. It then might switch to
continue to change the shape of the triangle. It then might switch to
labeling a different corner. Or characterizing an angle as acute or
labeling a different corner. Or characterizing an angle as acute or
Line 67: Line 65:
changes shape to match.
changes shape to match.


Or the n-shape-block with a triangle might banter about circumference,
Or the n-shape-block with a triangle, might banter about circumference,
or area. It may react to particular values. If the shape is becomes
or area. It may react to particular values. If the shape is becomes
a right triangle, the block may celebrate that. Perhaps by labeling
a right triangle, the block may celebrate that. Perhaps by labeling
Line 77: Line 75:
It's not just the individual blocks which banter and provide
It's not just the individual blocks which banter and provide
enrichment material, but the entire environment. If there is some
enrichment material, but the entire environment. If there is some
screen space free, why not use it. So the program can decide by
screen space free, why not use it? So the program can decide, by
itself to put up a block. Unlike the user create blocks, it may fade
itself, to put up a block. Unlike the user-create blocks, it may fade
out after a while, like any of the bantering. So the program may pop
out after a while, like any of the bantering. So the program may pop
up a pictures-associated-with-number-n block, to help the
up a pictures-associated-with-number-n block, to help the
Line 87: Line 85:
yourself. In the current story, we created a calculator block, and
yourself. In the current story, we created a calculator block, and
then some others. If we had just created one, the program might think
then some others. If we had just created one, the program might think
"hmm, just one? that's boring. what might be interesting... have you
"hmm, just one? that's boring. what might be interesting? ... have you
seen a number-line block? what do you think? no, you still haven't
seen a number-line block? what do you think? no, you still haven't
touched it? well, hmm, I'll fade that one out. how about an n-dots
touched it? well, hmm, I'll fade that one out. how about an n-dots
Line 112: Line 110:
explore other things).
explore other things).


Numbers get even more interesting when they are measuring things.
Numbers get even more interesting when they are measuring ''things''.
Then you can talk about the things too. Just as with Calculate, you
Then you can talk about the things too. Just as with [[Calculate]], you
can set the units associated with a number.
can set the units associated with a number.


For example, you can tell the calculator to talk about "number of
For example, you can tell the calculator to talk about "number of
people", or heaviness ("kilograms"), or money, or time, or lots of
people", or heaviness ("kilograms"), or money, or time, or lots of
other things. When the calculator or number line says 3 kg, now we
other kinds of things. When the calculator or number line says 3 kg, now we
can banter about things which are 3 kg, rather than (or in addition
can banter about things which are 3 kg, rather than (or in addition
to) the number 3. For 3 kg, we can show a picture of a cat, or a
to) the number 3. For 3 kg, we can show a picture of a cat, or a
Line 128: Line 126:
particular door may have far more resonance, more impact and
particular door may have far more resonance, more impact and
familiarity and inspiration, than just some generic door. For
familiarity and inspiration, than just some generic door. For
instance, the door of the classroom which they measured themselves.
instance, the door of the classroom which you measured yourself.
So the program should let kids put in their own pictures for things.
So the program should let you put in your own pictures for things.
A picture of a classroom door, taken with their laptop. A picture of
A picture of a classroom door, taken with you laptop. A picture of
an elephant, found on the web.
an elephant, found on the web.


Line 142: Line 140:


Ok, back to our calculator, showing units. If it is 3 seconds, one
Ok, back to our calculator, showing units. If it is 3 seconds, one
could show a stopwatch arm sweep it out. For 300 seconds, the 5
could show a stopwatch arm sweeping it out. For 300 seconds, the 5
minute wedge of a clock. For 3 <whatever units of currency>, a
minute wedge of a clock. For 3 <whatever units of currency>, a
picture of three coins. For 30, a pile of them. And as always,
picture of three coins. For 30, a pile of them. And as always,
Line 151: Line 149:
a animal-length block. At 1/3 meter, it shows a cat. At one meter, a
a animal-length block. At 1/3 meter, it shows a cat. At one meter, a
kid. At 2 meters, an elephant. At 10 m, a whale. And down from cat,
kid. At 2 meters, an elephant. At 10 m, a whale. And down from cat,
to mouse, and louse, and flea. And perhaps amoeba, and virus.
to mouse, and louse, and flea. And perhaps to amoeba, and virus.


Which is a good time to point out one advantage about talking about
Which is a good time to point out one advantage about talking about
Line 175: Line 173:


So now I can tell a broader story. You sit down at the activity.
So now I can tell a broader story. You sit down at the activity.
There is a calculator. You press 3. And wait a moment. The
There is a calculator. You press 4. And wait a moment. The
activity, always interested in politely sticking its hand in,
activity, always interested in politely sticking its hand in,
tentatively changes the calculator to kilograms. When I say
tentatively changes the calculator to kilograms. When I say
tentatively, I'm picturing a light gray "kilograms", which will fade
tentatively, I'm picturing a light gray "kilograms", which will fade
away if it doesn't prompt your interest. For younger kids, perhaps
away if it doesn't prompt your interest. For younger kids, perhaps
"heavy" or some such is spoken. So now the calculator is showing 3 kg.
"heavy" or some such is spoken. So now the calculator is showing 4 kg.
Which is a great excuse to show a cat. And showing a 3 kg animal is a
Which is a great excuse to show a cat. And showing a 4 kg animal is a
nice excuse for showing a 120 beats-per-minute hear rate, by perhaps
nice excuse for showing a 120 beats-per-minute heart rate, by perhaps
playing a heart sound, while for each minute counting the beats,
playing a heart sound, while for each minute counting the beats,
0-120, and filling up a one-minute-box (which empties itself once a
0-120, and filling up a one-minute-box (which empties itself once a
Line 192: Line 190:
line with beats per minute, going from 10 to 1000, with little
line with beats per minute, going from 10 to 1000, with little
pictures of animals above the numbers. Perhaps you play for a time.
pictures of animals above the numbers. Perhaps you play for a time.
Or perhaps you ignore it, and it all fades away. Perhaps you get a
Or perhaps you ignore it, and it all fades away. Perhaps you have a
slider, so you can adjust between "I'm bored, show me lots of stuff!",
slider, so you can adjust between "I'm bored, show me lots of stuff!",
and "I'm busy - don't distract me". But look back at what we've just
and "I'm busy - don't distract me". But look back at what we've just
seen. You were bored. You pressed 3. And without any great effort
seen. You were bored. You pressed 4. And without any great effort
on you're part, just play, you've learned about weight, and
on you're part, just play, you've learned about weight, and
differently sized animals, and heart beats, and counting, and time,
differently sized animals, and heart beats, and counting, and time,
Line 210: Line 208:
stopwatch showing hundredths of a second race by, or a light flashing
stopwatch showing hundredths of a second race by, or a light flashing
once per second, or be a growing pile of dots, one per second, or be
once per second, or be a growing pile of dots, one per second, or be
a collection of more than one of these things.
a collection of more than one of these things. For example, a light you can slide
above a digital stopwatch, which flashes once per second, or 10 times
per second, or 100 times per second, etc, depending on which column
it's over, thus also teaching place values.


Some addition notes.
Some addition notes.
Line 218: Line 219:
connections to other blocks, to slowly drift in meaning. The
connections to other blocks, to slowly drift in meaning. The
stopwatch, becomes heart beats, becomes animals, becomes size of
stopwatch, becomes heart beats, becomes animals, becomes size of
animal ranges, becomes geographical area, becomes surface area of
animal foraging ranges, becomes geographical area, becomes surface area of
squares, becomes surface area of cubes, etc. So I'm not sure I really
squares, becomes surface area of cubes, etc. So I'm not sure I really
understand the core conceptual building blocks (no pun intended) yet.
understand the core conceptual building blocks (no pun intended) yet.
Line 237: Line 238:
==Comments would be most welcome==
==Comments would be most welcome==


A wild idea, what if Home view was turned into such a workspace, which could leverage all the pre-existing activities? Imagine in the home view, you have 2 activities running, Calculate and TurtleArt. You program the little Turtle and somewhere in there, you create variables Widht and Height. You switch to the home view, and connect a line between Turtle-art and Calculate. You switch to Calculate, and somehow you now see those two variables, which you can use for your calculations. You do some calculations, inputing a final computation into the variables. You switch to TurtleArt, execute the Code, and voila, the Turtle draws based on the variables that were assigned in Calculate.
A wild idea, what if Home view was turned into such a workspace, which could leverage all the pre-existing activities? Imagine in the home view, you have 2 activities running, [[Calculate]] and [[Turtle Art]]. You program the little Turtle and somewhere in there, you create variables Widht and Height. You switch to the home view, and connect a line between Turtle-art and Calculate. You switch to Calculate, and somehow you now see those two variables, which you can use for your calculations. You do some calculations, inputing a final computation into the variables. You switch to TurtleArt, execute the Code, and voila, the Turtle draws based on the variables that were assigned in Calculate.


I had a look at the future design of the Home View, and it more-or-less will be a redundant one, serve as a way to get quicker access to the last activities used and to launch/resume activities, all of which could be done through the Journal (device and network icons will be moved into the bottom of the frame). So, instead, it could work as a Task switcher like it currently is, and at the same times as a way to programmaticaly use them together. This would leverage all activities, making each able to interact with others more cleverly than just the typical copy+paste of images,video,audio and sound. This would mean that activities should be coded in a way as to provide entry and exit points to achieve this as well.
I had a look at the future design of the Home View, and it more-or-less will be a redundant one, serve as a way to get quicker access to the last activities used and to launch/resume activities, all of which could be done through the Journal (device and network icons will be moved into the bottom of the frame). So, instead, it could work as a Task switcher like it currently is, and at the same times as a way to programmaticaly use them together. This would leverage all activities, making each able to interact with others more cleverly than just the typical copy+paste of images,video,audio and sound. This would mean that activities should be coded in a way as to provide entry and exit points to achieve this as well.
Then, of course, you could save the current workspace state for later retrieval. That "saved" state of the home view could also works for managing activities usage, so you could save a workspace called "OLPC development", which when chosen, would open a Browse which had bookmarks to OLPC places, XoIRC to the olpc channels, and future Develop. What do you think of this idea, inspired by your thoughts and Etoys (caveat: comming from a non-programmer person)? The biggest problem I see in acomplishing this is to get developers behind the effort, and convince Sugar and overall OLPC developers that it is a good idea. - [[User:HoboPrimate]]
Then, of course, you could save the current workspace state for later retrieval. That "saved" state of the home view could also works for managing activities usage, so you could save a workspace called "OLPC development", which when chosen, would open a Browse which had bookmarks to OLPC places, XoIRC to the olpc channels, and future Develop. What do you think of this idea, inspired by your thoughts and Etoys (caveat: comming from a non-programmer person)? The biggest problem I see in acomplishing this is to get developers behind the effort, and convince Sugar and overall OLPC developers that it is a good idea. - [[User:HoboPrimate]]
:It's a nifty long-term vision, though to fully realize it would be quite hard, requiring enormous developer resources in an environment characterized by their scarcity. Happily, the first steps in that direction are less daunting, and useful by themselves. Namely nudging activity authors towards greater code sharing - making their activities, and parts of activities, available as widgets and python libraries. Then we can start moving, at least a little bit, towards greater integration. Part of the difficulty is that sugar is built on raw python, so the security model is very coarse grained. It might be easier on say Java... perhaps sugar will someday be ported to Jython. :) [[User:MitchellNCharity|MitchellNCharity]] 21:15, 29 January 2008 (EST)
:Imagine Turtle-art blending towards [[Scratch]]-like robot animation, and Crayon Physics-like [http://www.crayonphysics.com/][http://www.chromeexperiments.com/detail/physicsketch/] simulation. Turtle has to deal with obstacles. Or a medium. Twiddle the medium's Reynolds number, and the turtle changes to bird or fish or butterfly or ciliated cell. Turtle becomes/illustrates different mechanical devices - a pen on a plotter bar, or hanging from two strings, or at the end of a segmented arm. A gravity field makes the paint run. [[User:MitchellNCharity|MitchellNCharity]] 23:14, 30 June 2009 (UTC)

I couldn't stop thinking about ''The Diamond Age'' while reading this, and primers. I can imagine a really awesome teacher doing something like this, sans computer - I've had some conversations with people when you start with one idea and then they take you through a dizzying tour of life, the universe, and everything just on the basis of that one half-fragmentary sentence (rather like ''Godel, Escher, Bach'' incarnate, on things that aren't necessarily math and Baroque music).
:Re Diamond Age, this kind of thing does seem to have the potential to help get science education unbroken. The Physics Education Research folks find current practice such a profound disaster, one could imagine rapid uptake and large impact. There's also work towards making the "algebra wall" less of a crippling barrier, by introducing some of its concepts earlier and interactively, which suggests that primary school math might also permit dramatically transformative improvement. [[User:MitchellNCharity|MitchellNCharity]] 23:14, 30 June 2009 (UTC)
:The kind of "dizzying tour" conversation you can have with someone who really understands their subfield was indeed part of the inspiration for all this. :) [[User:MitchellNCharity|MitchellNCharity]] 23:14, 30 June 2009 (UTC)

How can computers help? I think they can suggest connections (very well, as in your number/animal/pictures/etc example), but it's up to people to provide the meaning; I wonder if an "flexibly-walled" Activity infrastructure would be more of a tool for people to create "knowledge trails" and then record them for others to follow (and hopefully modify). So to amend your final story on this page, I'd log in, see a list of "trails" that people prior to me had traveled; pick one that seemed interesting (or was done by an older kid I admired, or one my teacher had assigned, or whatnot) and follow it along. Or I could decide to create my own, and type "4," and it would say "well, 4 could lead off to these sorts of things, what do you want to follow?" and then I'd pick the fork to take instead of sitting passively back and watching my screen go.
: Trails, and having more control over direction, would be neat. One might have a "I could become many things - help me choose... somehow" indeterminacy block, for forks? For larger scale... filtering, tags, search, clusters. Probability spaces, to permit wandering but draw you back towards some officially intended topic. Skins - "I'm into dinosaurs today". Themes - "see how this idea shows up in many contexts". And collaboration of course - "Hey, look at this! <share> <collaborative play>". One might have blocks of traditional hypertext. What page you're on affecting everything else. Hmm... what other thoughts? [[User:MitchellNCharity|MitchellNCharity]] 23:14, 30 June 2009 (UTC)

Just random thoughts from PyCon, during breaks from coding, here.

[[User:Mchua|Mchua]] 01:33, 18 March 2008 (EDT)

Here some additional ideas, explored using the theme of a countdown. Picture a block with a repeating countdown. 10..9..etc..1..0..10..9.. . The form of the numbers on the block can change. And you get additional, synchronized blocks with alternate forms. Different fonts. Different representations - hash marks, dots, objects, coins, words ("ten"), pencil draws the number, keyboard picture with number highlighted, bar graph. 8..7.. Given the numbers are being shown, it would be nice to have them spoken aloud. <voice:"two","one",...> And you can vary the language. <"dos","uno",...> Varying the language, you obviously want to show a world map block, highlighting where the language is spoken. And permitting clicking on the map to get different languages. <"mbili", "moja",...>. And any written word block would change language as well, of course. And number forms (eg, slashed 7's). The language used might drift within language groups, or sample a geographic region. 6..5.. For the pen writing out a number, you can add an orthogonal view of the x,y,time cube, with the pen position and drawing shown in spacetime. 4..3.. Pressing a number key, on real or on-screen keyboard, would move the countdown. A block in which a number can be handwritten and recognized, might pause the countdown during writing. And provide aids to drawing. The countdown might be paused. And its speed altered. The number might be shown with a decimal tenth ("ten" 10.0 9.9 9.8 9.7 .. "nine" 9.0 ..). Or a fractional tenth. Or a fractional pie graphic. ... What are some other ideas? [[User:MitchellNCharity|MitchellNCharity]] 00:05, 1 July 2009 (UTC)

There is now the opportunity to implement something like this in javascript on the web. Despite ongoing opposition from Microsoft, one can now, finally, after a decade wait, directly do 2D graphics, and very limited 3D graphics, without embedded Flash or Java applets. Examples of what's becoming possible: [http://www.chromeexperiments.com/detail/physicsketch/][http://www.chromeexperiments.com/][http://glimr.rubyforge.org/cake/missile_fleet.html][http://keith-wood.name/svg.html]. [[User:MitchellNCharity|MitchellNCharity]] 00:05, 1 July 2009 (UTC)

==External links==
* [http://en.wikipedia.org/wiki/NuCalc Mac OS 7 Graphing Calculator]
* [http://en.wikipedia.org/wiki/Grapher Mac OS X Grapher.app]
* [http://en.wikipedia.org/wiki/GraphCalc GraphCalc] for Linux and Windows
* [http://en.wikipedia.org/wiki/Matplotlib matplotlib] [[Python]] module (there are many others) might make a good base for development


[[Category:Software ideas]]
[[Category:Software ideas]]

Latest revision as of 00:05, 1 July 2009

This page is a sketch of some ideas for an Activity providing an environment for exploring numbers, and through them, the world. It was started by MitchellNCharity 09:29, 28 January 2008 (EST).

A vision

Picture TamTam's synthLab. The screen is a workbench. You create various blocks, move them around the screen, and wire them together. Or Etoys(Squeak). You create things on the screen, edit their values and behaviors, and can connect those values together.

First, we create a new calculator block. Picture a normal screen calculator. Which you can use a usual. There's no need to be as big as the Calculate activity, so there is lots of screen space left over.

Now create a number-line block. It shows a normal number line. Since the calculator block is the only thing around, when you create the number-line block, a line appears connecting the two blocks. Since the calculator is showing "0", the number-line now puts its dot on 0.

Everything is kept in sync, like on a spreadsheet, but continuously. And bidirectionally. It's a constraint system.

When you use the calculator, and its number changes, the number-line changes to show the new number as well. And when you click and drag the dot on the number-line, the calculator changes too.

When you do arithmetic on the calculator, the number-line can show the "bouncing arrows" representation of the arithmetic.

There are lots and lots of different kinds of blocks. Let's look at another one.

You create a new n-dots block. It shows the same number of dots as whatever it is connected to. If the calculator says "3", the n-dots block shows 3 dots. If you click on the n-dots block to create or destroy a dot, the calculator (and number-line) change too.

You create a new n-sided-polygon block. When the number is 3, it shows a triangle. When 5, a pentagon. Create new sides, or delete current ones, and the number changes.

While we started this story with a calculator block, to make things simple, there is nothing fundamental about it. You can click away the calculator block, and just play with the number-line, n-dots, and n-sided-polygon blocks you have created on the screen.

So connected interactivity is one design principle. Another two are depth of behavior, and autonomous enrichment.

Consider the n-sided-polygon block showing a triangle. Instead of being a static picture of a triangle, it's like DrGeo. You can grab the corners, and change the shape of the triangle.

As the shape of the triangle changes, the block may "banter". The block may present enrichment content. Provide some enrichment content for a little while, and then go on to some other. It might label the angle of one of the corners, updating the number, of course, as you continue to change the shape of the triangle. It then might switch to labeling a different corner. Or characterizing an angle as acute or obtuse. Or labeling all the angles, and showing "23 + 72 + 85 = 180" at the bottom, showing them added up to 180 degrees. And updating the numbers of course, as you continue to change the triangle. As usual, you could also go down and change the equation, and the triangle changes shape to match.

Or the n-shape-block with a triangle, might banter about circumference, or area. It may react to particular values. If the shape is becomes a right triangle, the block may celebrate that. Perhaps by labeling the 90 degree angle. Or showing a picture of a t-square.

Show a picture of a t-square? But, where? We have a block, with a triangle we are flexing. Where does a picture go?

It's not just the individual blocks which banter and provide enrichment material, but the entire environment. If there is some screen space free, why not use it? So the program can decide, by itself, to put up a block. Unlike the user-create blocks, it may fade out after a while, like any of the bantering. So the program may pop up a pictures-associated-with-number-n block, to help the n-sided-polygon block celebrate its right angled triangle.

Any block might be shown for a time as enrichment. If you like it, you can click on it, and it becomes just like a block you created yourself. In the current story, we created a calculator block, and then some others. If we had just created one, the program might think "hmm, just one? that's boring. what might be interesting? ... have you seen a number-line block? what do you think? no, you still haven't touched it? well, hmm, I'll fade that one out. how about an n-dots block?".

It's worth mentioning the bunch-of-blocks block. It shows shrunk versions of assorted blocks. So if you started with the calculator block, the program would likely add a bunch-of-blocks block, which contains little copies of the n-dots block, and the number-line block, and others, so if you see something interesting go by, you can click on it to explore it further.

Another block is the examples-of-n block. If there are 10 people in the class, then when n is around 10, the block might say "there are about 10 people in the class!". 7 days in the week. Etc. As always, this is an opportunity for banter. If n is 6, one might show the days of the week with one grayed out. Or show "6 < 7". Or so many other things.

So far we have taken one number, looked at it using different views (blocks), changed it, gotten enrichment content about it, including being able to play games with some of the representations (changing the shape of the triangle didn't change the number of sides, but let us explore other things).

Numbers get even more interesting when they are measuring things. Then you can talk about the things too. Just as with Calculate, you can set the units associated with a number.

For example, you can tell the calculator to talk about "number of people", or heaviness ("kilograms"), or money, or time, or lots of other kinds of things. When the calculator or number line says 3 kg, now we can banter about things which are 3 kg, rather than (or in addition to) the number 3. For 3 kg, we can show a picture of a cat, or a newborn human. For 30 kg, a dog or a child.

I'll take a moment here for a sidebar. A picture of a dog or a child? Which one? The right answer is obviously, which ever one you wish. The height of a door a nice reference for 2 meters. But some particular door may have far more resonance, more impact and familiarity and inspiration, than just some generic door. For instance, the door of the classroom which you measured yourself. So the program should let you put in your own pictures for things. A picture of a classroom door, taken with you laptop. A picture of an elephant, found on the web.

Which brings us to more customization. While door height is a good default association for 2 meters, it is neither a universal one, nor obviously, as before, the 2 meter thing which will most appeal to any particular kid at any particular time. So kids have to be able to add objects as well. Here is my 2 meter tall dad, or horse, or 2 meter wide path, or... anything. All of which is also a great excuse for measuring things.

Ok, back to our calculator, showing units. If it is 3 seconds, one could show a stopwatch arm sweeping it out. For 300 seconds, the 5 minute wedge of a clock. For 3 <whatever units of currency>, a picture of three coins. For 30, a pile of them. And as always, wherever possible, it is interactive. Change the height of the pile, and the number of course changes too.

Instead of just a picture of a cat, it might be a picture of a cat in a animal-length block. At 1/3 meter, it shows a cat. At one meter, a kid. At 2 meters, an elephant. At 10 m, a whale. And down from cat, to mouse, and louse, and flea. And perhaps to amoeba, and virus.

Which is a good time to point out one advantage about talking about the world. Instead of math concepts being introduced explicitly _as_ math concepts, they are instead just part of everyday life. Decimal fractions? Those are just something you see whenever you have the length of something shorter than you are. A cat might be "0.3 meters". Slide the slider on the animal-length block, and the number, and animal pictured, changes. Fractions are just a natural part of everyday exploration and play. You might teach about fractions, just like you might teach about cows. But just like cows, kids will often already know of them, and potentially be interested.

But back to our animal-size block and slider. Another nice thing about combining talking about numbers and the real world, is not only does it make numbers more fun to play with, but it lets us look more deeply at the world. As we slide the slider, and change the size of animal shown, we are also changing animal mass. How heavy it is. And, it turns out, just because the world is often interesting this way, how heavy an animal is tells you all sorts of things. It gives you a good guess at how fast it breaths, how fast its heart beats, how much it eats, and how long it lives.

So now I can tell a broader story. You sit down at the activity. There is a calculator. You press 4. And wait a moment. The activity, always interested in politely sticking its hand in, tentatively changes the calculator to kilograms. When I say tentatively, I'm picturing a light gray "kilograms", which will fade away if it doesn't prompt your interest. For younger kids, perhaps "heavy" or some such is spoken. So now the calculator is showing 4 kg. Which is a great excuse to show a cat. And showing a 4 kg animal is a nice excuse for showing a 120 beats-per-minute heart rate, by perhaps playing a heart sound, while for each minute counting the beats, 0-120, and filling up a one-minute-box (which empties itself once a minute) with dots, one dot per beat. Perhaps showing a little animation of a heart beating. Slide the slider to get different animals. When you have a 5000 kg elephant, you have a 30 beats-per-minute heart rate. A mouse, 500 beats/minute. Of course, since you are seeing beats per minute, you should be offered a number line with beats per minute, going from 10 to 1000, with little pictures of animals above the numbers. Perhaps you play for a time. Or perhaps you ignore it, and it all fades away. Perhaps you have a slider, so you can adjust between "I'm bored, show me lots of stuff!", and "I'm busy - don't distract me". But look back at what we've just seen. You were bored. You pressed 4. And without any great effort on you're part, just play, you've learned about weight, and differently sized animals, and heart beats, and counting, and time, and other things too. And five minutes later you go on to something else.

End of story.

Some additional concepts didn't make it into this draft of the story.

Blocks are views into the numbers, but they are also sets of related views. For example, a time-is-passing block might show a second hand sweeping continuously, or jerking once per second, or be a digital stopwatch showing hundredths of a second race by, or a light flashing once per second, or be a growing pile of dots, one per second, or be a collection of more than one of these things. For example, a light you can slide above a digital stopwatch, which flashes once per second, or 10 times per second, or 100 times per second, etc, depending on which column it's over, thus also teaching place values.

Some addition notes.

I'm not entirely happy with blocks being tightly tied to concepts. It might be nice for a single block, a location on the screen, with connections to other blocks, to slowly drift in meaning. The stopwatch, becomes heart beats, becomes animals, becomes size of animal foraging ranges, becomes geographical area, becomes surface area of squares, becomes surface area of cubes, etc. So I'm not sure I really understand the core conceptual building blocks (no pun intended) yet.

While more complex than some activities, writing this software does not seem burdensome given the impact. Other activities have draggable, connectible blocks. One needs a bit of a spreadsheet-like library to propagate values. Calculator code can be copied from elsewhere. A number line with a draggable dot is straightforward. Adding arrows to it a bit more work. Creating the infrastructure so volunteers and kids can collect pictures and associate with various values. Creating and tuning the bantering so it is interesting but not annoying or too confusing. And block by block, adding more neat stuff. Which can often be reused for other blocks. Even just a calculator plus number line would be of value, so you start with something easy, and build from there.

Comments would be most welcome

A wild idea, what if Home view was turned into such a workspace, which could leverage all the pre-existing activities? Imagine in the home view, you have 2 activities running, Calculate and Turtle Art. You program the little Turtle and somewhere in there, you create variables Widht and Height. You switch to the home view, and connect a line between Turtle-art and Calculate. You switch to Calculate, and somehow you now see those two variables, which you can use for your calculations. You do some calculations, inputing a final computation into the variables. You switch to TurtleArt, execute the Code, and voila, the Turtle draws based on the variables that were assigned in Calculate.

I had a look at the future design of the Home View, and it more-or-less will be a redundant one, serve as a way to get quicker access to the last activities used and to launch/resume activities, all of which could be done through the Journal (device and network icons will be moved into the bottom of the frame). So, instead, it could work as a Task switcher like it currently is, and at the same times as a way to programmaticaly use them together. This would leverage all activities, making each able to interact with others more cleverly than just the typical copy+paste of images,video,audio and sound. This would mean that activities should be coded in a way as to provide entry and exit points to achieve this as well. Then, of course, you could save the current workspace state for later retrieval. That "saved" state of the home view could also works for managing activities usage, so you could save a workspace called "OLPC development", which when chosen, would open a Browse which had bookmarks to OLPC places, XoIRC to the olpc channels, and future Develop. What do you think of this idea, inspired by your thoughts and Etoys (caveat: comming from a non-programmer person)? The biggest problem I see in acomplishing this is to get developers behind the effort, and convince Sugar and overall OLPC developers that it is a good idea. - User:HoboPrimate

It's a nifty long-term vision, though to fully realize it would be quite hard, requiring enormous developer resources in an environment characterized by their scarcity. Happily, the first steps in that direction are less daunting, and useful by themselves. Namely nudging activity authors towards greater code sharing - making their activities, and parts of activities, available as widgets and python libraries. Then we can start moving, at least a little bit, towards greater integration. Part of the difficulty is that sugar is built on raw python, so the security model is very coarse grained. It might be easier on say Java... perhaps sugar will someday be ported to Jython. :) MitchellNCharity 21:15, 29 January 2008 (EST)
Imagine Turtle-art blending towards Scratch-like robot animation, and Crayon Physics-like [1][2] simulation. Turtle has to deal with obstacles. Or a medium. Twiddle the medium's Reynolds number, and the turtle changes to bird or fish or butterfly or ciliated cell. Turtle becomes/illustrates different mechanical devices - a pen on a plotter bar, or hanging from two strings, or at the end of a segmented arm. A gravity field makes the paint run. MitchellNCharity 23:14, 30 June 2009 (UTC)

I couldn't stop thinking about The Diamond Age while reading this, and primers. I can imagine a really awesome teacher doing something like this, sans computer - I've had some conversations with people when you start with one idea and then they take you through a dizzying tour of life, the universe, and everything just on the basis of that one half-fragmentary sentence (rather like Godel, Escher, Bach incarnate, on things that aren't necessarily math and Baroque music).

Re Diamond Age, this kind of thing does seem to have the potential to help get science education unbroken. The Physics Education Research folks find current practice such a profound disaster, one could imagine rapid uptake and large impact. There's also work towards making the "algebra wall" less of a crippling barrier, by introducing some of its concepts earlier and interactively, which suggests that primary school math might also permit dramatically transformative improvement. MitchellNCharity 23:14, 30 June 2009 (UTC)
The kind of "dizzying tour" conversation you can have with someone who really understands their subfield was indeed part of the inspiration for all this. :) MitchellNCharity 23:14, 30 June 2009 (UTC)

How can computers help? I think they can suggest connections (very well, as in your number/animal/pictures/etc example), but it's up to people to provide the meaning; I wonder if an "flexibly-walled" Activity infrastructure would be more of a tool for people to create "knowledge trails" and then record them for others to follow (and hopefully modify). So to amend your final story on this page, I'd log in, see a list of "trails" that people prior to me had traveled; pick one that seemed interesting (or was done by an older kid I admired, or one my teacher had assigned, or whatnot) and follow it along. Or I could decide to create my own, and type "4," and it would say "well, 4 could lead off to these sorts of things, what do you want to follow?" and then I'd pick the fork to take instead of sitting passively back and watching my screen go.

Trails, and having more control over direction, would be neat. One might have a "I could become many things - help me choose... somehow" indeterminacy block, for forks? For larger scale... filtering, tags, search, clusters. Probability spaces, to permit wandering but draw you back towards some officially intended topic. Skins - "I'm into dinosaurs today". Themes - "see how this idea shows up in many contexts". And collaboration of course - "Hey, look at this! <share> <collaborative play>". One might have blocks of traditional hypertext. What page you're on affecting everything else. Hmm... what other thoughts? MitchellNCharity 23:14, 30 June 2009 (UTC)

Just random thoughts from PyCon, during breaks from coding, here.

Mchua 01:33, 18 March 2008 (EDT)

Here some additional ideas, explored using the theme of a countdown. Picture a block with a repeating countdown. 10..9..etc..1..0..10..9.. . The form of the numbers on the block can change. And you get additional, synchronized blocks with alternate forms. Different fonts. Different representations - hash marks, dots, objects, coins, words ("ten"), pencil draws the number, keyboard picture with number highlighted, bar graph. 8..7.. Given the numbers are being shown, it would be nice to have them spoken aloud. <voice:"two","one",...> And you can vary the language. <"dos","uno",...> Varying the language, you obviously want to show a world map block, highlighting where the language is spoken. And permitting clicking on the map to get different languages. <"mbili", "moja",...>. And any written word block would change language as well, of course. And number forms (eg, slashed 7's). The language used might drift within language groups, or sample a geographic region. 6..5.. For the pen writing out a number, you can add an orthogonal view of the x,y,time cube, with the pen position and drawing shown in spacetime. 4..3.. Pressing a number key, on real or on-screen keyboard, would move the countdown. A block in which a number can be handwritten and recognized, might pause the countdown during writing. And provide aids to drawing. The countdown might be paused. And its speed altered. The number might be shown with a decimal tenth ("ten" 10.0 9.9 9.8 9.7 .. "nine" 9.0 ..). Or a fractional tenth. Or a fractional pie graphic. ... What are some other ideas? MitchellNCharity 00:05, 1 July 2009 (UTC)

There is now the opportunity to implement something like this in javascript on the web. Despite ongoing opposition from Microsoft, one can now, finally, after a decade wait, directly do 2D graphics, and very limited 3D graphics, without embedded Flash or Java applets. Examples of what's becoming possible: [3][4][5][6]. MitchellNCharity 00:05, 1 July 2009 (UTC)

External links