views:

1239

answers:

20

I have been given the opportunity to give a small presentation to a group of young children about what I do as a software developer.

I have a few ideas kicking around for how to make this interactive and entertaining for them while still getting my points across.

Ideally I would like to capture that feeling of working with pure ideas, but also getting to see something move and work. I was thinking of using legos to explain some of these concepts, and hey what kid doesn't like legos, but I was curious if the hive mind here at SA has any better suggestions.

EDIT: I have about half-n-hour for the presentation.

+3  A: 

Junior First Lego League for 6 to 9 year olds should be a good resource.

kajaco
+1: Lego League and robot programming rules.
S.Lott
A: 

Lego reminds me Logo, the programming language with a turtle receiving drawing instructions.

mouviciel
+4  A: 

We used Logo when I was very young (though older than 8) in my classroom. It was great, and I remember it fondly.

I would recommend looking at a site like Kids Domain for inspiration. There are many other tools like Logo which allow for a real feel of programming, but a much more graphical, interactive environment which appeals to younger kids.

Reed Copsey
A: 

Try a "real world" application, say a motor and some lights controlled by a microcontroller. In a very succinct way they can see how computers interface with the world. And the code, even if written in assembly language would be brief enough for an 8-year-old to appreciate.

PaulG
+6  A: 

Something that works well for interactive learning is giving each student an instruction and having them execute that instruction on a given input. Like a human algorithm, with each person representing a line of code to get a task done.

The task can be something like make a certain object using Lego, and each student has a specific task, though that itself doesn't sound very fun...

I participated in something similar to this when I was first introduced to programming, except each person was an object rather than a line of code (it was to demonstrate OO principles). It was amusing enough, and I'm sure with the right task to do it can be fun for kids.

Welbog
+3  A: 

http://www.squeakland.org/ is all about this.

Tobias
+43  A: 

I've run a workshop for 11-13 year olds many times that works pretty well. I give the kids index cards with commands printed on them (eg "drive straight", "wait until 1 foot traveled forward", etc). The bottom of the card has the corresponding machine code*. I have the kids arrange the cards in order to create a program, then much like punch cards, enter the machine code into the computer. We run the code on a robot so they can see their program work (or not!). The kids LOVE it and I've never had a group (3-4 kids working together) who couldn't figure it out in the 30 minutes allotted. With 8-year olds you might give more guidance -- I can pretty much just tell the middle school kids to go to it once I've done a short demo.

This works best when you have at least 45 minutes, but I've done it in 30. If time is limited, put bounds on the activity (smaller instruction set, easier problem, shorter allowable program length). "Drive straight until a bumper hit, turn 90 degrees left, and repeat" is doable in 30 minutes and the kids have a great time hitting the bumper to make the robot turn.

*The "machine code" is a set of 8-bit opcodes - no more than 5 per card.

If you don't have access to a robot, you can have the kids tell YOU what to do as you pretend to be the robot... which can get a lot of laughs if they put you into an infinite loop!

This is much like LOGO -- but there's something about a robot that really gets kids excited.

amo
+1 this is just perfect !
+4  A: 

G'day,

You might like to have a listen to Nathan Torkington's excellent talk "fork() && exec(): Spawning the Next Generation of Hackers" over at IT Conversations on this very topic.

Quite funny in places and definitely an interesting listen.

HTH

cheers,

Rob Wells
+1  A: 

You make several groups of children, then you give to everybody an algorithm, and they have to execute it. For example :

child[1].InFrontOf(child[0])
child[0].AtRightOf(child[2])

etc...

This algorithm should draw a figure with the children, the first team to find the figure wins.

Nicolas Dorier
Seems like a nice idea, still it can get quickly too easy or too hard for the children. Maybe he should first explain how to read it. :-)
TomWij
+2  A: 

If you have a projector available, you might consider using Scratch and letting them help you decide what the objects should do. Scratch is very simple, quick, and visual. My 8-year old son really enjoys playing with it. Have then tell you what to make it do and then program it on the fly to do that.

Steve Rowe
+1  A: 

If you're going to use legos, get a lego mindstorm and make a lego robot. It's really easy. It was intended to be used to introduce children to programming, and uses GUI-based programming. I taught a class on those to young children once.

