Education ∪ Math ∪ Technology

# Day: June 18, 2012(page 1 of 1)

Here are two sample programs from a pair of kindergarten classes today (I took screen-shots of their program, and cropped them to fit in this blog).

Program 1:

Program 2:

I started the kindergarteners off the same way I started off third graders last week – they were to program me, and then program their partner. It worked fairly well, as most of the kindies could figure out how to get me to move in a square fairly easily, but an L turned out to be a stumper for a while, and a T was super hard. One could easily have done this entire activity with some adults (or older kids) willing to stand in as computers and be moved around by the kindies.

The idea of this activity is to get students thinking geometrically and systematically – if I want the computer to draw this shape, what do I need to do to get it to work. The key here is that the kindergarteners have to do the thinking, and what they showed me is that they are capable of some fairly advanced logical reasoning when pushed into it a bit. Most of the kindergarteners were able to get the computer to draw a square, or run way off the screen, and nearly all of their programs involved using the repeat function. I really found the students had to think to be able to do this activity, and to trouble-shoot when their programs didn’t work.

I would not advocate this activity replace moving around time, or other drawing time, but if you are stuck at the end of a year with nothing but worksheets to do, this could be an excellent replacement.

When I learned how to ride a bicycle, I practiced with training wheels first because my parents thought that it would be too difficult for me to learn how to balance myself, steer, and pedal all at the same time. I eventually learned how to ride a bike without training wheels but it was challenging for me.

With my son, we started him on a like-a-bike which would let him practice balancing on a bicycle (which some parents argued with us was the most difficult part of learning to ride a bike) before having to learn how to pedal. We then later gave him a bicycle with training wheels so he could practice pedalling separately from balancing himself but honestly, we didn’t find it helped much. When he finally had a standard bicycle, he still needed to learn how to pedal while keeping himself balanced.

I’m not sure either method is best. It probably depends on the kid which technique we should use. Maybe we should have just started our son on a regular bicycle.

So now look at mathematics education. Our goal is to have students think like mathematicians, and to know enough mathematics to be able to use it in their thinking. Is it entirely necessary that all of them learn it the same way? Can we find different ways to engage different students in the act of learning how to be a mathematician?

I found out through Reddit about a new visual programming language that runs in the browser called Blockly. The system looked pretty good, but wasn’t quite right for my students. Fortunately the Blockly code was fairly easy to figure out, and so I hacked around a bit this weekend, and put together a simplified version of the system for use with my kindergarten students tomorrow. This version allows students to use code to create simple animations. Unfortunately, at this stage the animations cannot be saved.

• It does not run in Internet Explorer. It may not run in a few other browsers as well. I can confirm that it should work in Google Chrome and Firefox, and it probably works in Safari.
• It’s not done yet. I plan on adding more of the advanced functionality, which exists already in the Blockly language, and should be easily implemented.
• I plan on beefing up the forward and turn commands so they are similar in power to what can be done in Logo. One of the chief advantages of Logo is that it is both an easy to understand language, and powerful.
• I plan on implementing save and share features if this system looks reasonably useful.
• I think the graphics for the turn and forward code blocks could be better. For example, they should show an arrow either turning, or going straight.

Do you have any feedback about how I could improve this programming environment?