Here are some guidelines for making the most out of the How To Build A Simple Computer Out Of Anything activity.

The idea of this activity is to teach kids that computers do not need to be these complex unfathomable machines. Computing and computational thinking happens everywhere. When you engage with the kids in this activity make sure you remind them of that.

Motivate them

Randomness and probability are such fundamental mathematical concepts that your kids will be exposed to them no matter what they study in life. The applications of random number generation in computing are endless. It is the basis of computer security, fault-tolerance, distributed systems, and more. Not to mention exotic areas like quantum computingDNA sequencing and self-driving cars.

Give them examples of applications to keep them motivated. Especially stuff they interact with on a regular basis. One thing I tried with my son (who was five at the time) was to get him to generate 4 digits so he can set the passcode on his mom’s iPad and have her try to break the code. The fact that he had a secret in his head that was so powerful made him ecstatic! (Of course, I gave his mom the code and told her to pretend she didn’t know.)

Explaining randomness

Randomness is better explained in the context of a real application. You want to get the kids thinking along the lines of something like: “Imagine you are making a secret number for a combination lock or your iPad so a thief can’t open it. If the thief watched your computer doing work but didn’t see the numbers that came out, would he be able to guess the numbers if he repeated what you did?”

After they do the activity for a while and if you feel the kids are advanced enough, you may follow with questions about the quality of the random numbers. Are they truly random (well-distributed)? Can a “thief” easily guess them if he ran the computer a few times and picked the most popular outputs?

No computing in their heads

One thing that will likely happen is the kids will come up with a design where the random number is created by their own decision. That’s “cheating” so to speak. For example, their design might be to flip a card from a set of cards laid out on the table. They select the card, flip it and write down the number on the card. This is not a good design because they chose (in their head) which card to flip. So, keep reminding them that they can’t “choose” by themselves. The computer has to “choose”. A good design will involve actions that create entropy like mixing a bunch of things, throwing stuff in the air, or pushing or smashing something.

Help but don’t interfere

I’ve seen kids do all kinds of designs. From throwing a bouncy ball around the house to elaborate arts-and-crafts projects like a fully colored wheel-of-fortune. As long as the kids don’t compute the random numbers in their heads, let them be creative. The more they enjoy building and using their computer the more engaged they’ll be. Don’t hesitate to give them ideas to make their computers more “extravagant”.

More designs to play with

After the kids have designed their own, a great follow up exercise is to give them the “computing” materials first and then ask them to design a random-number generating computer using only the provided materials.

Here are some ideas on how to build a computer using only:

  • A bouncy ball.
    • How: drop it in the air and count how many times it bounces.
  • A long string.
    • How: drop it in the air. When it lands, count the number of times it crosses with itself.
  • A measuring tape with any of the above.
    • Measure distance travelled, length, width etc.

Share!

Use your phone and post pictures of your kid’s designs to the DrTechniko Facebook Page. I will personally respond to your posts.

Also, don’t hesitate to send me a personal message via the Facebook page if you need help.

I hope we learned something useful today,

DrTechniko

 

What is a computer?

A while ago I taught a group of 1st graders a class about computing. I wanted them to understand the concept of a computer in a simple and tangible way. So I came up with an activity where the kids would be able to build and test a simple computer anywhere: in the classroom, at home or at the playground.

Here is what I told them to do:

“Build a computer that can produce random numbers using anything you have at home.”

They go: “Really? We can use anything we like?”

And I go: “Yes. Anything you like. Except of course your mom’s or your dad’s computer. You can’t use a computer to build a computer. That would be cheating. You are also not allowed to generate the random numbers in your head. The computer must do that.”

And then they go: “What are random numbers?”

It took me a few cycles to recover from such a disarming question. I thought “Wow, the world around us is full of randomness (especially the computing world) yet how does one explain it to a six year-old?”

I said: “It’s numbers that are not in order. They are completely mixed up and you can’t guess which number comes next. Like when you throw a dice. Can you guess which number will come up when you throw a dice? No, right? That’s a random number.”

Solutions as surprising as a random number

The kids surprised me with their creativity. Here are some of their cool “computer” designs:

domarien-prng

Spin the wheel to get the next number. I love the added touch of fake buttons to make this look like a real computer!

Riley_s_random_number_computer__-_nikos_michalakis_gmail_com_-_Gmail

Stir the pot to shake the numbers and open it to pick the next one. Computing in the kitchen!

isabel-prng

Throw the dart-marker at the target and write down the number closest to the mark. I would have never thought of that one!

Surprised yet again

What’s more surprising than the creativity of the children is the lack of creativity of the adults. Having already seen what the kids came up with, I posed the same question when I interviewed a series of college students for a software engineering position. They were about to graduate from one of the top computer science programs in the US.