Brian
+1  A: 

You might want to look into Microsoft Kodu, this application is designed for the use of children to create simple games. Here is also an example at YouTube. Then you could demonstrate what you can achieve with programming. (If I press forward, it will do this...)

If your in a lack of time and money you might want to make it much more simple by programming a simple game for the presentation, then you can demonstrate changing some things and adding something new to the game. Or you could compile several instances and use it to show the progression being made.

Well, that is basically the idea: You want to show them that you can achieve functional things by typing some lines of code without introducing to complex things.

PS: Don't forget to include comments in your code, but not too much else they will be reading more than listening. Feel free to show your presentation and final idea... :-)

TomWij
A: 

Karel the robot(one link here ) is a concept that really helps people with no background into programming get to (some) speed. The concept of a robot moving in a world full of boxes is easy to understand even for 8-years old. And fun too!

Also, you can see here how a Stanford teacher does it(I think lessons 2 and 3).

rpSetzer
A: 

Very good/interesting answers.

You want to 1) make it interesting, and 2) get them involved "playing computer".

I taught CS at Boston College for 4 years. The intro classes were not too much different from your kids.

You need to convey the idea that computers are stupid, there's only a few things they can do, they only do exactly what they are told, and they do it one step at a time. (Corollary: they don't read your mind.)

My first-day demo was a home-built computer I made. It had an 8008 chip, a bit of ROM, and an I/O port. It sat on a little circuit board nestled in a power supply box containing a transformer, some big capacitors, etc. I hooked two speakers to the I/O port, and I would explain that it was running a little counter loop, after which it would click the speaker, and you could hear the speakers going click, click, ...

Then there was a little capacitor hooked up to the timer chip that controls the memory. I would unhook the capacitor, and suddenly it would speed way up, and you could hear the speakers playing a little duet.

They liked that.

Added: I'm presently teaching a friend's grade-school kid to program. We're starting off with GWBASIC because it is tiny, simple, and free. First we did a program to convert between Farenheit and Celsius. Then we did a program to print random insults (that's a big hit). Then we moved up to simple arrays and sorting, and he picks it up pretty quick. I'm thinking of moving to a C-ish language or maybe UCSD Pascal, before getting too many bad habits with GWBASIC.

Mike Dunlavey
A: 

Introduce the kids to the basic building blocks of every program. There are only three - sequence (statements, blocks), selection (if, switch), and iteration (loops like while and for).

zooropa
A: 
David
+4  A: 

I've had a lot of fun with the old Peanut butter and Jelly demo... Also, Alice (alice.org)

Brian Postow
Peanut butter and jelly demo?
David
Steve S
yeah. It works even better if you have a lab coat and goggles. Then you don't feel bad about exploding the bread all over the place and making a huge mess with peanut butter!
Brian Postow
+1  A: 

If you don't have to show only traditional approach to program, why don't you try programming by example/demonstration such as AgentSheet or Viscuit (Japanese page). Also I recommend visual programming like Pure Data or even Automator in Mac OS X.

Or if you prefer some conventional paradigm, I think it is better to present attractive results from lines of code instead of, for example, finding prime numbers. Please try Processing (based on Java) or NodeBox (based on Python).

puri
+2  A: 

Try http://www.robozzle.com/. Kids will have fun Playing a game, Answering a puzzle as well as learning how to do Programming.

Seshan
+4  A: 

What about doing a classroom version of MapReduce? Pick a task, say, counting word frequency. Start off by giving each kid a couple pages worth of text, and show them how to do a word frequency histogram, and get them all to agree it would take a long time to do by themselves.

Then, split the group into three sets: Mappers, Shufflers, and Reducers:

  • Mappers: Give each mapper a sentence or two, and a stack of index cards. Have them write one word per card, with the number of times that word appears in their sentence(s).
  • Shufflers: Have the shufflers go around the room, picking up the index cards from the mappers, and give them to the reducer they belong to.
  • Reducers: Make each reducer in charge of a range of letters, such that they're responsible for tallying totals for any word that starts with that letter. Have them generate a final histogram for the words they're responsible for.

I'm not sure what the minimum age level required to make this work would be, but it sounds fun:)

Scotty Allen
hmmm thats a great idea
ecoffey