1001 Circles: Train your robot with DrTechniko

Share Button

1001 Circles is a series of stories that show what a math circle might be like, from the point of view of circle leaders. We hope these stories will inform and inspire you to lead a circle of your own. And if you lead a math circle, an engineering club, or an informal playgroup, we would like to hear your story or interview you. Write moby@moebiusnoodles.com to talk about your adventures.

Today we meet DrTechniko, who wants to educate young minds about the scientific thought process, computer science and technology – and one day fill the world with young geniuses. DrTechniko’s stories and games teach kids concepts about programming, artificial intelligence, nanotechnology, computer design in the same fun and engaging way as “grandma’s storytelling time” when we were kids.

DrTechniko in real life is Nikos Michalakis. Nikos graduated from MIT with honors (TBP, HKN) with an undergrad and Masters degree in Electrical Engineering and Computer Science and a minor in Mathematics. He then did post-graduate studies at NYU’s Courant Institute. He has done research at MIT’s Media Lab and Computer Science and Artificial Intelligence laboratories and companies like Nokia and Sun Microsystems. He has published his research in prestigious conferences. He also gained practical experience on the applications of science and technology by being involved with multiple high-tech start-up companies over the years. He currently works at Knewton, an adaptive learning education technology company. He lives in Williamsburg, Brooklyn with his wife and their two sons.

Here is DrTechniko’s story, which originally appeared on his site. Adaptations for older and younger kids are added at the end.


 

Last Sunday, I taught six kids of ages 5 to 7 how to program. “In what programming language?” you may ask. Well…I didn’t use a programming language, at least none that you know of. In fact, I didn’t even use a computer. Instead, I devised a game called “How To Train Your Robot”. Before I explain how the game works, let me tell my motivation.

I learned how to program during my freshman year at MIT when I was 19. It’s not because I didn’t have a computer at home or I hadn’t heard about programming languages. It was because (a) I thought programming was boring and (b) no one had told me why I should bother. In fact, my computer teacher in high school had told me “you don’t need to waste your time learning how to program. Now we have visual tools to build programs. Programming languages are already obsolete.” That was in 1994 and he was referring to Visual Basic. Luckily for me MIT wiped all that nonsense away in a matter of weeks. But does one need to wait to go to college to get the proper education?

Learning how to program is going to be the most useful new skill we can teach our kids today. More than ever our lives depend on how smart we are when we instruct computers. They hold our personal data and they make decisions for us. They communicate for us and they are gradually becoming an extension of our brains. If we don’t learn programming as part of our childhood, we will never evolve. As the famous futurist, Ray Kurzweil, put it “The only second language you should worry about your kids learning is programming.

How To Train Your Robot

The game works as follows: every kid is turned into a “robot master” and their mom or dad becomes their “robot”. I give each kid a “Robot Language Dictionary” and explain to them that this is the language their robot understands. The dictionary has symbols for “move left leg forward”, “turn left”, “grab”, “drop” etc.

The goal is for the robots to go through an obstacle course, pick up a ball and bring it back. The kids have to write a program that will tell the robot how to do all that. Every time they write a program, they hand it to their robot and the robot executes it. To do that, I give each kid a pen and paper where they copy symbols from the dictionary to write their programs and off their robots go!

The fun part begins when each robot retrieves the ball. Now I let kids invent their own moves and symbols that they add to their dictionary and then teach their robots. There is no limit to what the kids come up with.

This is my favorite program (written by a five year old girl):

I designed the class to teach some very basic principles of computer science and programming:

Programming languages are just another way to communicate to an entity (via programs).
Programs are recipes for automating stuff.


However, I was pleasantly surprised on how much more the kids learned. On their own they figured out the following things (in a 30-min session):

  • Program Parametrization: Instead of putting a forward step ten times, they put a 10 in front of the “step” symbol (A five-year-old figure it out and asked me if she could do it).
  • Composition: Grouping of a set of moves (“move left leg forward, then move right leg forward and do this combo 10 times”)
  • Abstraction: “Run in a circle, then say “I’m dizzy!” , then call this the “Run Dizzy” program and do it 100 times. (For some reason, kids loved making their parents repeat stuff 100 times over.)
  • Unit testing: They’d write a test program to get the parents moving a few steps, have their parents run it, then fix it and run it again, and then add a few more steps until they reach the goal.

I’ve ran the class twice now and I’ve seen the same patterns, which support my belief that when kids have fun, they get very smart and creative about programming. Many of the parents plan to play the game at birthday parties. If you have questions about how to set up the game, don’t hesitate to write. You can find my contact info at www.facebook.com/drtechniko.


