Vision for a numeracy activity

From OLPC

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)

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)