Wednesday, October 27, 2010

Etoys Minute - Word Sorts

Launch if you have Etoys
if not download here 
This Etoy Minute was created in response to an email on the OLPC mailing list, where someone asked for a program to do word sorts.  So I created an Etoys project which is hopefully easily modifiable by others to allow folks to create their own Word Sorts (an activity where students arrange groups of words/picture by common characteristics, such as spelling patterns, meaning, sounds or other shared characteristics)



In the video and in the Etoys project I created a button to duplicate a page, I think this was making it too easy, I should have simply shown folks how to duplicate a page from the book menu (the menu icon at the top of the book between the next page and previous page arrows. If you click on it is has an option "duplicate page".

Feedback and suggestions for improvements always welcome.

Wednesday, October 13, 2010

Etoys Minute - Balance Scales

Launch if you have Etoys
if not download here 
Balance Scales is part of a set of the ELVM (Etoys Library of Virtual Manipulatives) I am working on.  The advantage of ELVM's over other Virtual Manipulatives is that being in Etoys the kids and teachers can not only play with them, but also:
  • Use them in journal entries created in Etoys
  • Kids and Teachers can create their own versions of the EVLMs
  • Look inside and see how they work (just get the halo and look at the scripts)




Lessons From NCTM Illuminations


Alan Kay on Teaching Algebra

Below is an email from Alan Kay in response to a question I posted to OLPC on teaching Algebra to my kids:

Hi Steve,

If I were trying to do this (and it is just the right thing for a parent to do) I would definitely start off with "a stick and some sand". 

Algebra is basically a symbolic form of arithmetic in which the art and skill is to "see/develop" strategies which can be turned into tactics that preserve equality (mostly, and sometimes other relationships). 

A lot of it has to do with the idea that "a number is all the ways to make it" and that the basic arithmetic operations have inverses. This last sentence is the one that is missed in most "school math" (which isn't "real math"), and part of the many difficulties which arise is that the children are pushed into trying to deal with "numbers as numerals (that is, their "names" in positional notation)" rather than as ideas which have analytic properties (they can be taken apart and put back together).

And in general one of the difficulties in "school math" is that it winds up concentrating on how ideas are written down using societal conventions, rather on the ideas themselves. (And this is perhaps even more so with regard to science ideas.)

A physical/geometric approach to these ideas is a very good one for all (especially younger) children. There are several good references here, including Hadamard's "Psychology of Invention in the Mathematical Field", a rare and valuable assessment of how mathematicians do their thing by a great mathematician himself. The bottom line in this study is that most real mathematicians do their thinking outside the written down forms, and mostly visually (and configurally) and for about 20% (including Einstein) kinesthetically.

A lot of the real mathematics that is worth learning and understanding was invented to help with science in characterizing observations and results in the real world. This has been perverted in a sense by even some of the well meaning texts which try for "relevance" and to have lots of "story problems" that are situated in the world. But most of these are weak stretches compared to what's interesting about real science.

So I would put a lot of effort into combining "real math" and "real science" as much as possible. A nice observation here is that quite a lot of really good math can be garnered by treating "math as a science" -- that is: where interesting constructions are made and then analyzed (this is like "bridge science", which is studying and modeling the phenomena that bridges manifest).

Back to algebra. The main initial games here are to find ways to "preserve equality by adding 0s and multiplying by 1s). There are scaling games, relationship games, etc. And many of these have nice visual and tactile representations. For example, multiplications can be represented as rectangles, and many of the simple abstract multiplications -- such as (x + y) * (w + z) -- where any or all combinations of lengths can be used for the sides. 

A good one to start with is (x+y)*(x+y), and to see how this generates the standard formula from visual inspection alone.

A nice end point is to actually derive "The Quadratic Formula" by "completing the square". I remember being so pissed when I was a kid to be given this formula without any explanation about why it works, when it is a "simple" derivation using algebra(there's an immense irony here).

It's worth trying to understand "simultaneous equations" as simply manifestations of the "main initial games" -- that is, to try to avoid the routinization of method here, but to think what it means to "remove a variable" in algebraic terms. (Another irony here, because much of the second and third steps in algebra are derivable using the first steps. The thinking processes are of the same kind as the way geometry should be taught and learned.)

Functions are often very mysterious for a number of interesting reasons. It is often the case that one part of this mystery can be dispelled by making dynamic interesting relationships using computer graphics. Functional relationships can be learned before formal parameterization. For example, the "Drive a Car" project in Etoys (a favorite early one for 10 year olds) exhibits this in a very memorable form when the heading of the steering wheel is connected to the turn command of the car. For most kids, this is a huge hit of understanding about variables (with the more subtle grasp of the "functional relationship" between the heading of the car and the heading of the steering wheel.

Another good one is to think through what "turn" means and make your own version of "turn 10" from "car's heading <- car's heading + 10" and then make the turn function itself (Etoy scripts can be parametrized). The same kinds of things can be done in Logo (and experiments in parametrization and function making are fun to do in Logo).

Another way to think about a lot of mathematical thinking from numeracy onwards is to use the metaphor of "projection". A mathematical thinker is always *projecting outwards* combinations and dissections of the materials (often numbers) in front of them, and those who haven't gained these skills just let them lie there. (This is also a center of what it means to be a programmer.) One very good route that is often neglected is "mental math". This is hard for most children because they are rarely exposed to it (and I have to cover the screen of their computer or their book when I want them to start thinking internally). So one of the things I would start doing with your son is to pose "in your head" problems. They can start with just simple arithmetic and progress.(You should do them too.) The idea is to get them to internalize their thoughts so they can visualize both images and symbols. (My brother and I had this fun with our Dad (who was a physiologist). A typical example for a 12 or 13 year old -- but after a few years of working up to it -- would be "find the volume of a sphere 35 centimeters in radius". This can take a while, but the results are some great "sticks and sand" in your head that can work on lots more complicated things later on!)

The mantra here is "The music is not in the piano" -- i.e. "The math is not in the computer (or the book or the stick and the sand)" 

You are trying to help your son become a kind of musician (where the music is "relationships about relationships" (as von Neumann termed it)).

Cheers,

Alan

Friday, October 8, 2010

Etoys Minute - Curtain Math

Kids can create their own math problems for each other and for younger sibling using the Curtain Math Etoy.
Launch if you have Etoys
If not download here
Here is a video demonstrating how to use it:


Suggestions and feedback always welcome.  If you have a request for a new Etoy Minute or a new Etoy project you can use in your classroom, simply post a comment here and I will get back to you.

Thanks,
Mr. Steve

Sunday, September 19, 2010

When do scripts Run in Etoys?

With Etoys, children can draw their own sketches then bring them to life by writing "scripts" that tell the sketches what to do.  This post will explain how you can specify when scripts should run.


After watching the video, see if you can figure out what "MouseDown" and "MouseStillDown" do.  Play around and run some tests to figure it out.

You can also learn about scripting by reading excerpts from the soon to be released Etoys Manual or just playing around and running some tests.


Excerpts from soon to be release Etoys Manual

3.6 Script Editor

joystick_script.jpg 
 
 
Although some object actions can be controlled in the object's viewer, the script editor is where you assemble the tiles to create more complex actions or scripts. In the script above two of the object sketch's tiles have been dragged from sketch's viewer and dropped into the Script Editor. When the tile is in place to be accepted by the Script Editor, the area around the tile turns green and when the tile is released an audible click is heard if sound is enabled.
The Script Editor allows you to assemble tiles and test out your ideas for creating a simulation in the Etoys world. Getting into the habit of testing your ideas is a very powerful concept. You can use the results of these test scripts to simulate and determine the attributes and behaviors of the objects in your world.  Getting into the habit of testing your ideas or at least thinking about how you could test your ideas (and what other people tell you is true) is a wonderful "habit of the mind". Let your imagination reign.

Collapse button
The round brown button with the black enclosed circle at the upper left collapses the script back to the viewer. The script can always be viewed in the Script Editor again by dragging it out onto the world from the object's viewer.
Name of the Player being Scripted.
The text to the right of the collapse button is the name of the object for which you are creating the script. You can not change the objects name here.

Name of script.
The text to the right of the object's name is the script's name. It's a good idea to give a good name to the script (e.g. If its a script that moves the player, you can call the script 'move', etc.).
Exclamation point.

Graph-clear.png

The yellow exclamation point in the center of the Script Editor runs the script one time. You can also run the script from the object's viewer as shown above.

Tickindicator
The TickIndicator is the clock face to the right of the yellow exclamation point. The TickIndicator is light green when not in use, pink when script is paused and blue when script is ticking. Hold mouse button down and a menu pops up. There you can set the rate at which the script should run. The default is 8 ticks a second. Predefined in the menu are choices from one tick to 100 ticks a second. Last menu option is called other... Here you can type in the number of ticks per second that you want the script to run. A tick rate of 0.5 indicates one tick every other second, 0.1 once every 10 seconds, etc.
ScriptStatusControl
This appears to the right of the clock. Click it to get the following menu of options:

  • normal - run when called
  • paused - ready to run all the time, will change to "ticking" Status when you press the "Go" button in the "All Scripts" object.
  • ticking - run all the time, will change to "paused" Status when you press "Stop" button in the "All Scripts" object
  • mouseDown - run once when mouse goes down the object
  • mouseStillDown - run while mouse still down on the object
  • mouseUp - run once when mouse comes back up off the object
  • mouseEnter - run once when mouse enters the object's bounds with the button up
  • mouseLeave - run once when mouse exits the object's bounds with the button up
  • mouseEnterDragging - run once when mouse enters the object's bounds while dragging another object
  • mouseLeaveDragging - run once when mouse exits the object's bounds while dragging another object
  • opening - run once when the object is being opened, this only works for World and Pages (contained in a book) objects.
    Pop Quiz: Can you figure out how to use this to ensure a Book always opens to the first page when a project is opened? Can you figure out how to use this to reset a Page each time it is opened?
  • closing - run once when the object is being closed. This only applies to World and Pages objects. 
More events:

  • connectedTo - run once immediately after a connector has connected to the object
  • disconnectedFrom - run once immediately before a connector is going to disconnect from the object
  • KeyStroke - executed when any key is pressed, this is only available from World and Playfield scripts 
  • acceptedTextContents - executed when text is accepted, which can be when you tab to the next text field or hit return (if accept on CR is checked), this is only available for Enhanced Text objects.


Gold chest.
Clicking on the gold chest to the right of the ScriptStatusControl allows access to the following special tiles:
  • test tile
    This tile has three holders into which you can place one or more tiles:
    test.png
    Test: You can place any tile that contains an attribute of any object. For example, you could test whether Ellipse's y value is less than 5 as shown. To accomplish this grab the left side of the Ellipse's y tile from Ellipse's viewer. Make sure you aren't to the right of the tile and have the red box surrounding Ellipse's y and its value at the right, because then you will obtain an assignment phrase for the tile and not its attribute. You can test on almost any attribute (numeric, color, graphic, etc) of any object.
    Pop Quiz: How could I define a test to see if a car passed a finish line in a race?
    Yes: Tiles placed in the "Yes" holder will be executed when the "Test" is true. If y<5, then Ellipse will turn blue.

    No: Tiles placed in the "No" holder will be executed when the "Test" is false. If y>=5, then Ellipse will turn blue.
    Note, that many tiles can be used in the "Test" holder of the "Test Yes No" tile. Some can also be used as watchers, which can be useful when debugging your scripts. While you may think a "Sketch obtrudes" or a "Sketch is under mouse" the Etoys system may think differently.  Being able to see this as a script runs can help.
  • repeat tile
    This tile has one holder called "do" into which you can place a script:
    Repeat.png
    You can repeat the script you drop into the "do" placeholder the number of times set in the number box at the top of the tile.


  • random tile
    Random.png
    The random number will range from 0 to the number in the number box (in this case 5). It can be dropped into the end of a command that requires a number or function. This is a special case of a function tile.
  • function tile
    Function.png

    You can choose a function by clicking on the arrows at the left or clicking on the function name (in this case "abs") to get a drop down list of functions to choose from. Most of the common functions are available in the list. The function can be dropped into the end of a command that requires a number or function.
  • button up?

    ButtonUp.png Used in Test and its value is true when the mouse is NOT pressed down.

  • button down?


    ButtonDown.png
    Used in Test and its value is true when the mouse is pressed down anywhere.

  • tile representing the player 
    Ellipse.png
    In this case the player is Ellipse.

  • number
    Number.png
    A number box that can be dropped into the end of a command that requires a number or function.

 
Script editor menu
The Script Editor Menu button appears on the far right. It has the following options.
add parameter

This option adds a parameter to the script.  The parameter is passed into the script when it is called from another script. For example if you can create a script that will move an object forward based upon the number, you can add a parameter of type number. Then call that script from one or more other scripts passing in a specific value as the number. To use the parameter in the script simply drag the parameter from the Script Editor's in the top line to the right of the scripts name into your script where any number data type can be used.
There following are the data types that can be used as parameters:
  • Boolean (true or false)
  • BorderStyle
  • ButtonPhase
  • Color
  • Graphic
  • ImageResolution
  • Number
  • Patch
  • Point
  • ScriptName
  • Sound
  • String
  • TrailStyle
button to fire this script This will create a button object that can be used to fire the script. You can change the button's label from the menu in its viewer by selecting change label.
show arrows
When selected the arrows inside scripting tiles will be displayed (ex: the up and down arrows to increase numbers and the left and right arrows to remove and parts of the expression
edit balloon help for this script
This edits the balloon help that is shown when you hover over the script name in the scripts category of the Objects Viewer

explain status alternatives
Opens a window with descriptions of the options for "when this script should run" (ex: normal et al)

show code textually Will provide a text version of the script which you can edit. This provides an entry into Squeak programming.  To save your changes type
show code textually Will provide a text version of the script which you can edit. This provides an entry into Squeak programming.  To save your changes type <ctrl><s> (on PC and XO) <cmd><s> (on Macintosh) when done.  Note once changes are made you can not revert back to tile scripting without losing your changes.
save this version When editing the text version of a script you can use this menu option to save the changes.
grab this object Will move the object to the position of the mouse and you can drag it to where you want to place it.

reveal this object Will display the halo for this object so you can find it. This can take a second or two.

tile representing this object
Will create a tile representing the script's Object. Tiles representing an object can be used in this or other scripts to replace the Object being acted upon in a script.

open viewer Will open the viewer for this script's object

destroy this script
Will destroy this script.

4.9 Viewer Category Scripting

Object-start_script.png 
 
This starts the given script ticking. You can select from available scripts at the right of the tile.
Object-pause_script.png 
 
This makes the given script be "paused". You can select from available scripts at the right of the tile. Note: If the script specified is the script containing this tile, the script will not pause until it finishes its current processing of the all the tiles in the script. For example, if you have a "Object forward 5" tile after a "Object pause script script1" tile in a script named "script1", the object will move forward 5.
Object-stop_script.png 
 
This makes the given script stop or revert to "normal". You can select from available scripts at the right of the tile.
Note: If the script specified is the script containing this tile, the script will not stop until it finishes its current processing of the all the tiles in the script. For example, if you have a "Object forward 5" tile after a "Object stop script script1" tile in a script named "script1", the object will move forward 5.
Object-start_all.png 
 
This starts the given script and all of its siblings's scripts ticking in the object. You can select from available scripts at the right of the tile.
Object-pause_all.png 
 
This makes the given script and all of its sibling's scripts be "paused" in the object. You can select from available scripts at the right of the tile.
Note: If the script specified is the script containing this tile, the script will not pause until it finishes its current processing of the all the tiles in the script. For example, if you have a "Object forward 5" tile after a "Object pause all script1" tile in a script named "script1", the object will move forward 5.
Object-stop_all.png 
 
This make the given script and all of its sibling's scripts stop or revert to "normal" in the object. You can select from available scripts at the right of the tile.
Note: If the script specified is the script containing this tile, the script will not pause until it finishes its current processing of the all the tiles in the script. For example, if you have a "Object forward 5" tile after a "Object stop all script1" tile in a script named "script1", the object will move forward 5.  Object-tell_all_siblings.png 
 
This sends a message to all siblings to run the given script once. The object that executes this will not have its script run, only its siblings will run the script once.  You can select from available scripts at the right of the tile.
Object-do.png 
 
This runs the given script once, on the next tick. You can select from available scripts at the right of the tile.
Object-send_to_all.png 
 
This runs the given script in the object and in all of its sibling once. You can select from available scripts at the right of the tile.

Wednesday, August 4, 2010

Fun with Pattern Blocks and Transformation Tools

If you don't download it

Pattern Blocks and Transformation Tools is an Etoys project to provide teachers and learners a simple free tool to explore ideas using Pattern Blocks.  The transformation tools also allow kids to create their own transformation scripts by simply dropping the transformation tiles into a Etoys holder.


There is also a "Guess Who I Am" game on Page 2 where kids can create their own version of the game by dragging in or creating pictures and embedding them in the Polygons.


Here is a video showing how it works:



Kids can create their own transformation and simple animations using Transformation Scripting.  The Pattern Blocks can also be used to explore fractions.  To see how the scripts work the simplest way is to look for yourself. Get the viewers from the transformation tiles and look at the "doIt" scripts for each object. I used a Player Variable which we will discuss in an upcoming post


Fun with Fractions

I have found some good lesson plans on the web at:
If you can recommend any others please let me know.


NCTM standards that can be covered:
  1. Develop understanding of fractions as parts of unit wholes, as parts of a collection, as locations on number lines, and as divisions of whole numbers.
  2. Recognize and generate equivalent forms of commonly used fractions, decimals, and percents.
  3. Use models, benchmarks, and equivalent forms to judge the size of fractions.
Algebra 3-5


  1. Represent and analyze patterns and functions, using words, tables, and graphs.
  2. Describe, extend, and make generalizations about geometric and numeric patterns.


  1. Make and test conjectures about geometric properties and relationships and develop logical arguments to justify conclusions.
  2. Investigate, describe, and reason about the results of subdividing, combining, and transforming shapes.
  3. Build and draw geometric objects.
  4. Classify two- and three-dimensional shapes according to their properties and develop definitions of classes of shapes such as triangles and pyramids
  5. Identify, compare, and analyze attributes of two- and three-dimensional shapes and develop vocabulary to describe the attributes.

Saturday, June 12, 2010

Tools to Play/Learn/Teach with - M&M Fractions and Multiplicaiton

M&M Artifacts for Multiplication and Fractions
(you need to download Etoys to play/view)





Etoys is a media-rich authoring environment that encourages deep learning through experimentation. 
Children use Etoys to make their own models, stories, and games, which keeps them engaged because it's a lot of fun. But Etoys isn't just child's play. Etoys makes abstractions more palpable, allowing children to visualize and explore new ideas. 

Etoys allows you to construct things from a set of basic building blocks which is its strength and also (IMNSHBOWO1) its weakness.  It requires that you build everything from those basic building blocks.   I wanted to explore the idea of providing higher level "artifacts" that allow the user to play with ideas without having to start from first principles.  So I am working on a set of "Tools to Play/Learn/Teach with" (or to Think with or Play with) that allow kids, teachers and anyone else to play and learn.

I created this Etoy to explore how we can help kids with ideas such as fractions and multiplication.

My end goal is to see Etoys and the higher level artifacts used by teachers, kids and parents to facilitate and improve learning.  You are free to modify the tools you see here and/or create your own. As such they are Creative Commons licensed under the Share and Share alike  (see sidebar for license for all content on this site).

1 IMNSHBOWO - In My Not So Humble But Often Wrong Opinion

Wednesday, April 28, 2010

Etoys Class Reflections

Taught a class today, 4 kids (8, 10, 11, 12, 14) and 2 adults (Mom and Dad of two of the kids). First class with this group.

Started with "Daemon Castle" and then had them do "Etoys Challenge".

Observation:I had one child. Nick, who was laughing hysterically.  I went over and found him playing around making the car go tight circles, bounce off walls and he eventually figured out how to make it bounce off the walls until it reached the goal.  His father who sitting next to him, got a bit upset and told him he needed to focus on what he was learning and be more disciplined.  
Thoughts:
This reminded me of something another coach told me while coaching Soccer "Never coach your own kid, (a) they won't listen to you and (b) they will listen better to another adult".  While I don't fully believe (a), I think they do listen, they just don't want to act like they do, especially in front of the friends, he made a good point. Also, in my observations parents are harder on their own kids then they are on others, especially with their first child.

I love to see kids laugh and having a good time in class, this means they are having fun and to me fun means MOTIVATION. I firmly believe motivation trumps most other things, as kids will work hard when motivated.  That said the father had a good point and I needed to find a way to turn that "silly fun" into what others have termed "hard fun".  So I let him finish his "Etoys Challenge" then when he told me he was done I stepped back and ran his scripts on each step.  I then challenge him to reach the goals using just one script.  I have observed a number of kids who use multiple versions of the script changing it along the way until they reach the goal. Again I let them do this and congratulate them on a creative way of solving the problem and pointing out there are many ways to solve the problem, but can they find a simpler more elegant way using only one script which doesn't change?
I always try to have one part of the class where I get them AWAY from the computers and preferably outside.  Today I broke them into pairs and have them "program" each other. One child, the programmer, would give instructions to another child "the computer".  I first had them try and program each other to "walk a square".  At some point one of the kids will say "turn" and the other knowing he is supposed to walk a square will dutifully turn 90 degrees.  I then jump in and ask the child to program me. When I am told to turn I will turn some random value (usually either a very small turn or a 360 degree turn) and they will get the idea and then ask me to turn 90 degrees.  One kid got excited and came up with the idea of I can go forward 10 steps, turn 90 degrees and repeat forever.  After complimenting him (kids love compliments) I asked him what was like repeat forever in Etoys? He said a ticking script.  At some point I made the connection, wish I could remember what brought it up, to how the cells in our bodies are like millions of little ticking scripts doing their own things responding to stimulus and working together to make us and how it is amazing that is.

IMPORTANT TEACHING NOTE: I try to never give a child an answer.  Instead I will either ask them a question or give them another problem that will help them figure out the answer themselves. Basically a hint in problem or question form.

What to do with kids who finish early?  
There are always those who finish faster than others I have a couple of strategies to deal with this:
  1. Have some problems or other Etoys Challenges they can work on
    For this lesson I had "Etoys Game Challenge" which the kids like because they can create their own games, very motivating for kids.
  2. Teach them to teachThis means having them help other kids, but the danger here is they will simply show the other kids the answers they found. I do my best to impress upon the kids that they should never give them the answer, but instead help the other child find the answer themselves by asking questions or getting them to think about how their program works (aka play computer). I try to model this and point it out explicitly a bunch of times early in the lesson so the kids understand my preferred style before I ask them to help teach. I then monitor the kids closely when they first start "teaching" other kids.
  3. Have the child teach an adult in the class
    The kids get a big kick out of teaching adults.When there are adults this is especially fun, the kids get a big ego boost (and motivation from feeling they are better that an adult at something) out of teaching an adult, and it shows them the adults don't know everything (a valuable lesson in life that kids figure out faster than most adults would like to believe).  The adults are usually good sports, but read your people some peoples ego's are fragile and you need to be sensitive to that.
  4. Have them improve or extend their current work
    For example their script may not be the simplest or most elegant (ex: turn 90, turn -45; one kid had turn 45, turn -45) or having a forward 10 tile in the YES and NO of a test
    Some kids will instantly see what they can do with Etoys and start creating games or other fun stuff. If I see this and they have completed the main task (sometimes even if they haven't) I will encourage them to improve their games or show them some basic Etoys functionality that they can use to improve their game or do what they want.
At the end of class I wanted to set them up for their homework (working on the 40 Mathematical Shapes challenge) and had them try and get their car's to "Draw a Square"
(Hmmmm, another idea to get them out of the computer and use the knowledge they already have is to have them "program" their hands to draw a square on a piece of paper).  While doing this one child asked: "What's this symbol here do?" He was pointing at the "add a variable" icon in the top bar of the viewer (looks like a arrow head in a pink background pointing down).  At the time we had a script on the screen to draw a circle (forward:5, turn:5) when I had a brainstorm.  Okay we can use variables to change the value for forward and turn (I am slow I can't believe it has taken me this long and a 14 year old kid to finally figure this out!!!).  So I showed him how to add the two variables and dragged the variables into the scripting tiles to replace the 5's and then asked him to make a square without changing his script. When he looked confused (a feeling I recognize because of my vast experience with this emotion) I pointed out,  a couple of times, that the car would move forward and turn by the variables we had setup. I did NOT point this out by saying it explicitly. Instead I simply pointed to the variable (i had dragged a detailed watcher onto the screen for each variable) and then pointed to the forward tile and asked him how far it would move forward. He eventually got the idea and I went to work with another child who had been asking questions. Then all of a sudden I heard and excited voice saying "Hey I made an Octagon!!!"  I then made a big deal out of his great discovery and pointed out how with one script he could make multiple shapes just by changing the variables. Then i asked him what other shapes he could make and left him to have fun.

Towards the end of class I sent them outside again to program themselves (as opposed to others in this case) to follow a road.  I drew a sample road and then gave each of the kids some chalk and observed.  Each child drew a different shape and I asked them what there program was for following the road. Fortunately one of the dad's who was there said the scripts we wrote reminded him of a robot they have at work do deliver mail.   I told the kids some folks have been paid a lot of money to write programs just like the ones they wrote today to follow the road (when my son heard this he asked for $100K).

The kids got the idea of programming a car that could drive itself, so I challenged them to program the "Car of the Future" and asked them to think about what kinds of challenges they would have and how they would handle them (other cars, pedestrians, traffic lights). One of the parent's suggested they test their program by having multiple cars drive in Etoys world at the same time.

Anyway a lot of fun was had by all and I had to kick the kids out as they wouldn't stop working on Etoys when the class was done. (a good sign and one I always see when kids are first exposed to Etoys).

Mr. Steve

Note for future reflection: On teaching kids to think about multiple ways to solve a problem and learning how to compare solutions.

Sunday, January 10, 2010

Etoys Challenge - Game Controls

The following post contains teaching tips and ideas for Etoys Game Controls  (click on link to get project) which is an Etoys project designed to help kids learn to create their own games. Etoys can be downloaded here.

Etoys is tool that can be used by teachers to:

  • Create Curriculum
  • Assess children's understanding
  • Provide skill practice
  • Motivate students
  • Help children learn useful and powerful ideas
Etoys is a tool that can be used by students to:

  • Write Reports
  • Communicate Ideas
  • Create their own Stories
  • Learn from each other
  • Create Games
  • Develop a deeper understanding

Teaching Tips for this Project:
  • Try not to give the kids the answer, they will figure it out for themselves eventually. Instead you can ask them questions or have another student help them.
  • Train students to help others by asking them questions and not giving them the answer directly. For example: Esteban, can you help Leonardo, now please don't give him the answer, instead give him hints and try asking him questions that will help him figure it out for himself.
  • Ask the kids if they have seen a similar problem before.
  • Ask the kids if they have seen another project that solved the problem or did what they are trying to do. Then ask them to study that project to figure out how they did it. You can even point them to a project that can help them. For Example, on Step 4, you can ask them if they have seen anything that sends the car back to the start.
  • Towards the end of class if there is time, look at the different ways kids have written scripts and pick out two that used different methods to solve the same problem. Then ask the class do both work? Which is better? Why is it better? Is there another way?
  • Encourage kids to look at their scripts and "play computer" ONE STEP AT A TIME to figure out what it is doing.
  • Questions to ask while Teaching with this project: "How can we make the game harder?" and "How can we make the game easier?" Invert, always invert' ('man muss immer umkehren') - Carl Jacobi)

Things to look for while Teaching with this project:
  • Look For: Kids who change the forward value from 5 to a higher number.
  • When you see it: Ask the child why they did that, then praise them for such a good idea, tell the rest of the class "Pablo, came up with a neat change to his script" then ask Pablo to show the other kids what he did. Then you could ask the other's why did Pablo's idea work?
  • Listen For: Kids who come up with ideas for improving the game or new games
  • When you hear it: Tell the child, out loud so others can hear it, something like: "Sadie, that is a great idea to improve the game." Then ask her to share her idea and ask the other kids to come up with ideas to improve the game or make their own games. Ideally you should only have to do this once or twice to "prime the pump" and get kids talking and sharing ideas on how they can improve the game or make their own games.
  • Listen ForKids who ask "Is negative 5 turn to the left" or any question about how a tile works.
  • When you hear it: Tell them: "Good question, how can you find out? Is there a Test you can run to figure it out?" Then when they run the test and discover the answer for themselves, praise them and tell the rest of the class "Hey folks, look at what Ines did!  She wasn't sure what this tile did then she created a test and found out the answer for her self. (While saying this ideally you can show or have Ines show the question she had and the test she ran).  The goal is to encourage kids to test things and find the answer themselves.
  • Listen For"Hey I can make a two player game" I have heard this when the realize on Step 4 that the arrow keys ( and were changed to a,s,d,w.
  • When you hear it: Say "That's a great idea, i'd love to see that'
  • NOTE: There will be problems when a child creates a two player game with the techniques shown in this project. That's okay, its good for kids to get frustrated once and a while. I will post another project and blog post on how to deal with that later.
  • Look For: A child who is stuck and their script isn't working the way they expect.
  • When you see it: Ask them to look at their script and explain what it does. You may want to ask what a specific tile does (the one that is causing the problem. The goal is to encourage them to look at their scripts and "play computer" and figure out what the computer will do. Remind them the computer only does what you tell it to do AND it does EXACTLY what you tell it, not what you want it to do.

  • Look For: NOTE: In this project on the first two steps the scripts start in "Ticking" state so as soon as they put in a tile that action is taken.  This will hopefully surprise some kids and lead them to ask "Why did that happen" If they do ask or notice ...
  • When you see it: ... Ask them to look at the scripts "Ticking" state. Hopefully they will realize that is the reason (with guided questions if neccesary). Then ask them what the different states do and when they give you an answer (right or wrong it doesn't matter at this point, really!), ask them to "Prove It!"  Ie: "How can you design a test to prove that's what it does?The goal being to get the kids in the habit of designing tests and testing their ideas.
    • Look For: Kids who finish a step early. In a large class (and even in a small) one this will happen.
    • When you see it: Ask the child if there is another way to solve the problem. Always good to get kids thinking about alternate approaches to solving a problem. I had one student who in step 2 used forward and turn for the same arrow key and it to my surprise it worked!  Ask the child to help another child who may be struggling. Remember to train them to ask questions and give hints, NOT answers.
    • Look For: Kids who finish a step early. In a large class (and even in a small) one this will happen.
    • When you see it: Ask the child if there is another way to solve the problem. Always good to get kids thinking about alternate approaches to solving a problem. I had one student who in step 2 used forward and turn for the same arrow key and it to my surprise it worked!  Ask the child to help another child who may be struggling. Remember to train them to ask questions and give hints, NOT answers.
    • Look For: Kids who put a Test tile inside the "NO" section of another Test tile. Most kids I have seen put one test after another.  
    • When you see it: At the right time, perhaps towards the end of the class when you ask kids to look at the different ways kids have solved the problems (ie: the different ways of writing the scripts) you could ask them are these the same?
    • Listen For: "Oh I get it"
    • When you see it: Smile to yourself, this it the Joy of teaching and learning. Then ask the child what they discovered and if appropriate share it with the class.
    • Look For: Two kids using different tiles for "reset" on Step 4. Both "Car reset" and "Car do reset" do the same thing.  Frankly I wasn't sure if I should include this or not. 
    • When you see it: Let me know what you think about the reaction and dialogue of the kids. Thanks!

    Things to Add/Next Steps:
    • Time Trials (A challenge to show kids how to create their own timer) This should lead the kids to try and make harder mazes and change the values for move forward and turn from 5 to higher numbers. Of course some may make easier mazes.
    • Provide a Top Ten Times lists where kids can post their high scores. This will require prompting for names, lists and sorting. Will work on a project to teach this later.
    • You have three lives to get through the maze without touching the wall
    • Consider adding a "background" script in Step 3, so kids can't go through walls.
    • Consider adding a sound in Step 3 when a car hits a wall. 
    • Have the child Enter their name at the beginning of the project and customize the certificate with their name. Ideally print it or email it at the end. Need smalltalk/squeak script to do this.
    How to relate this to "School Curricullum"
    • turn teach about degrees in a circle (need to create a lesson plan on this for teachers to make the connection more obvious for the kids)
    • the x and y in reset teach about Geometry
    • teaches programming
    • Etoys can be used to create curricullum
    • Etoys can be used for students to create reports and explore ideas

    Prerequisites:
    Students should have completer the Etoys Projects: Demon Castle and Etoys Challenge which can be found in the "Tutorials and Demos" from the Etoys Home Project.

    Acknowledgements:
    The design of this project is based upon Etoys Challenge by  Toshio Miyasaka. The beauty of his design (and Etoys which allows you to do this) is that you can design the learning environment so that the child has only those things necessary to solve the problem visible and is not distracted by all the powerful scripting tiles available within Etoys.