I asked the candidates:

“Design a computer for generating random numbers using anything found in this interview room.”

9 out of 10 of them gave me the same answer:

“I can do this by flipping a coin.”

And then I thought: “Should I tell them a 6 year-old can do better than that?”

What’s your design?

Does you kid have a cool design? Post a picture to the DrTechniko Facebook Page. I will personally respond to you.

I hope we learned something useful today,

DrTechniko

This September I was honored to be invited at TEDxAcademy in Athens to talk about how to raise technology literate children through stories and games.

Since the first minute of my talk will be Greek to most of you, here is the translation:

“When I was a child my whole world was our backyard where we played games of tag, soccer and ended up with scratched knees. And I would hear the story of The Tortoise and the Hare and The Three Little Pigs. Through stories and games is how I learned the virtues of patience and how to make friends and collaborate with them.”

“But for my child the world is completely different. With the push of a button he can talk to his grandmother over video from the other side of the world and watch movies not in three but in four dimensions. And technology will continue to rapidly change his world day by day.

And yet, our kids today are not ready to understand what technology means.

It’s time for new and more advanced stories and new and advanced games.”

I hope you enjoy it.

Thoughts beyond my TEDx talk

It’s really hard to explain everything in 15 minutes:)

So, let me start by thanking Fiona Lee-Evans and her wonderful class at Pimento Hall Elementary school in Jamaica for giving me the opportunity last year to teach their 2nd graders about computing using ideas I developed for DrTechniko and allowing me to share some of that material during my talk.

Next, I’d like to elaborate on some of the things I spoke about.

On “twelve-year olds running internet businesses”

For anyone having started a company/venture/organization, they know it’s an awesomely rewarding experience. But it is also a very stressful one. Imagine if an elementary school student had to go through the same emotional rollercoaster as Mark Zuckerberg or Steve Jobs. It would be “Goodbye, Childhood” for them. So, when I urge us to get kids to build technology and bring it into the world, the classic internet start-up model cannot be applied. We need to nurture these kids and find a model to get them to build stuff and make the world better without them losing their childhood. We are responsible as parents and teachers for putting a framework in place that shields them from all the “adult” stuff like “this vendor screwed you over, so sue them now!”.

On “implementing programming environments anywhere”

One of the challenges I have for DrTechniko is to come up with ways to teach kids about programming and computer science using the oldest technology possible, like pencil and paper. You might ask: why bother, when almost every US and European household has a tablet or personal computer at home and when mobile phones can nicely integrate with modern playgrounds? I’ll answer with another question: what about the less privileged kids in India or Africa that don’t have a computing device? Shouldn’t they get a fighting chance to become the next Bill Gates? They should and they must. It’s going to be better for all of us.

Technology literacy and life

I wish I had time to weave this point into my talk, but when a child learns how to build technology and goes through that process, what they really learn is how to acquire resources, manage priorities, scope problems and do creative problem solving. This is nothing more than a recipe for living a successful life. Especially in a world that’s only getting more and more complex and moves at a faster pace. Life throws a lot of open problems at us and most adults today don’t have a framework to deal with them effectively. I’d like our kids to not have the same issue. They should be tackling bigger problems.

I hope we learned something useful today,
DrTechniko

How To Train Your Robot To Jump is a very simple game. On purpose.

The point of the game is to teach one simple concept: automation. Not how to write a program to solve a problem, but rather what a program is: a recipe for an automated task. The child uses symbols to express a “mechanical” output. Mom or dad are not jumping until he or she has positioned all the arrows. It is the simplest notion of programming I could think of.

Why not something else?

To figure out how this compared with other available options, I exposed my 2.5 year-old son to iPad apps like Daisy the Dinosaur, but the features were too advanced for him. Toddlers can’t actually read words like “jump” and “roll” so I had to do all the work. He just wanted to press the “play” button. However, if the app developers modified their UI with symbols instead of words, he might have understood what to do. Even then, though, I don’t think I’d have the same connection and fun with him as with jumping up and down together.

I also had my son try to “program in order to solve a problem” using the Angry Birds programming app. There were too many distractions for him. There are too many UI components plus he doesn’t understand what a step or turn signifies and why it’s needed. He just wanted to have the bird move straight to the piggy. Same with Robot Turtles. There were too many moving pieces (i.e., distractions). All these are great options for later, though.

One project where I think the use of technology simplifies the experience for toddlers is Bo & Yana’s robot kit, which I’ve pre-ordered and can’t wait to try with him.

Running the game

In terms of the materials for the game, you need paper, markers and scissors to do some arts and crafts and create arrows like this:

image01 

This is a fun time for the child to work with you to build the arrows. It gives you the chance to talk about what the arrows mean during the game while you make them. Be as creative as you like during this step and build some fancy arrows.

