Career Day for Elementary School Kids?
Chris Curtin writes "My daughters' school is having a Career Education Day next month and I'd like to do a presentation. My kids are in Kindergarten and Third Grade, but I could present to Fifth Graders, as well. How do I explain what a programmer does to the kids? I was thinking about building a web page for the little ones, maybe show the older ones some visual logic with VB, where I change a basic program and run it from my laptop, showing keyboard and mouse inputs, music, and so forth. I have VB6, Java, HTML and Windows 2k on the laptop I'll be bringing. Any thoughts on how to 'wow' the little ones and make the older ones want to learn more about programming?" If you were going to make a computer presentation to a class full of children, what kind of things would you talk about?
From there, explain that it's all building blocks. Hundreds, thousands, millions of tiny little pieces like that which all work together. Your presentation can be mostly handwaving and neat video clips or pictures. Just understanding that there are little details which add up to wonderful things is enough to capture their imaginations.
And of course, if they ask how they can do it too, mention the wonderful learning opportunities that can begin with learning Linux^W UnixWare, only $1399 a seat. Compiler extra.
Dear Dead,
If you come to my school, pleeeease pretend you don't know me. And don't talk to my class or my teachers. Ugh, if you embarras me again I could just diiiiie.
Love,
Your daughter
Vonal Declosion
...to bring a map of India with you.
My three year old daughter and I wrote a VB program together as a present for mom. It was exceedingly simple, just a few graphics like pictures of doors to click on which would pop up "Happy Birthday, Mom" types of message boxes, and several "Yes" or "No" question and answer radio buttons.
It was easy enough and basic enough and most importantly, pretty enough, for my then-3-year old to figure it out. She's now seven and still loves programming. I mean, really, think about it - doesn't VB lend itself more to an audience of elementary school students than your other examples (e.g. Java)?
But, anyway, I think the idea of some quick GUI development (using VB, ProjectBuilder, Qt Designer, whatever...) is an excellent one. People who started with computers after 1984 have absolutely no idea of how software works. (That's why media explanations of "open-source" are so labored.) Show them that windows and buttons and output happen because someone put them there.
What I'm listening to now on Pandora...
From there, go into something like, "Well, how does the computer know to make Mario jump when I press this button? How does it know when the bad guy gets jumped on and is squished? It follows instructions, and it's my job to give computers those instructions." Explain that you have to figure out what people want to do, then tell the computer how to follow instructions other people give it. Keep it very simple, and make it as visual and interactive as possible. Remember that the kids have an attention span of maybe five minutes, even with all the pretty visual aids you can conjure, so keep it short and sweet.
Finally, a web page for the younger kids probably isn't that great an idea. Most probably aren't familiar with the Internet, and a web page is much more static than a game. Add to that the fact that most probably can't read very well, and you have a recipe for failure. Remember to keep things as visually oriented as possible.
That's it. I'm no longer part of Team Sanity.
Love,
Your daughter
Karma: Excellent (Mostly due to me being a filthy whore)
You might want to consider deleting your daughter's Slashdot account.
I would relate programming (writing algorithms) to an everyday activity that most of the kids would be familiar with such as cooking.
You could even demonstrate a simple recipe like smores or peanut butter & jelly sandwich or fruit salad (for you Wiggles fans out there) and relate it to a simple program showing how each is just step by step instructions for doing something. One for making something to eat, the other for telling a computer what to do. The kids could get a little treat at the end :)
Logic is not Divine.
Start off the demo by showing them a simple game (pac-man, whatever). Then show them how a programmer modifies code to make the games they love. Then show them a few other examples. Throw in some Nintendo, PS2, and other references.
You'll have the kids hanging off the edges of their chairs. Always get their attention by starting off with what they already know and what they can identify with.
Doesn't matter if you're not a game programmer per se, just use that as an intro to what a programmer actually does. Then you can branch from there and site other examples that aren't game related.
I went in and announced to the class that I'm a gigilo. The teacher looked shocked, and after class she asked me "Why'd you say that?"
I replied "How do you expect me to be able to explain what a UNIX administrator does to kindergartners???"
I know, I know... It's an old (and bad) joke.
No no no kids like games and social interaction, /. readers and other geeks like blinking lights and shiny things.
Check out my life
...I'd have to re-emphasize some of the earlier posts. Keep it simple. Really -- keep it simple. While kids have a capacity for learning that is amazing, you DO NOT want to get too technical. You're not clear if you're presenting to K,3, & 5 grades at once, but that is a huge spread, and you're almost certain to lose either the K or 5th grade. If you're doing separate presentations, that'd be much better.
Take in logo (I think I saw an open source or downloadable version somewhere) and show them the direct connection between typing in a command and the logo turtle responding. Let them discover, o n their own, that when you type in RT 90, the turtle turns and when you type in FD 50, it goes forward. At that point they have a basic understanding that your commands effect the computer. Then show them a simple logo program -- maybe start with a long command line that draws a square, then load one that draws a face and run it. Let them see how complex it can get in stages.
After that, you can link the kind of program that controls a turtle to the kind of program that draws pictures and makes web pages. Focus on small stages. If you keep in mind things like the thousands of details you know, you'll lose them.
And remember, good teaching is often good entertainment as well. I'm not saying do a fancy show, but you have to keep them entertained to hold their attention.
Good luck!
...it sounds like you have a great way to get high schoolers to have an understanding and maybe an interest in computer programming. You already know what to present, because it's something you've been doing for years. What you need to figure out is that when it comes to children of the ages you mention it's going to take much less of what you like and much more of what they like.
Judging by what you wrote, you don't have any plan for presenting the material. You have an idea of what to present to each, but no plan on how to present it. I suggest you speak to the teachers of these students about how best to interact with them. Children are the worst critics and the easiest audience to lose. If what you do isn't interesting to children, they're going to make it known by either falling asleep, biting you, or biting their neighbor.
Bottom line is the best person to tell you how to engage these kids is the person who spends eight hours a day in front of them.
On a mildly related note, I don't think you have a chance in hell of getting the kindergarteners to provide even a modicum of interest. "Look kids! See how I'm typing even though none of your hands are big enough to use a keyboard? Look kids! See the words I'm typing that you lack the ability to read? Look kids! See how I'm putting strange characters around the words you can't read to change the syntax into a broken mess? Look kids! See how I'm trying to get you to understand nested functions which is a mathematical concept you won't learn for another four years?"
I could go on forever, but I won't. I just advise you to know your audience. The youngest won't care or be able to follow, the third-graders probably won't care or be able to follow, and the few fifth graders who care and follow will be at the level of an adult user who doesn't understand computers but without all the other worldly knowledge to enable them.
You have a very tough crowd with very low chances of being anything but a total bore. Good luck. And remember: know your audience.
You could use a Quake or Halflife editor and show them that they can make their own games. Now this isn't quite real programming, but for little kids their minds work with shapes and colors. They are just learning how to use words. But they are adept at building things with blocks. Making a simple map is basically plopping walls and ceilings down, like blocks.
You could show them how to make a copy of their classroom in the computer. Go to the room ahead of time and take pictures of the blackboard, bulletin boards, doors, whatever catches your eye. Use them as textures and eye candy. You don't have to make a full map, but show them that you can make anything with computer, including a copy of their classroom.
Fear Is the Only God
Face it,
With grades five and under(!), don't expect the kids to be wowed with logic. Try explaining the concepts of AND, OR, XORing, etc. to your children this evening. You said that your daughter was in third grade, so I'd expect something along the lines of "Daddy, that's boring!" Add two years to that and you'll get something like "Shut up dad, that's boring..."
Regardless, it seems to me that they won't care about seeing a program that you wrote. Let's say, for example, that you wrote the NT kernel on which your laptop's Win2k is based, as well as the Explorer interface. Singlehandedly, nonetheless. I doubt that the class(es) would be any more impressed by this than they would by a simple:
Hello, world!
Therefore, two options:
(1) Be boring and target the possible one or two outcase kids in there that might actually care.
(2) Make some sort of whiz-bang video, flash animation, or any other kind of neato hoo-hah.
The former allows you to stay true to yourself and your profession, while the latter plays to your audience in a pleading attempt to get them to care about what you do and reinforce your right to the oxygen you consume. To be perfectly honest, I'd go whiz-bang and play "Multimedia Content Developer" instead of "TPS Report Author."
Good luck!
-CSA
Have you heard of LOGO? It's a kid's programming language. You use a BASIC-like language to make a turtle draw things. There's java emulators. You should load it up and let them work on it. Show that changing 'Draw 0 10' to 'Draw 0 20' (or whatever the exact syntax is) makes the line twice as long.
Aside from that, games. There used to be 2-liner contests in old magazines, some of which made functional little games. Pong should be easy to program. Tic-tac-toe maybe. I doubt the code for checkers would be of interest to little kids, but you might show them simple coding for a tic-tac-toe game. Something along the lines of: "OK, you put your X in the upper left hand corner. What do you think the computer should do?" Talk them through the logical consequences - most kids should be able to understand 'if A does this, then B should do that'.
Depends on how much work you're willing to put into it. I think I'd just show up with some games and say "If you become a programmer, you can make your own." But then I'm lazy.
I first got into programming at a two-week summer class in 1990. The teacher asked students to write a "program" to brush your teeth or make a peanut butter and jelly sandwitch. One program ran:
Take two slices of bread from the bag
*teacher tears a hole in the bag and removes two slices*
Open the jar of peanut butter
*after a few failed attempts, teacher manages to remove the lid*
Put the peanut butter on the bread
*teacher sets the jar of peanut butter on the bag of bread*
I love being literal-minded, and that example emblazoned on my mind "Be specific, or the computer won't do what you want." Anything that could be that literal was an obvious match for me!
Running this example of programming will pique the interest of kids who think like geeks. It will also provide a concrete concept of a program to kids. Finally, it gives you a chance to look silly (an important part of teaching elementary school kids) while getting the kids to think about the way to solve the problem (the educational bit). And as a bonus, you don't have to carry a laptop and a projector.
I'm not sure how well kindergarteners would deal with this, but I think it would be a great exercise for both third- and fifth-graders. FWIW, I took that computer programming camp after my fourth-grade year back in 1990 when Apple II was a pretty cool thing. They taught BASIC and Logo, we built robots, and played with lasers. And now look where it's gotten me!
Ceci n'est pas une signature.
From what I recollect, its an object oriented language that works with Lego motors. Create your own robot...then show them how to program whichever part you want to move. Then let them modify the objects and the order in which they operate.
:)
When the kids go too far and the robot "crashes" off the desk, teach them about testing, and re-testing.
I'd skip the requisite "project/use case proposal to clueless mgmt" lesson until they become teenagers and are already jaded.
I started programming when I was in fourth grade. They should be able to understand some basic (that's basic, not necessarily BASIC) code. Just write some quick code to do some flashy stuff, and show it off.
There are several games out there where you program a robot to do things.
Mindrover (which you can download a demo of, for both Linux and Windoze) is one where you have to build a robot. IBM has a program where you can program a Java robot but I suspect that is a bit above them.
Another possibility which is a visual programming language that uses video as a paradigm (I read that and I have not seen it) is Toontalk which you can find at www.toontalk.com. The object of the game is to write a program to control a robot that solves problems. Its aimed at kids. Demo at website too.
There are actually several visual programming languages done by university research projects aimed at kids. Try searching on Google. However, many of these things are mac based.
Also, maybe shoot for something that paints a picture based on a program. One thing that may also work is a dataflowish programming language (think Khoros, there is one on freshmeat as well but the name escapes me) that does image processing on a picture. For instance, you could have a picture of yourself and a flow with a control that changes the color of you hair, or better, even, get a webcam, do this live and squash the face of the teacher. I once did whits with two bored kids of a colleague of mine and it was a great hit with the girls.
The dangers of excessive individualism are nothing compared to the oppressiveness of excessive collectivism
I'd stay at a more physical level than programming. Describe literally what you do. Everyone knows about computers to some degree like everyone knows about airplanes. I'd hit the extents of how computers touch our lives - really quickly. Maybe a book store versus amazon.com via the web. (Everything is information) But not much detail. The whole web poster.
Show them your work. (slideshow) I mean the basics - you work in an office. You probably work in a cubicle. There is a server room and L@@K!! at all those wires and blinkenlights. your desk. slip in a pic of a 60's machine room, maybe quote that IBM guy who said there was maybe a market for 5 or 6 computers in the whole world.
me as a 5th grader would have gone ape over some complicated diagrams - the kernel poster comes to mind.
have fun.
must... stay... awake...