I was interested for a while after I designed “How To Train Your Robot” whether we can push the age limit down, so I designed a simpler game called “How To Train Your Robot To Jump.” I tried it on my son when he was 2.5, and summarized my thoughts on how we can introduce toddlers to some basic concepts.
Toddler CS
For older kids, someone (I believe in Brazil and the US) used the game as is, with more complex robot paths. The really fun part I think is after achieving the original goal of the game, the child can create their own new “moves” (essentially language constructs). Even a 7-year-old was able to come up with iterations for loops, or mix new actions.
Another way I’ve used a modified version of the game is to introduce the older kids to conditionals, such as if_else_ and while(some Boolean expression). First, invite children to write a program with fixed moves, and then vary the layout by moving obstacles. This way, the kids have to think along the lines of if(there is an obstacle)_then(turn) and then wrap those decision-making conditionals in a while(goal not reached) loop.
Essentially the program would look like this:
while (I haven’t picked the ball) {
  while (I don’t see the ball) rotate slightly left
  // now we see the ball in front of us
  // but there may be an obstacle
  move forward
  if(hit an obstacle) turn left then move forward
  // now we have cleared an obstacle so let’s try again
}
I tried it on a 6-year-old and they had difficulty understanding while loops, but they got the conditionals. I think a 9-10 year old should have no problem trying that version of the game. I ended up teaching the while(condition) concept a different way to 6-year-olds using smaller tasks. I had them read things like this:
while(nikos is wearing a hat) {
    clap your hands
}
It was fun and direct and they got it.
You can’t do CS without math, and math becomes more tangible when taught through CS. In fact, at MIT we all had to take a class in discrete math (combinatorics, induction, Boolean algebra, polynomials, probability, etc. etc.) since this is the foundation for algorithmic thinking and analysis, among other things.
Some of the things I think kids playing DrTechniko games learn that will help them understand math are:
  • Understanding abstractions and symbols and how by applying rules to them you can build a whole axiomatic system.
    This is simply done by having the kids build their own programming language and constructs on how to put things together. When a kid draws an arrow and places the number 5 in front of an arrow and assigns a meaning “jump 5 times” they are learning to build an interpret their own “algebra” or how to solve an equation using a structured mental process.
  • Counting.
    It’s ubiquitous in computing.
  • Creative Problem solving.
    It’s a big part of math that unfortunately is often put aside in favor of memorizing… All these games teach kids how to solve problems.
  • Boolean logic.
    I mentioned several examples above.
  • Min, Max, Comparisons.
    I had a class of 2nd graders figure out what is the favorite/least-favorite color of the class and they had to place their votes, then collect and partition them by color, then find the max/min. I also had them figure out how to sort themselves from tallest to shortest, by comparing their height with their neighbors.
  • Sets.
    Another game we played was to group books by color or the first letter of the title as part of a searching algorithm exercise. They learned what a set is without even realizing.
  • Probability.
    This is my favorite. We don’t teach that early enough and it’s such a big part of understanding our world and so important in modern mathematics/computer science and the “big data era”. Today’s science relies more and more on statistical models. As an exercise I had the class of 2nd graders build a computer that generates random-numbers using various designs from stuff they have at home. My favorite was a girl that put a bunch of numbers on a piece of paper and used her pen as a dart. She ‘d throw the dart and write down the closest number it hit! We also experimented with a random() function in real programs. I had them play with a program that would generate “fortune telling predictions” by randomly choosing words from a list.
Games like that are much more intuitive than giving a child a formula and asking them to reproduce.
Like It? Share It.
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Google Bookmarks
  • email
  • Posterous
  • RSS
  • Tumblr
Posted in 1001 Circles & Leaders, Make
3 comments on “1001 Circles: Train your robot with DrTechniko
  1. Stephen Taylor says:

    This is awesome. It reminds me of what Richard Feynman (Nobel prize-winning physicist) would say: “If you can’t explain it to a six year old, you don’t really understand it.”

  2. Profgra says:

    Thanks for this article. Very inspiring.
    I just don’t agree with the ‘unit tests’ thing. Wouldn’t it rather be ‘agile method’ (kind of)?

    • DrTechniko says:

      Thank you for the comment. It’s very insightful and I didn’t think of it that way, but indeed this resembles an agile process because the final “product” is built using quick iterations and feedback. If we take the “process” aside though, in terms of what they are doing this is also very much like unit testing or test driven development. The unit test here being “make sure the robot stops before the obstacle” and until that test passes they don’t build anything on top of that.

Leave a Reply

Your email address will not be published. Required fields are marked *

*