In terms of playing, have the child arrange arrows in sequence like so:

image00

and tell them that if an arrow is pointing up you will jump and if it’s pointing down you will drop (or do a push-up etc.). You should start with a single arrow and add more soon after. We made 4 arrows and we could have used more.

The arrow placement will most likely not be so orderly. That’s OK. Keep the game a low-barrier-to-entry experience for the child. Don’t fixate on having the arrows ordered. Just point to a sequence you are going to do and then do the “workout”. You can also tell them that you want to jump up 3 times and let them figure out how to place the arrows (if you want to engage into light problem solving). Also, it’s possible that they will want you to arrange the arrows and that they do the jumping. This is the perfect hook for them to learn to interpret the “program”. Have them do some jumping, then alternate. The whole game won’t last more than 10-15 minutes.

And feel free to use other symbols for doing new moves or prefix the symbols with numbers to show the effect of counting. When we played the game multiple stuffed animals and dinosaurs were involved:)

I hope we learned something useful today,

DrTechniko

 

Can we get a toddler to program?

Experiments in Programming with a 2-year-old

To answer that question I wanted to figure out if my son could “write” a simple program by manipulating symbols. In the spirit of my How To Train Your Robot game, I decided our contract was going to be “If you show me symbol X, I’m going to jump. If you show me symbol Y I’m going to lift my arms.”

The “symbols” ranged from Lego bricks to toys to stuffed animals.

We tried this when he was around 2 years old. It didn’t work. He was more interested in the physical object that represented the symbol rather than the meaning of the symbol in our “game”. I don’t think it had to do with him not being able to interpret rules, because he understood cause-and-effect (grabbing toys from other kids = timeout). I think it had to do more with not being able to interpret an object as something more than its obvious physical attributes (color, shape, and what happens if you smash it onto something).

Experiments in Programming version 2.5

So, I refined my game into “How To Train Your Robot To Jump”. Our contract became “Pretend I’m a robot. If you place an arrow facing upwards, I’ll jump up. If you place an arrow facing down I’ll do a push-up”. I thought that using arrows to face up or down should be less abstract. Also, I waited until he was 2.5 years old. He was better at paying attention.

We tried this new game and it worked!

Take the arrows…

Place them up or down…

And wait for me to execute the program…

Which is what programming is fundamentally about: use a language to describe a task that is automated and whose results you see after you are done.

(Keep in mind, that girls are more advanced than boys at that age, so my son serves as a how-early-can-a-kid-program upper bound of sorts.)

He was so excited that he wanted to do what I was doing. So, he’d place the arrows and then jump up or drop down.

Then we started getting creative. How about putting the arrows facing left or right and I jump to the left or to the right?

(And how about a couple of dinosaurs around to help us debug?)

There was not much action happening with only 3 arrows. He wanted to keep me jumping. Kids around that age understand numbers, so we introduced numbers into the mix and I told him that if he put the number 6 in front of an upward facing arrow, then I’d jump up 6 times.

We were 10-15 minutes into the game by then, and the game started looking like a real workout (physically for me and mentally for him).

At that point he was more interested in how numbers and arrows looked together in large quantities rather than the program itself. We called it a day. A good one indeed.

I hope we learned something useful today,
DrTechniko

After popular request, in this post I explain how to teach the “How to train your robot” class.

The class is split in two parts.

Part 1 – Guess The Robot

The first part is a game called “Guess the robot”. I show kids slides of different robots and they have to guess what the robot is or what it’s special ability is. At the end of the presentation I explain to them how robots work. In addition, I had a real robot that moved when kids clapped or screamed at it. I used it to show the robot parts and we had some fun making it move around.

You should be able to finish this part of the class in 15-20 minutes depending how many questions the kids ask.

Part 2 – Train Your Robot

The basic process was to get all the kids together to explain to them the game. I use my slides to do that. Then I hand out the dictionaries and pen and paper. I gather all the kids an parents and we first act through all the moves. Then I write a simple program on a piece of paper “move forward, turn left, move forward” and I ask kids to show me what it does. After that we start doing the obstacle course (which I have setup before starting the class).

After they get their “robots” to bring back the ball you tell the kids to invent their own “moves” and so they have their parents doing funny stuff:)

You should be able to finish this part in 30-40 minutes before the kids’ attention span degrades to zero…

Class Materials

The materials I put together to run the class:

  1. Presentation Slides (and Presenter’s Notes) [ΕλληνικάDeutsch – Christian Mennerich]
  2. A laptop or iPad to show the slides.
  3. The Robot Language Dictionary [ΕλληνικάDeutsch – Rita Freudenberg]
  4. One pen and paper per kid (for kids to write programs and hand them to their robot parents).
  5. A space where you can arrange obstacles (one or two obstacles to make kids add turns to their programs is enough. I used a gym as you can see in the videos posted on Facebook, but I’ve also run the class in a room with chairs arranged as obstacles).
  6. A ball per kid-robot pair (the ultimate goal is for the robot to get the ball and bring it back to the beginning).
  7. Optional yet fun: A real robot. I bought and built my own basic robot ($50). It took about an hour to assemble.

Class Dynamics

  • Five year olds are better when left alone to create their special moves. They get very creative.
  • Seven year olds need more guidance because they have too many ideas. They’d rather be told what moves to invent.
  • I’d recommend no more than 6 kids in the class, so you can have the situation under control.
  • Try to regroup the kids after their robots get the ball. Explain to them that now they can invent new moves.
  • Parents beware, you may have a serious workout. Kids love to make you repeat stuff 100 times. I advise to wear comfortable clothes.

I would love to hear your findings and see photos from you running the class at home or school.

I hope we learned something useful today,
DrTechniko

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.

You can also find instructions on how to teach the class as well as materials I used on this post.

I hope we learned something useful today,
DrTechniko

This may be the most rude story I’ve ever written, but I had fun doing it, because it illustrates one of my strongest beliefs: “give kids the tools to innovate and don’t limit them”.

Originally I wanted to write a story to teach kids how to draw the different shapes, but I found too many stories and e-books about that subject online. I thought it would be better to write a story about imagination, creativity and innovation and how sometimes we stifle it when we teach our kids in school.

Our hero goes above and beyond and turns squares and circles into works of art. But, no matter how creative our hero gets, the Rude Rollerball Pen will find a way to either take credit or belittle our hero. Our hero is patient until she has had enough and so she drains the Rude Rollerball Pen and all of its suppression.

The lesson here is simple: push your kids to innovate, and if anyone tells them they can’t do it, teach them to have the strength to set these rude repressors aside.

 

I hope we learned something useful today,

DrTechniko

 

I’m a rollerball pen and I’m rude and so bored.

You must play with me. I will not be ignored.

You will draw me a circle inside a huge square

Or I’ll draw in your nose a long curly hair.


Time’s up!


What is this that you drew? Do you think I’m a fool?

Oh! You used a big Square and you drew a big pool

And you painted a Circle as a shiny red ball.

Not that bad. It’s because of my skill after all.

 

—-

 

I am a rollerball pen and I’m rude and need food.

I must eat something yummy or I’m up to no good.

You must feed me a Circle from out of a Square

Otherwise I will smudge lots of ink on your chair.

 

Time’s up!


Let me see what you drew now, you wily old fox.

Ha! You used a fat Square and you drew a fat box

And out of a Circle you made a sweet pie

It is mine! It’s all mine! There’s no need to ask why.

 

—-

 

I am a rollerball pen and I love to be rude.

So be nicer to me or I’ll paint in the nude.

You will cut me a Circle from the edge of a Square

Or I’ll pee on your clothes. You’ll have nothing to wear.

 

Time’s up!


Let me see! Let me see. Do we have matching styles?

So you used some flat Squares and you drew some flat tiles…

And then out of a Circle you made a deep sink?

That’s so rude! I am leaking! I ran out… of… ink…


Last week I finished an online digital painting class at schoolism.com taught by the legendary Bobby Chiu. To show you how effective the class was, I learned how to turn this:

Into this:

And then into this!


All from the comfort of my home and time schedule using only Photoshop and a digital tablet.

I’m not a professional illustrator (yet), but I feel like I learned some amazing skills from a world expert on the subject and I felt like a kid having fun. So, I wondered “Could kids benefit from online schooling?”

So I thought of some benefits and drawbacks of online schooling compared to traditional schools:

Benefits:

(The online schools I include above do not target children per se, but I don’t see why their models couldn’t be adapted for children.)

Drawbacks:

  • Schools are not just about knowledge transfer, they ‘re also about making friends and getting exposed to the real world away from home.
  • It’s hard to enforce the “rules” when the teacher is not physically around.

As far as “enforcing rules”, a “virtual teacher” technology can easily be applied to record scores and progress as if the teacher was around (with deadlines, online testing etc.). So the most serious drawback of online schooling is the lack of the ability to socialize. Even though there are options that mimic social interaction online a la Facebook (schoology.com), unless kids leave home and meet other kids in person, they will miss out on a big part of life lessons if we replace schools with online learning.

So how about turning schools into “social activity centers” to get kids to play and interact together while they get schooled online? For the first time in history, we could give kids the opportunity (especially in developing countries) to get quality education from anywhere anytime at the fraction of the cost of traditional schools.

What do you think?

Follow

Get every new post delivered to your Inbox.

Join 188 other followers