Software Engineering Demo for a K-5 Career Fair?
gmjohnston asks: "A local elementary school is having a Career Fair in a couple of weeks and I
volunteered. The idea is for parents with various jobs and careers to show and tell the kids a little bit about what their's is, why they think it's interesting and rewarding, etc. It's to try to give kids a little early exposure to some of the diverse kinds of things one can do with one's life. I'm a software engineer, so I'd like to show something that has to do with programming or Computer Science, but which would be interesting
to an elementary school student." What would be the best way to illustrate what a software engineer does to a group of primary school kids?
"I'm trying to come up with something like what got me hooked way back when, which was when my Organic Chemistry professor in college showed me a listing of a Basic program (Basic Plus on a PDP-11/70 running RSTS/E if you must know) and I realized that, computers relied on a bunch of instructions that tell the machine what to do, and that if I could change the instructions then I could make the machine do what *I* want it to do! I'll have my laptop with me and I'll be at a table that the kids will be able to gather around and see the screen (or potentially do something themselves on the laptop, depending on what I come up with). Of course, showing them the kind of code I really work on (software development tools) would likely instantly bore them to death. So, the question is: What should I show? If other Slashdot readers have done this kind of thing, what did you do and how did it work out?"
So they can feel the atmosphere.
Bring loads of coffee in with you and feed it to the kids to get them hyper, give them all keyboards and glasses to simulate eye strain. Break their wrists to simulate RSI and get a megaphone with someone shouting 'code faster'...
Every so often you see a post from someone who's thankful that they learned on a C64, since it was possible to "know everything" about the system, down to the bit. For me, that same thing is true, except with a Tandy COCO1 (and later COCO2).
I found that the manuals they had, with the anthropomorphized computer dude, were exactly what I needed to learn. The funny thing is, those books were written for adults, but come across like child's manuals since it was assumed that even an adult would know *zero* about how computers work in the early 80's.
My recommendation for the kids is to have them see very basic principles in BASIC if possible, since it's so, well, basic - not that it really matters. What made it so exciting for me as a 8 year old kid was that it seemed possible to know and understand everything about the machine - especially since the book was comprehensive and it wasn't exactly huge. The combination of the cartoon character, the limited and reasonable limit on the total knowledge one could possess about the machine, and the simple, clear lessons engaged my child's mind completely and really sparked my imagination.
COCO manual and another one.
ps, mffp? (my first first post?)
I Want To Believe
Show them how to quickly switch the browser window away from /. whenever the PHB comes by.
Generally, bash is superior to python in those environments where python is not installed.
A basic understanding of how to speak Hindi...
Something like Povray or just plain old fractal generation and manipulation which can be done in about 40-50 lines of code - change the code show them the result - let them have a go.
----
"how am I supposed to tell my kid I'm an Software Engineer at MS"
But anyway, you could try and show them a simple Python program, or something like it
Python is fairly easy and pretty much "BASIC" like. You could walk them thru the construction of a Python program (something that calculates your age based on your bithdate or something)
www.python.org has all you need.
how long until
Bring a cardboard box and a chair and make them sit in it for 8 hours a day for the entire school year...
How about write a simple game which has easy to change features, like colors or something. Then, show the kids the game, and show them how they can change the game.
:-)
Probably an interpreted language would be best for this. BASIC had it's moments, back in the day.
My UID is the product of 2 primes.
Bring in some anime DVD's, some pr0n, an empty pizza box, and a crusty sock. If that doesn't convince them, I don't know what will!
Set up a little Basic introduction, the old 'Hello World' schtick. 'Help' them type out the code (all 2 incredible lines of it!) and watch them marvel in thier instant command of the computer.
Sit around and bitch about PHBs. That'll enthrall them to no end.
$6.21 is the number of the beast before sales tax. Meh.
The idea is for parents with various jobs and careers to show and tell the kids a little bit about what their's is, why they think it's interesting and rewarding, etc.
:)
The grammar Nazi parent won't have trouble finding opportunities to show what he does
Show them how to write a BitTorrent client in LOGO. All the kids are doing it.
SD
âoeWho knew something as harmless as willful ignorance could end up having real consequences?â
What would be the best way to illustrate what a software engineer does to a group of primary school kids?
It depends on the programmer. I wouldn't do anything to them at all.
What do software engineers do to primary schools kids?
/* This sig is disabled. Press CTRL-W to enable. Thankyou */
I can remember 22 years ago when I was 10 years old watching my math teacher at the time programming in BASIC on the one Commodore Vic-20 that we had in the classroom. For whatever reason, I was fascinated with the mystery of how this guy knew the right things to type in to make the computer do what he wanted.
I think the things that fascinated me most at the time were seeing how programming languages could be used to create games. I spent many hours on my Commodore 64 typing in BASIC and ML source code from magazines like Compute!'s Gazette.
I'm a big tall mofo.
This seems obvious to me... Logo Primer
Demonstrate real-world applicability with a toy robot arm and a poster of a few industrial robot arms, which presumably work the same way.
Without programs, a computer is a doorstop. You know that. Help them know that. The rest is just talking about the incidentals, like whether or not your boss allows hackey-sack near the water cooler.
[
Dilbert in front of a class:
"I work in a cube, its kinda like a bathroom stall but the walls are lower"
"I spend most of my days worring about the electronic fields from my monitor are killing me"
by the end all the children are in tears..
I like this approach. We have enough competetion, the fewer of us there are the more they'll have to pay us.
Show off a game, or somethign shiny. Gotta grab the kids with the shiny these days.
my soft eng. career started out with my curiosity towards video games. most kids are into video games, why not show them whats really under the hood of a game, i.e. textures, 3d meshes, c++ code, etc.
Then I'd color it with bright primary colors and cel-shade it because cel-shading is fucking RAD.
Computer games are of course always a possibility (and a good one at that), but there are other options. I make music visualizers for audio players, and I find younger folks take an interest in it all the time--from all ages. It appeals to kids that are into math and science because, to them, it's something really cool you can do with subjects that are geeky. It's something to consider, at least.
G-Force music visualization
Illustrate the principles behind debugging. Bring in a fellow software engineer and hit him with a bat until he does what you want him to do. Every once in a while, pause and look at him closely. Appear perplexed at first, but then let a look of realization and amazement come into your eyes, tap him lightly with the bat in four places, and have him hum nicely before being replaced by a younger software engineer that has to go through the whole process all over again.
Today you'll watch me write a perl script to convert this collection of invoices to a single master invoice ... any questions?? No ... then let's get started ... oh and feel free to take a blunt object to the back of my head to put me out of my misery ...
Take a globe with you. Point out the United States on the globe, then spin the globe and show them India...
Good security is based upon reality and common sense. Common sense is a function of having common knowledge.
Some bells that ring, doors that open and shut, etc. with electrical switches and a simple basic program that alters the path of the marble.
to show the kids who will replace you when your job gets outsourced to India.
I'm honestly not whipping out a stupid Political Correctness stick, but try to think of demonstrating something that has a big /COOL/ factor for both sexes in your class, or demonstrate two things, each of which might appeal to either sex. Demoing Madden 2004 might work for the boys, but will probably be a bore to the girls.
I'd suggest showing off software about music, the WWW, instant messaging or IRC, or non-NeoMasculine games a la Madden.
In the end, consider asking any kids with your family or friends what they think is cool PC-wise. They should be able to give you insights that an adult wouldn't have the perspective to realize, and will help make your presentation a winner.
Or turn up in a sports car with a leggy blonde on your arm.
(You may need to rent these items...)
1) Not one of them is going to be impressed by a binary search tree, and explaining it to them will probably make them cry (it's even had that effect on some CS students).
2) "Look at this great UML diagram kids!!" How do you think that will go over?
3) A great deal of them are probably not going to like math very much, so it might be a good idea to gloss over the ridiculous amount they'll have to pick up in their lifetime.
4) If you really want them to listen to you, show them pictures of your new car that your high-bracket salary bought you. Tell them about your gigantic TV, and all the video games that a software engineer can buy (or even make). Otherwise they aren't going to give a flying fuck, because to be quite honest, kids who are still in the age range of learning to tie their shoelaces aren't going to be too interested in something that abstract.
." What would be the best way to illustrate what a software engineer does to a group of primary school kids?
Pick a random Indian kid and put him in charge of the stall halfway through.
Slashdot: News for Nerds, Stuff that matters only to them
Kids love to solve puzzles. Well, some of them at least. Bring Towers of Hanoi (physical plastic). Let them solve it (three piles of 5 disks). Then let them figure out the solution for the general case. Help them a little bit. Start with 2 disks and build it up from there. Finally, let them code the solution in Python, or some other intuitive language with an easy syntax. Prepare some routines that visuallize on the screen what's happening (e.g. moveDiskFromPileToPile(fromPile,toPile)), so they actually see it work. Disclaimer: I've taught chess to primary school kids, but am no good in Towers of Hanoi whatsoever.
Explain to them that the entire world is run by computers, and by doing things in the computer, you can affect the "real world". Then hack the school lunch network while they watch and transfer everybodies lunch money into your kids account. "And now you all have to ask Tommy for lunch, because Tommy knows computers, and you don't!" Not a direct endorsement for software design, but it'll get them to see nerds in a whole new way. Oh, then teach your kid how to fight.
1) Give kids Lego Mindstorms
2) ???
3) Profit!
You could show them how you use code to control things - Like with Lego Mindstorms.
Slashdot needs Geekcode | Can anyone recommend any good SCIFI? My tastes: Foundation, Startide Rising, CITY, Ringworld,
Bring some donuts, mr. pibb. Sit in your chair, do nothing, and complain about deadlines.
Don't forget your wireless laptop to sit and constantly reload slashdot while you're supposed to be working. Also you can work on your 'blog' on how stressful work is.
Show them some nice, high-end appropriate games that they could possibly make in their future.
...
Just don't brint Doom 3 or Far Cry
I fell in love with programming watching a math teacher work with his trusty Apple II E running BASIC. What fascinated me was how he could get this machine to do anything. The biggest thing is to show how you can combine ideas to make new ideas. Something like LOGO hooked up to a robot would fascinate kids.
An aside: When did people in the field get so cynical. The field has changed don't be soo gloom and doom.
You could make up a simple programming language and write an interpreter for it and let people play around with it.
Something really simple that rewards the user with "cool" stuff with just a few lines of code.
Laptop, Projector, Qbasic talk about "programming" as if it were what is going on under the hood of the car. YOu can prepare in advance some simple qbasic programs and show them how to write a graphical hellow world prgm. They'll eat it up!
Of course, you could take the coward's way out and show them Half-Life 2, and say, "if you're a programmer, you can make games like this!"
If you want to get the kids interested in your job, pretend to be a fireman.
Pulp Audio Weekly - Geek News and Reviews
Watch Uncle Bill open the valve that feeds water into the methyl-isocyanate tank. Can you say "RUN!!!"?
Mea navis aericumbens anguillis abundat
I don't know how long or indepth this fair thing is, so you might have to adjust. ... which doesn't mean their to stupid to understand the interessting parts of what you do! In fact, 9 year olds can be even more on top of current scientific/technical things than the usual grown-up. It's just all about explaining it in a way that it doesn't bore them to death.
You should completely splitt between what you do on your job and what computers can do. Prepare a show-and-tell only lecture and pratice to explain things in a way kids of this age will find interessting. Maybe tell a story or two of interessting tidbits of your profession in general. Keep in mind that they (children) have a different sense of humor and less concepts of apstraction
The other thing is a practical one, which lot have provided suggestions to allready. I'd like to point out that you might want to explain to someone who isn't the usual future geek and all into gameboy and electronic toys allready the nature of computers and how to program them. I'd suggest a simple program that displays the fascination of automation. Maybe a very simple, tile based turtle program enviroment with your own simple set of commands (go, stop, on, off, forward, backward, left, right, north, south, east, west,... you get the point). It should be good enough to display the basic concept of computers (programmability and automation) but be easy enough to do in a time where a group of kids each can get their own shot and everybody can watch without getting bored. Both units, the show and tell and the little programming part shouldn't take any longer than 30-45 minutes each for a group of 10 children. Anyone more curious should have a chance to ask you more questions though.
My 2 cents from a geek who's been a teacher for some time aswell.
We suffer more in our imagination than in reality. - Seneca
7 comments, no stories? -1, nullo. And buy an ad.
~~~
I think you want to write a program which shows the power of computer as well as appealing to kids. Moreover, it should show that there is lot of thing to be done in computers. In such a case, I would like to write an automatic kid-conversor. Code a couple of sentences and contexts, so that the program is able to reply pretty well for average kid but the samrt ones would discover the flaws.
Artificial intelligence in action might make one of several excellent demos that you could show.
AI in JavaScript for MSIE-5 would even let the kids print out transcripts of their interaction with the AI Mind.
I've been thinking about this, because I need to do the same kind of demo for a girl scout troop. I think the best thing would be to build a dynamic web page. Run Apache, perl, and a browser on your laptop. It would be easy to make dramatic-looking changes that would grab the kids' attention, and they will probably be familiar with the interface. While many of us had those transendental moments with a Trash-80 or a PDP-8, a lot of the kids won't end up being computer programmers. I think a less technical demo that outputs to something other than a text terminal would be more approachable to more of them.
Show 'em how to read slashdot!
Bring a copy of Mindrover! Familiarize yourself with ICE first, and download some rovers. ;)
Not only could the studens program the rovers, they could wire them using the built-in system.
You might be able to find Mindriver in some ancient bargain bins, or you'll be able to order it from Cognitoy.
I played this and thought about it all the time during elementary, and I'm a coder now, so who knows?
Short of that, get a copy of something like Unreal Tournament 2k4 and show them how to build a level and make a weapon or something.
Just remember, even if 'you' aren't only coding, doesn't mean you aren't a software engineer. Be creative, they'll surprise you.
Teach them something they can at least think of using to their enjoyment, and they probably will.
Everyone else will probably have better ideas about how to demonstrate software engineering than i do, but as an Elementary Ed. major, my quick advice to you is be excited about what youre showing them. Kids are like little radars when it comes to attitude, and youll rub off on them if you look passionate. Have fun :)
I have a friend who worked on a porn-site. Are you catching my drift? ;)
Anyway, where I am finishing my latest contract right now, I could show the kids what it really means for some people to work in IT industry. You know, a guy walks into the doors of the company as a junior developer, spends a year kissing up, licking ass, sucking dick whatever it takes. The guy becomes a 'team lead', and is given powers of basically a project manager for multiple projects. Well, it's easy enough since most people in that dep't are contractors and he is a perm. Now he is the one who approves the hiring of contractors, obviously he has a couple of small shops who he hires from and they pay him per person per hour (under the table.) Now he doesn't have to be a programmer anymore, just a 'team lead'-'manager' and he makes all the money anyway.
So there you go, kids, become junior programmers, find yourself a company like that, take over and collect the green.
It is a very good business plan indeed.
You can't handle the truth.
Show them an Apple. And show them the cool stuff. Some ideas: Solid software like "delicious library", which can scan in a bar-code via a webcam of your book or DVD, connect to the net and download the image and relevant details.
And how about Bluetooth with a Sony Ericcson phone being used to act as a remote control and running iTunes on a powerbook from the back of the room!
I don't want to read
You need things:
On the whiteboard you write the Requirements:
The CPU is only allowed to execute instructions that are written on a whiteboard by the Engineer.
The CPU is to be as literal as possible when interpreting the instructions - so if the instructions are:
Then the CPU should pantomime throwing something, because the Program does not include the instruction "Pick up the ball".
Start with just the "Requirements" on the whiteboard. As the kids come up, you explain the rules, and let them tell you what instructions to write down.
You can even have a bit more fun - if a kid starts suggesting your standard juvenile crap ("Have him scratch his butt <snicker>") you can pull a Donald - "You have been caught goofing off at work - YOU'RE FIRED!".
If you are real meanie, you can even do more of the experience:
www.eFax.com are spammers
mostly what u do is bat off liars and the ignorant from selling lots of expensive worthless junk to the government and/or your company.
I think most have passed over a major part of this article. Cliff has a kid! That means he's..."done It".
*blushes and giggles wildly*
http://www.squeakland.org
http://www.squeak.org
-- Cerebus
On a slightly related note, I knew a kid who, after watching a man drive a big truck up to his parents' house and operate a bunch of complicated machinery, told everyone that he wanted to pump out septic tanks for a living.
... and demonstrate how you cry silently into it each night.
Show them how you make your TPS reports, and hand out memos about the cover sheet.
When I was a young kid, very many years ago, I was introduced to computers and programming in a summer school for bright students.
We were each given (or made, I don't remember) a long strip of paper about an inch or two wide, with lines making it into a long row of squares, like a single row from a page of graph paper. Each square was like a memory location. We were also given a paper clip that acted like the instruction pointer.
There was a simple instruction set, I think they associated numbers with instructions, like move forward or backward so many squares and simple arithmetic. The whole class together worked through a simple program.
There were some downsides to this. Some of the kids were totally lost on what we were trying to do. So we had to go real slow which then made it very boring for me. But the upside was that when it was over, I understood how computers worked and that simple model has helped my throughout my life as a programmer.
The key is to be really prepared and work it all out ahead of time. Make sure you have the instruction set and the simple programs all worked out ahead of time. You might want to practice it a bit. Keep it simple. Treat it like a game with rules. Forget about being true to Turing, instead focus on giving the kids something they can do and understand.
Not all of the kids will "get it". But those that do will really understand what programming is all about. Especially when you combine the simple Turing machine with gee-whiz-bang stuff on your laptop.
We don't see the world as it is, we see it as we are.
-- Anais Nin
When I was a kid and saw my dad programming, he said "I think I can use this to make games." Boring strange looking text on the screen was suddenly a way to do something I was interested in. Software isn't an end unto itself (for most people) but a means to something they're interested in. Games are universally interesting to kids, though you may find another interesting topic and regardless, you should tell them how software can also be applied to all sorts of other things they may be interested in.
" What would be the best way to illustrate what a software engineer does to a group of primary school kids?"
Reprogram them.
Kids will like
1) Coffee
2) High-resolution displays
3) Violent video games
Tell them that you get to drink coffee, look at high-resolution displays, and make video games.
The Computer Science Club at Boise State University just did a presentation for ~6th graders. We presented on the inner workings of AI by showing them the complete production of a evaluation tree using a java program we wrote.
Here is the download page for it. (I know I know! The site is default template. We just setup the new software last weekend so give us a break =)
Not sure if this helps younger kids get fired up but I did work for 6th graders. =) Its also fun to watch it generate and draw the tree.
Then get people to play 20 questions with the computer. You can type their questions in and out pops the answers. I was completely fooled by a 10 line basic program and spent the rest of the day designed code -- even though I'd never used a computer.
They're only young, at least give them a chance to have a life when they grow up. In fact, it's probably your moral obligation to scare them off software engineering -- I wish someone did it to me.
Squeak is an environment that is meant, among other things, to be used to teach children about programming and computers.
It's difficult to explain what it does. If I understand correctly, it is at the same time a "personal 3D environment" which can be shared, a customizable programming environment, a kind of window manager, and a teaching tool.
The special thing about it is that any part of the environment can be edited on the fly, and reprogrammed/modified. This was demonstrated by Alan Kay at his Turing Award Lecture last year. There is a stream of the lecture, although it doesn't work for me right now. The most impressive parts of the demo were near the end, so you might want to watch the parts in reverse order (or watch all of it, it was really good).
There are some examples of simple apps that can be created in the Squeak environment on the website, these should be just the right thing to impress the kids.
Wenn ist das Nunstruck git und Slotermeyer? Ja!... Beiherhund das Oder die Flipperwaldt gersput!
Seriously. I did the same thing for my oldest daughter's class when she was in the 2d Grade. I brought a laptop with Borland's C++ Builder, and had a short looping "Hello Class" type C program. I talked about binary and used light switches as an analogy (on, off) and let the kids look at the code, alter the code by typing in their names in place of "Class", let them recompile and run the program.
The trick is to keep it simple, but not too simple. By the end of the class, I had at least three kids that could predict what the next binary number was going to be, and they all liked seeing their names appear on the screen after they got to "code". Make it fun, and the kids will love it.
Wonder what the fair will offer for those kids whose parents are unemployed, homeless or generally in fear of losing their jobs? I hope the fair is fair, and covers both sides of the ups and downs of a job fair.
--- Old Time NeXThead
Even better: StarLogo.
Runs in Java, you can spawn hundreds of multicolored logo turtles and make them all move in sync (or randomly) using the same 5-line logo program from the console - type in a line and watch the turtles obey.
Plus, they have ready-made projects (Click on Projects from the main page) that are all set to go, simple and super-cool visually, from "Slime-mold cells aggregate into clusters, using a chemical pheromone" to "Diffusion Limited Aggregation. Create fractals with simple rules".
Thats what I used in a similar situation - the kids LOVED it.
Or... Mindstorm - less abstract, hence IMHO for the beginners could be more attractive. And... you can keep the kit to play with it after the fair ;-)
For my thesis project we are using lego mindstorms to build a maze travelling robot.
The lego RCX Invention system is really cool, but somewhat pricy. The default lego programming language is a drag and drop, connect the boxes type of graphical languages so kids could play with it all day after you do a quick presentation.
If you wanted to get more control check out BrickOS (C compiler) or Lejos (Java compiler).
Cheers,
Chris
- Don't use BASIC
:wq!
- Don't use LOGO
- Don't use computer games
Are there any Software Engineers out there that use BASIC or LOGO? Don't use 1980s metaphors. And, how many jobs are there that program games compared to the vast majority of corporate programmers.
IMO, show them real stuff, like behind the scenes of an eCommerce site to buy books or buy music online. Or show them conceptually how messenging applications work. Some software engineer had to have architected the application.
You have to use alot of coloured diagrams to get the picture across; heck show them a real UML diagram; these are dumb enough.
How about modifying one of the kiddies favorite web pages? Save a copy of a page from a Spongebob or Disney-related site, make some changes (font, color, etc.), and viola! It's not programming per se but I think they'll be able to wrap their brains around it.
Here's one that my wife uses (she's also a geek):
Decorate sugar cookies. Have kids give instructions. Do EXACTLY what they say. Gets the point across quickly how you have to be exact when you tell a computer what you want it to do.
Your grammar and spelling are too good. Eveybody knows software engineers can't spell worth crap.
I've actually done this at the local schools.
It's a great deal of fun, and believe it or not, it won't bore them. Adults fear engineers (especially software engineers) because they think what they're doing is something that they cannot do.
As a result, they actively ignore your attempts to educate them. They think it's just out of reach and would rather appear rude and bored than stupid.
Of course, kids don't know this yet. They're fully willing. They most certainly will understand graphs, functions, tries, and so on. They'll understand it because [as we know] it's not hard, and they're not yet programmed to avoid it.
Show them LOGO; Show them C; Show them the inside of what they think a computer is, then smash open the hard drive and toss the platters around.
They'll love it.
Show them what it means to hack, and how much enjoyment it can bring. Show them your adhoc EIDE hotplug system (so they can try it at home) - show them anything you can. They most certainly will follow.
I must say, there's nothing quite like a third-grader asking why we "don't just all use assymetric cryptography all the time", or how the world let Ben Franklen get away with messing up the plus-minus on battery schematics.
The teachers monitoring you will roll their eyes, but the kids _will_ get it.
There are people who build the bridges and there are those who engineer them. What are you? There is a big difference here and unless you are going in to talk about Engineering then say you are a developer.
I've got my BS in CompSci and just my thesis away from an MS in SW Engineering, there is a big difference. My advice, tell them you write programs. Convey that programs run stuff like the bank machines, coke machines and games. Explain that programs are all around us.
Q: I am short, useless and provide no value. What am I? A: a sig
I remember back when my elementary school had a job fair (I'm currently a senior in High School, so this wasn't too awfully long ago). There was a programmer that attended it, however, he really didn't do things in a child friendly manner. He showed us examples in Visual Basic, a "paint" type program if I remember correctly. While I was already interested in computers, I don't his presentation really drew in many others. If I were you, I would start by showing them simple games, and I would highly recommend Python as a language for them to start with. It's syntax is so clean and readable that it should be something that they have a good chance of being able to pick up on if they have an interest. I would highly recommend the book "Python Programming for the Absolute Beginner" as a starting point. For anyone with experience, it is a nice brisk read that will get you up to speed, and for the beginner it covers damn near everything you would want to know. Also, the majority of the author's examples in the book are games, which helps with motivation. While the majority of this book is command line apps/games, it does go into TKinter and PyGame in the later chapters.
Kids get computers, they use them from a young age. They might not know the details, but they don't know the details on how the dishwasher works either.
What you bring to the table is something else. Programming opens up the possiblity of control, something that kids don't get much of.
I think your on the right track, show them that they can make the computer do what they want. This is what made programming compelling to me as a child.
As to how, I know it is not as powerful as some other choices, but have you considered just using HTML? I know it isn't a programming language in the strictest sense, but it doesn't take much to show the basics and it is both usable and useful. It would not convey much programming, but it would convey the basic idea, computers obey coded commands that you give in a special way.
I have to go with the basic game idea from up there. One easy game idea might just be an old turn based fighting engine from a game like Final Fantasy 1 (before the time meters appeared). Pretty basic, the kids would see it's a video game at least.
That's what got me into computers.
Show them TuxRacer or something, and explain that it was made by a bunch of people like you.
Last week I went to one of these job fairs here at a local school. I thought that I would have a pretty good booth because I went in uniform with a lot of really cool tools (Air Force Meterologist), but all they cared about is what they could touch. I had some really cool videos and .avi clips hooked up via laptop and projector, but that was almost more trouble than it was worth.
You will have a hard time with the kids because here they let about 30 kids in the room at a time with very short attention spans. For your booth, it would seem that you should be one on one to really explain your job.
On another note, I found that the 3rd graders were interested for about 20 seconds and the 5th graders were too busy trying to impress each other. The 4th graders were the best group.
Good Luck!
2) Teach them how the local unemployment system works, do they need to call in, fill in a card, what?
3) Teach them about the cult, err universities, that will suck the money right out of their pockets with a vacuum cleaner, in exchange for reading 150$ textbooks with a disgruntled professor.
4) Teach them that about 90% of what they paid to learn in the cult will be a) useless, b) forgotten in two years as all you can get are entry-level jobs so when you *do* get a good job, you have to learn over again at your own expense anyways.
5) Teach them that working in a field that involves cheap commodities like computers and software and is saturated with cults and people, will mean they have to compete every day for the rest of their lives to fight for crumbs.
6) Teach them to interpret HR "requirements" like "5 years experience for 1 year old software": it means HR lives on Mercury, where the year is 88 Earth days.
7) Teach them how to make a CV that's full of lies that can't be contradicted (because everyone else does, because of #6 and #5).
8) Teach them how to suck up in interviews, and how to handle the pseudo-scientific clap-trap like graphology and personality tests that pervade the HR field.
9) Teach them to leave computers at home and get a real job, like starting their own business.
Hi,
I've done this twice for my daughter's classes. One thing to remember is they are kids just learning basic math and science, so logo or general programming doesn't go over well.
Instead, tell them that you write instructions to the computer to make it do things. For the K-2 group, pretend to be a robot and have the kids tell you how to walk across the room and pick up a book. Tell them you only have a few instructions like 'lift up left foot' , 'put down left foot', 'bend over' etc. It was a great amount of fun having the kids trying to tell you how to walk. When what they asked didn't make sense, answer "I don't understand that"
For the other kids, talk more about how something like a video game controller works. Not to the electricity level, more about how 'X' and 'A' together are commands to jump etc.
Good luck and have fun.
Chris
One of the first programs I learned and understood was an Apple ][ basic program called Horses. The horses were shape tables with assigned colors to various parts (body, head, legs), and the shapes were set to move about the screen using a simple edge reflection algorithm -- the bouncing ball sort of thing.
Try setting up a simple Visual Basic (insert preferred demo language flames here) program for this, using small animal icons for actors.
First, one critter moving x-axis. Then add a line for y-axis. (You can change things!)
Discussion - bounce speed/distance; change demo code (Need for learning Math)
Discussion - random angle; introduce x/y modifieres (Computer can do what you tell it)
Discussion - icon displays; change critter (Behold the Power of Coding! Muwhahaha...)
Discussion - multiple actors; add critters (Shows code modularity and reuse)
Question - What would you like to see the animals do? Discuss and code.
Fish, meet hook.
Pacifist paratroopers yell, "Ghandi!" when they jump.
I have seen other slashdotters making the suggestion to bring a robot arm and then letting the kids interact with that arm using a programming language (i.e. LOGO-based).
I don't think that this will make the right impression on kids. Robotics is only one of several interesting hardware/software/compsci fields, but are you using a robot arm on your job every day? Though so...
(If you do, let me know. I for one welcome our robot-arm wielding software overlords!)
Don't get me wrong; I'm not saying you should pull up vim and code in C! Rather something with a nice "whoa! factor" that is still applicable to your job?
Bring a couple of devices, an iPod, a serial adapter, a mouse, and have a couple of demos ready. Explain how MP3s work. Something tangible is much more interesting!
I guess what I'm trying to say is that you shouldn't give the kids a wrong impression about your work. Be honest. Those little buggers know when you are lying to them.
"All you have to do is be fragile and grateful. So stay the underdog." Chuck Palahniuk, Choke
Make a simple program which does this:
Child types in name
Computer says "Hello Emily, How are you?
Child types Fine
Compter says "What is your favorite subject?"
Child selects from list
Computer prints/shows picture of subject with text over it saying "Emily loves Math"
Don't underestimate this simple solution. What you want to show the kids is what you do on their level. They will never be able to understand complex algorithms and the reason why you use C over Perl over ASP.NET. But if you show them something which uses their name and interacts with them they will love it. You can then explain you make these sorts of things at your work.
Quality Hosting e3 Servers
You can show them what a software engineer can do. I would show them some code, then show them a game and say that that code made that game. Try to associate something kids know already with what you do, and I think games is the way to do it.
-----BEGIN PGP SIGNATURE-----
12345
-----END PGP SIGNATURE-----
Get a copy of Karel the Robot or some similar programmable robot package.
Back in the days of DOS, everyone had qbasic on the machine. These days qbasic is no longer included with Windows, although there used to be some dostools (?) package you could get with all the old stuff. So where would kids get any programming tool on their computer? No basic, and, hell, even no 'debug'! (remember that? :) Looks like the next generation is not expected to program anything. Perhaps we could petition Microsoft to start shipping some type of compiler/interpreter with Windows?
I would focus on explaining them what programmability is. Lego Mindstorms has already been mentioned and is indeed a very nice way of demonstrating this. A somewhat simpler idea, maybe more suitable for younger kids, is using a programmable car. My kids had one a few years ago, it was called a "Turbo Z RoughRider" (sorry, couldn't find a better link). It had some buttons on top you could use to enter a simple program, like 'fast forward, fast forward, turn right, turn right, turn on lights, backward, stop" and then run that. Much more fun than a car with a remote control, if you like programming, and a very good way to demonstrate what it means for a thing to be programmable.
"Money is a sign of poverty." - Iain Banks
Guido van Robot is a kid-friendly procedural programming environment written in Python. It is partly written by students for students, and features a grid-like world with a 'robot' icon (a triangle that has the letter 'G' in it) that can move around, walls, and 'beepers' that can be picked up or dropped.
Interestingly enough, this setup is actually Turing-complete.
The real Webmaven is user ID 27463. I don't rate an imposter, because my ID is such a lame-ass high number.
tell them that your job is the last refuge for the honest, in today's world full of deception and corruption, that writing programs is the oasis of sanity in a world gone bad. the computer (and the computer programs you write):
tell them what you do can be applied to how you do it. as you write programs (and fail to write programs), you can improve your craft and (given a certain approach and a little luck), you can write programs to improve your craft. this is like "go go gadget grow" for your soul.
tell them no other job has this potential.
Typing on a computer isn't all that exciting and isn't all we do. I would tell them that you first spend time talking to people who need their computer to help them with their jobs. Then you need to draw pictures, like a brick and mortar architect, to plan your program. The you need to give the computer lots of simple instructions to build what you drew.
If you're going to have some code with you, you could make it something interpretted and graphical. If you're a java guy, beanshell might be the way to go.
Still, I would put make sure to acknowledge that most software guys don't spend 8 (10) hours a day in front of a computer hacking away. Most of us work in teams were talking to one another is an important aspect of what we do.
They won't *all* end up EA employees ...
When I was little, I remember my first program was the old guess a number game. You know, the computer picks a number between 1 and 100 and you try to guess it. (It tells you higher or lower). I remember actually being able to understand it and thus this is may be appropriate for younger audiences. If you'd like to modify the program, you can change the bounds (from guess between 1 and 100 to guess between 1 and 1000). I also think you could write this in 10-20 lines of code (very very short!)
Lastly, you could discuss the strategy of the game and how to win the most quickly (ask the question "Using this strategy how many turns would it take at most to win?"). You can call the strategy an "algorithm" and you've taught them more CS than they'll learn for the next 5 years.
-- Political fascism requires a Fuhrer.
I have to make a major plug for Karel the Robot, which is the software package I use to teach logical thinking and basic OO design to my intro students. Karel is highly graphical, object oriented and (more or less...mostly less) language agnostic. I'm not sure what language you'd use, but there is a VERY easy to learn Java Karel library here.
In fact, I have an idea for your presentation. As part of my unit on looping and recursion, I've written a set of classes that generates a maze that Karel has to traverse. You could use that, write a little program to have Karel find his way through the maze. You can them show them graphically how the maze is generated and how the robot works its way through the maze, finally showing them the code. If you're is interested in doing something like this, reply here and I'll post the code to my website.
-Troy
Just get a sign and hang it around your neck.
;-)
"Will Code for Food - my job went to Bangalore!"
Have you compiled your kernel today??
I was asked to do something similar for computer science. I came up with this swish presentation. It's good for a 20 minute timeline and students will recognized some of the pictures. I don't think students at that age are thinking too much about career opportunities but it does give them some exposure to careers other than the "guy/lady that hangs around the school fixing computers".
The Lego robots are incredibly useful for demonstrating how programs are written so if you can get a few take them along. Kids can take turns programming the robots to do simple tasks and then they can all watch the results.
No one ever had to evacuate a city because the solar panels broke!
http://www.bls.gov/oco/ocos267.htm
As many of the people who read slashdot know, the software industry in the USA (and I'm guessing Europe too) has suffered from ousourcing. I've read the US Department of Labor's Occupational outlook handbook for it, and one thing I've noticed is that it's always written in a dry, politically neutral style, which leaves the MEANING of the information up for interpretation by the (hopefully skeptical) reader. If you don't read between the lines, you'll not get an accurate picture of a career field from the handbook. I recommend actually talking to both happy people and disgruntled people in a career field before deciding whether it's what you want. That said, read on for info on software engineering from the handbook:
Computer software engineers are projected to be one of the fastest growing occupations over the 2002-12 period.
Computer software engineers held about 675,000 jobs in 2002. About 394,000 were computer applications software engineers, and about 281,000 were computer systems software engineers.
What they don't say is how many of those jobs are held by Americans, in the USA. IIRC, those figures come from employers, and so if an American company hires 500 software engineers, but they're all from India, the USA government will still proudly announce the addition of 500 new jobs to the US economy, when in fact, those jobs are actually overseas, and they're actually hurting the USA economy by removing money from it. Welcome to the world of political spin, and half-truths.
An increasing number of computer software engineers are employed on a temporary or contract basis, with many being self-employed, working independently as consultants.
What they don't say is how many of those jobs will remain in the country that created them.
As many of the people reading this will probably already know, in the software industry, "consultant" or "self-employed" typically means "unemployed" or "underemployed". Companies iin the USA aren't willing to hire permanent employees, so the easiest way to get at least SOME work, is to be an independent contractor or consultant that can be easily dumped when you've worked yourself out of a job. Of course, it's not always like that, but it's like that often enough to make people think "unemployed" when someone says "I'm a consultant" at social gatherings.
Also note that those who the government considers self-employed are counted as employed, even if they haven't earned a check in a year, and unemployed people who NEVER find a job in their field are counted as employed as soon as they're no longer eligible for unemployment benefits.
Job growth will not be as rapid as during the previous decade however, as the software industry begins to mature and as routine software engineering work is increasingly outsourced overseas.
As with other information technology jobs, employment growth of computer software engineers may be tempered somewhat by an increase in contracting out of software development abroad. Firms may look to cut costs by shifting operations to foreign countries with highly educated workers who have strong technical skills.
The truth comes out, at least a little. Remember, these are bureacrats and politicians writing this, so when they use words like "tempered", what they mean is "holy crap, this is important, read this section twice!". You should probably also take a look at Tomorrow's Jobs to get an overview of the entire USA economy. Notice that even though the USA has been in it's worst economic condition since the 1980's, everything is rosy in nearly every sector, according to the goverment.
I'm not a software engineer, and I could be biased in some ways, so here's a little about me. I work in manufacturing, which has been suffering longer than any other sector from outsourcing. The only sector that's decli
Grand Theft Auto
Show the kids a nucleur power station's control software in action. Has loads of prety lights and colours and the kids just love playing with all the control's, levers and switch's. Garanteed to be a blast. :D
Legos !
The programmable Lego kits are kid magnets.
I.E. "toys"
Have something that runs around avoid edges while searching
for a loose block. Anything mildly interesting with a a bit
of logic.
Have the program printed out (big letters) and a few xerox
copies. (show support for open source)
Include build instructions & equipment list with supplies.
A computer with the IDE for a visual demo would be a plus.
This is my opinion based on what little I know and understand of the rumors and lies Thanks, Randal
Modern children can understand math quite well, they just need to be shown how fun and interesting it can be. I think this could be a great opportunity to do just that. Generate a fractal such as the Mandelbrot Set where a very simple mathematical formula produces beautiful images. Kids could experiment with zooming in to find interesting regions of the set. More advanced kids could try changing the formula slightly to produce new interesting fractals (for example, z=z^3+c instead of z=z^2+c).
To make the code simpler and more clear to beginners you would probably want to use a programming language that supports complex variables and has simple graphing commands.
Manufacture in China
While I was studying Math in college, one of my old high school teachers asked me to give a guest lecture to help encourage her students to continue their education. I was interested in computer graphics at the time, so I brought in my laptop and showed them a simple video game I had been toying with. It was a great success. I captivated their interest pretty quickly by bringing in something they normally associate with "play" rather than "school", and they had plenty of questions for me. The laptop was great because it provides an interactive visual aid, although I'd suggest bringing a joystick if you plan on having them play. That way you can have the computer in front of you at all times. Some topics could discuss which could be tailored for K-5:
*Math
*Physics
*Logic
*Art
*Engineering
Fight or flight its all the same
Live to die another day
--Ryan
Here is an idea: I was once asked to do the same thing for 1st-year high-schoolers, in France, i.e. kids of about 12 or 13 years old. I then worked on the central calculator of a not-to-be-named airplane, written in some Object-Oriented language. Boring to death, no ?
Until I got the idea: I had a friend create a simple graphical demo of the plane in full flight, with a few clickable parts ( cockpit open/close, gear down/up etc. ), running in one of two halves of a split screen. In the other half I had the ( heavily modified ) source code of the cockpit-opener etc. etc. scrolling along. The kid would get a warning while e.g. attempting to put the landing gear in "down" position at a non-landing speed etc. etc.
They loved it.
The only problem I had was this: they went on and on asking about games. Most kids thought that software engineering is about coding games. When I told them the contrary, all but one boy and one girl remained interested, the girl asking some fairly intelligent questions for her level, like "If you modify this line of code, does it still run ? How do you know ?" etc. etc.
I went home with a good feeling, that day.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
Do them and us a favor and tell them not to go into software engineering. There is no future in it for them, and if any more people try to go into it there will be no future in it for the rest of us either.
I got into SE at the end of grade school/begining of middle school. I kind of hate to say it but games are going to be one of the most interesting things that you can show them. That's why I went into the field, though not why I stayed. There is also a free game where the players use java to program virtual robots for combat. I can't remember the name but somebody else might find it and post a link. If you had some prebuilt robots for the kid where they could change them slightly with your help that might get them interested.
-Tim Louden
I recently bought a copy of CeeBot http://www.ceebot.com/ceebot/index-e.php for my nephew and it was very very cool. You write code that is very java-like that control an on-screen robot. The product has a great interface and is a great way to introduce kids to programming while keeping their interest with the nice 3D graphics.
You can also download the demo which is probably fine for the purposes you want it for.
Great product, great for kids. I myself started out programming on the C64 and loved that I knew intimately how the machine worked. Unfortunately, its hard to provide a similar experience now-a-days and I looked around for a long time for something like CeeBot that would provide similar magic to my first experience with computers.
Another cool product is MindRover (another robot programming game) but it gets pretty complicated pretty quickly.
Good luck!
-Michael
A visual illustration might be to have a small number of LEGO bricks in a box (but not enough to build much), and then a screen displaying a basic program of some kind that lets you show how easy it is to make new variables or something.
Having the basic program actually do something useful would be good, I think. "Hello world" only goes so far; showing how a computer program can do arithmetic (which elementary school age kids can relate to) might be interesting enough to get their attention.
Choosing a programming language to demonstrate that is accessible to the kids to download and play with at home would be nice too. Insert (Python) programming (Python) language (Python) advocacy (Python) here (Python).
Check out toontalk for a graphical programming environment that looks like legoland.
Also see how the objects-first people are teaching programming nowadays. In the first week of class they have people drawing faces using OO programming, without loops or branches. For example, they have the students create a drawing program using event callbacks.
Squeak!
All of the comments seem to be advocating showing the kids what you do. Instead of boring them with technical details or demonstrations they can't understand, why not focus on why you do what you do.
For example, one driving motivator for a lot of people is this notion that they are building something that benefits a large number of people.
Kids, have any of you ever built a castle out of legos or a boat using capsella blocks? It's pretty fun isn't it? Ever show what you made to your friends or parents? Did they like it?
Software development is a little bit like that. We build things, complicated things, things that can help people. Sometimes the things we build are used by hundreds of people where we work. Sometimes they are used all over the world.
There's a man living half way around the world in Hong Kong. His name is Alan Knowles. I've never met him before, but he built a piece of software that I use everyday.
What is it, what did Alan build? He built a program that helps other people build better programs. You might say he built a new, better kind of lego.
Thousands of people all over the world use and enjoy the program Alan built. They use his program to build even more programs that benefit hundreds or thousands of people. If Alan's program is used by a thousand software developers, and each of them uses it to create a program that is used by a thousand people, then Alan's program benefits a million people. That's more people than live in (insert localization).
Imagine if the castle you built out of legos could be enjoyed by so many.
I've never used LEGO Mindstorm myself, but my roommate last year had to use it for an engineering project.
Write some nice and simple for it (with functions like TurnLeft() and GoFaster()) and let the kids play around with that stuff.
We don't need no stinking sig
On the one hand you take life too seriously, and on the other, you do not take playful existence seriously enough. Seth
If you want to convince kids that computers can be fun, and show them a little programming. Download Squeak (http://www.squeak.org/). It is a Smalltalk environment geared towards kids. You don't have to know any Smalltalk to use it.
One of the fun things that you can do is draw a car with their paint program, move it as an object with the mouse, and change its settings so that it drives by itself. Very fun environment for kids. I'll actually be using it in a K-5 demo next month.
Constantly intimidate them and lower their morale by saying that their jobs may be going to India or China.
Maybe program a Lego Mindstorms RCX brick and have kids program it...and watch it do cool things.
Getting an Mindstorms set shouldn't be a problem. Why, even a local toy store that stocks it should we willing to loan you one. Your stall might just trigger a few purchases.
Plus, you are sure to have a lot of fun yourself.
I would say show them stuff that they already use. Not sure how in depth it would have to be but you could talk about game creation for example, or mention something like peercasting. Say how they could be the "god" of the game and create their own monsters and even have their own online tv station and be famous.
We broke the class out into groups of 4 or 5 students and had them each write a "program" on paper for a robot (me) to make a peanut butter and jelly sandwich. My partner read me each of the sets of instructions, resulting in peanut butter on my head, bread-jar-bread sandwiches, etc. The kids were howling, and in the end we collectively wrote a more successful sandwich program.
We got great feedback from teachers and students, as well as some very insightful questions from the kids.
And it was fun spreading myself with PB&J!
Thinking of starting a business in Minnesota? Me too! mnsmall.biz
...being "offshored".
Processing is a great way to learn how to code. It is java IDE, but designed for graphically oriented people who are learning how to program. The gui is very simple and to compile a display is very easy. Check it out, it's designed for people to learn how to program with.
Just make sure you encourage them. A friend's son (11ish) was interested in how to program games. Thinking along the same lines I wanted to keep his interest, but messed up by wanting to present a true to life view. So, I told him about teams and specializations. I told him that for a game like Doom3 there are many many people and it takes years to create.
He wasn't crying when we were done, but I think basket weaving was a more attractive career choice.
Mindstorm
I started with nothing and I still have most of it.
My first year programming professor (Peter Millican) wrote this program to introduce us to Java (and those who had never programmed before to programming).
t le java.htm
http://www.comp.leeds.ac.uk/se15/TurtleJava/tur
The advantage of using Turtle is that you can actually see what's happening. ie, forward(20), blot, etc.
It's simple, easy to illustrate, and you can do some cool things with recursion. If you download it, go to the help menu and choose some of the code examples.
I think primary school kids would be bored rigid with a "Hello World" program. With this, they can draw faces and see the computer actually "doing something."
PocketGamer.org - For the gamer on the go!
I just don't think kids will understand/care too much about how software is written. Just tell them you write software. Tell them software includes the programs they do homework with and games. Then rip open a computer and let them see the inside. You know their parents aren't letting them do that at home.
See the Wonderland 3D Fishbowl Tutorial for Squeak. You really owe it to yourself.
I should point out that I had an issue with an exception when I tried to "pop" the 2D fish I drew into a 3D shape. If you have the same issue, I can send you the solution upon request. If I remember correctly, someone forgot to "^ self" at the end of one of their methods in a recent code update. Email me at bobbymartin2@NgOmSaPiAlM.com (extract the upper case letters to get a valid email address).
Hack into Lizzy McGuire's bank account. Not only would that help you relate to the young ones, but it would get the girls interested in programming.
I guarantee that if you show up with a talking doll or moving toy or two, and show them how to break into them and change the programming to do other cool stuff, you'll have them hooked.
Don't go into coding, but how you design the elements, the action sequences, etc. Then tell them how you have fit these into the *limits* of a computer. Then show them how other [ interactive ] applications, e.g. a text-editor- resemble video games. Kids relate to video games.
Get a copy of Computer Science Unplugged:
http://unplugged.canterbury.ac.nz/
It's a great book which takes modern CS concepts and translates them into activities for young people.
Jim Huggins, Kettering University, Flint, MI
Then tell them that if they were real software engineers, they'd be able to figure out what you want through osmosis. Berate them, and give them only a token bonus at the year-end review (no raise).
Then bring in a contractor that the boss likes. The contractor stays late after everybody but the boss goes home. Then the boss tells the contractor what he wants done differently. Then when everybody comes back the next day, all the code's been changed by the contractor, and there's no documentation except for the smug contractor that tells you that the boss came in late and wanted things changed.
Then the next thing you know, the contractor is the kids' project manager. Oh, did I forget to mention that he doesn't speak English very well? And that a month later he goes back home to India. Along with the project knowledge that the boss has been giving him. Berate the kids again since they haven't been keeping up with the code changes.
Make sure somewhere in here that you choose one of the kids that doesn't know very much to be in charge of the design, and if one of the other kids has a better idea, ignore it. Better yet, say that their design isn't like the original design, so they can't do it.
Then refuse to release the product because it's not good enough yet. Make the kids put in every change suggested by potential customers' brothers' hairdressers' uncles. Make the kids stay late at night to get this done because it's their fault that it's late. Berate the kids some more. If any of the complain or cry, fire them. Hold their stock options over their heads, and threaten to take them away if they say anything bad about the company. Reduce everybody's pay because they haven't put a product out yet.
Did I forget anything?
DT
Is this thing on? Hello?
Way back in the day many moons ago had to be like 77 or 78. I was exposed to my first computer. I was fortunate enough to live near the Tandy HQ (the Tandy Center) and our class got to go on a field trip to the Tanday center. There I saw an early TRS 80 green screen. Actually rows and rows of them. The showed us the BASIC print name over and over loop wich was cool at the time. But the thing that really got my imagination going was the dancing demon. The dancing demon was a little basic program that had a little demon that danced. Keep in mind these were green screened TRS 80s so the demon part took some imagination to see. But he was fun to watch and you could change his dance steps by typing in specific commands it was really cool. After that I wanted a computer more than anything I could think of. Maybe some good old fashioned demos would arouse kids these days especially an interactive demo. I mean demos from the PC demo scene (mucho eye and ear candy). Also eliza the computer psychologist program always freaks people out or even a good 20 questions program AI stuff is cool too.
The best way to illustrate what a software engineer does to a group of primary school kids? Take 'em on a field trip to India!
Make a program that'll solve their math homework. That'll get them interested.
;)
You can probably charge them their lunch money too
Slightly off-topic because you said Software Engineering, but it might be close enough. Get hold of the oldest CPU you can find. (New ones are too damn small!) Hack the top off (or the bottom?) and stick it under a microscope. Hopefully the school will have a good powerful one.
This is a language that can be easily learned by 5th graders, and is meant for educational purposes. Highly recommended and you can learn it in a few minutes:
http://www.softronix.com/logo.html
"I'm trying to come up with something like what got me hooked way back when, which was when my Organic Chemistry professor in college showed me a listing of a Basic program (Basic Plus on a PDP-11/70 running RSTS/E if you must know)"
Hey, I've got a Micro PDP-11/73 here that I could lug into my daughter's kindergarten class. It's running RSX-11M rather than RSTS/E, but the kids probably won't notice such subtle details.
This might be a bit above K-5 level, but something through a web browser would seem likely to be more familiar to the majority of kids. If you use a Perl/PHP/Python-type scripting language, you could show them how one little update can make a huge change in the way the "program" operates. You could change a background color or an image and that would probably be enough to pique their interest. Obviously, this can be done with other languages, but it may be more tangible to the kids if it's through a web browser... maybe.
By the way, you do realize these are kindergarten through 5th grade kids, don't you?? And lots of them! May God have mercy on your soul! Good luck!!!
You're doing a K-5 presentation. Think about that range for a moment.
:-)
In Kindergarten, children cannot even yet add 1+1 (at least at my public elementary school we could not). On the other hand, 5th graders who've paid some attention to their study can handle the 4 basic arithmetic operations (add, subtract, multiply, divide).
There is no way you can illustrate a loop to a Kindergarten child using any sort of the simple arithmetic that for() and while() loops use. But to the 5th grader, you could.
Moreover, there are issues of attention spans. The attention span of the Kindergartener is much much shorter than that of the 5th grader (which in turn is still nowhere near as large as a high school kid's).
Hence, to the Kindergartener, you'd need some other sort of presentation; one that is extremely-simple, like a game, or a 3D graphics program. Don't expect to show them code, because in K-1 or so, many students still cannot read -- certainly they can't read complex texts like code (in any language, even BASIC, and obviously not ASM!).
You may have more luck with the 3rd-5th graders though. They can read and perform basic arithmetic, so they could probably understand BASIC if you showed them an extremely short (< 10 lines) program. But you're still going to have to show them that "code can do cool things!" Do as much graphics as you can in as few lines of code as you can, and show them that.
The first "programming" I ever did was on Hypercard on the Mac way back in 6th grade, around 12 years ago. Consider the simplicity of Hypercard, and the fact that that too will confuse many 6th grade students when they first see it...
Otherwise, I sarcastically echo the other comments about "teach them Hindi" and "juice them up on coffee and yell 'code faster!' at them" and "don't shower, don't shave", etc.
Is Capitalism Good for the Poor?
"...and look, this is Slashdot..."
It's 10 PM. Do you know if you're un-American?
You should show them Jurtle:
http://otherwise.com/Jurtle.html
It's a great way to show basic programming concepts with some instant gratification that makes it interesting.
jeff
Robocode is a little game where you write a java applet to control a tank. Then you can run it against other automaton tanks and see who wins. I think it was designed as an educational tool.
Never trust a physicist further than his DeBroglie wavelength.
I work as a CS Instructor at a local tech college and we regularly get tour groups that range from K-12. One of the things that the kids really like is AI. Get a program like Hal (www.zabaware.com). Just be careful, if the student have a habit of cussing him out, he will reciprocate.
Crocodile ICT
x .htm
"A powerful tool for teaching control and programming. Use a simple flowchart interface to write programs which control either human characters or on-screen animations, making complex programming concepts easily accessible to all."
No 'coding' needed; drag and drop action blocks; make loops, conditionals, etc.
http://www.crocodile-clips.com/crocodile/ict/inde
Until recently the beta was available free; now you can download a demo. For your special event, maybe they'll send you a copy of the beta.
What would be the best way to illustrate what a software engineer does to a group of primary school kids?
How's this different from trying to explain to a group of managers what a software engineers 'does'?
Why don't you show them a computer animation of somebody cool, like an astronaut, firefighter, or football player?
Three remarks, I had two high level high profile hacker friend discuss this subject (concerning their friend) One of these friend showed to his son cat /dev/hda1
and the child said "coool" and started to learn C.
the other showed a clown face blinking written on the Blit (if you do not know dont worry it's old)
The child said "ho ha, thanks", and decided to forget about this too hard stuff.
Second: LOGO is really cool to show kids why its cool to write programs.
Third: DO NOT LIE TO CHILDREN
IT is most probably dead for them.
They will have an opportunity to work in this domain in 10 or so years.
By then if the public is not doing something really drastic patents and patriot act and DCMA etc... will have utterly destroyed IT and made it a real boring subject.
On the other hand most probably no interesting scientific subject will remain anyway.
So who cares.
So do not forget to tell their parents that voting for any incumbent is evil.
Cheers
Write a little graphical particle simulation. They're fun to write, easy to understand and produce pretty, moving pictures.
Damn funny!!
Tell them that a career in CS is the crappiest choice they can make. Now that more and more jobs are moving to India, we don't want these kids taking all the remaining jobs from us, "old" people. Even if they're willing to work for a dime a day.
I completely agree with you. When I was eleven, I tried learning C. Of course, it took me ages to understand anything major, but even back then I knew I was dealing with something aweseome.
Show them the boot up sequence - I bet you every protogeek in the audience will begin salivating on the spot. Then show them the console - programs like fortune, or the text version of computer games. Explain to them how somebody actually had to sit and write every one of these programs, and that's what you do. Show them "Hello, world" and "what's your name?" as very simple shell scripts. Tell them that's there one rather special program that took a whole lot of people to write ... and then start X with the glitsiest, shiniest, most sparkling window manager you can find. They'll be impressed.
:)
Double points if you do this on a dilapidated computer, which you open them up and explain how everything goes together.
[o]_O
I know it is not really a programming language but just about every kid knows what the web is these days.
Install a web server on you laptop and let them create a web page.
Have show them the raw html and let them make changes.
In my first Computer Science class, one of the first activities we did involved the teacher acting like a computer, and the students acting like programmers, telling the computer to make a peanut butter sandwich.
The computer has to take the commands literally. "Pick up the knife" should come before "spread the peanut butter using the knife" etc. Quite a fun game, and it was a hit in my class.
By the end, the sandwich was kind of gross, but I was hungry so I ate it anyway.
I've seen lots of comments regarding the programming language, etc. to use, but none that address the fact that you will be teaching these kids (likely their first exposure) about software engineering.
If you have the stage to yourself for a period of time, make sure your demo is interesting, but not too distracting. Ask the kids what kind of changes they might make, and implement the quick ones (keep a couple of quick changes in mind and suggest one-number changes in the code if the kids keep asking you to write Halo). Keep moving, keep showing, and keep asking. Frankly, watching someone write code can be like watching grass grow, and keeping the kids involved needs to be your primary motiviation.
Engineering is about problem solving, so make sure you get the point across that what you are showing them is one of basic tools that can be used to solve problems. Tell them that with some practice, they can make the computer do whatever they want, then show them a more complex example. Gorillaz for QBasic was mentioned; that's a good one, especially if you can hack together a demo mode to run while you talk. Show them, that with enough practice, they can change the banana or gorilla color (ask them for a color, then type in the color code and re-run it). At the very end of your talk, show a screenshot or describe a situation when programming was used to solve problems (I'd suggest describing both a trivial and complex problem, if you have the time).
If, however, you are going to have a booth, I'd try to hack up a little spirograph-like demo. When the kids come up, let them type in some new numbers, and let them run the program to look at the results. DO NOT set up spinner buttons and drop downs, that's just using a program and they know how to do that. Show them how to tell the computer what to do. They don't like black on white? Show them where to change the colors and let them type. If it breaks, that's OK, just show them how to fix it, and tell them that you break software all the time (it helps if they know that you are fallible as well, and it's not just them). If you equate learning the rules of programming with, for example, learning the rules of phonics (they do still teach that, right?), they'll get a better idea of why they can't just jump right in, and why things break. Have a couple of printouts or things on hand that show them the engineering side of things, not just the programming (you are a software engineer, right).
The key elements in this are to keep them interested and keep them actively involved. Five minutes can be an eternity to a first-grader, so keep it interesting. Be prepared to move on if you see that you are losing your audience, lest you become the least-favorite presenter (behind even the accountant).
I suggest showing them Squeak. It's pretty colorful for a programming environment. It also has an implementation of a racecar and a musical keyboard, a mouse face with eyes that follow the cursor and other things that would probably be fun for a short period of time. And while they're playing with all that, maybe you can explain that Software Engineers make this stuff as well as the games on the Xbox, Gameboy, and Playstation.
One day, when my daughter was in first grade, she asked, "Dad, do you do anything cool?" The teacher was inviting parents to talk about their jobs. My daughter agreed that programming is cool, and I got an invitation to give a demo.
The kids all know what computers are and some of the things you can do with them. I explained that nowadays, computers are in everything - appliances, phones, cars, etc, - computers run the modern world. I told them that programmers tell the computer what to do, and without progams, they just sit there and do nothing.
For my demo, a student volunteered to be a "robot", and the class had to instruct her to walk across the room and sit in a chair. The kids had fun, and learned that they need to give very detailed instructions to the computer to get it to do anything useful.
I had dragged in an old PC - there were half a dozen in the classroom, but I couln't use them for the last part of my demo (see below). We fired it up, and wrote a small BASIC program that drew random sized, random colored rectangles on the sreen while making random beeping noises.
Then the part the kids REALLY liked - we opened up PC, and I explained what all of the parts do. We opened up the hard disk, and booted it for the last time - the platters spinning and the head seeking are fun to watch. After shutting down, we pulled out the video card, modem, mainboard, SIMMS, CPU, drives, etc, and passed them around. We disassembled the mouse and keyboard to see what makes them work. The kids loved this, and I had to give a "don't try this at home, your parents will have a cow" speech.
K-8 is a wide age range, it will be difficult to do something that will keep all of the kids interested. Lots of good suggestions have been posted, I'm sure you can pick and choose among them to find interesting ideas.
If God had meant for man to see the sunrise, He would have scheduled it later in the day.
For elementary school, demonstrate some of the basic algorithms that software engineers don't even think about any more. I taught my kids binary search in about the third or fourth grade, how to look up words in the dictionary or names in a phone book. It's surprisingly fast.
Try a cookie recipe or making a peanut butter sandwich as an example of an algorithm.
Subtrction by addition can be done with ten's complement, not just two's complement. But what it demonstrates is that it's just easier to memorize the subtraction table.
Things like this will probably more entertaining than trying to explain about code reviews, top-down design, code maintenance or the other things that go into software engineering.
After all, if software engineering were exciting and interesting, there'd probably be a lot more programs that work right.
I stumbled on squeak looking for some smalltalk tools.
squeak + kid = squeakland
From there I found squeakland ~ a media authoring tool with browser front end.
The people behind squeak are impressive. What is more impressive is the ideas behind how kids learn.
Modelling the spped of a maggot
Now I've just got to model the experiment I conducted with the young ones on the speed of maggots wriggling and their weird behaviour when you rotate the surface they are crawling on (they instantly seem to know which way is facing down).
peterrenshaw ~ Another Scrappy Startup
Ask them how many are sick and tired of their applications crashing?
Bring along some cool source that produces beautiful output and add 5 or 6 bugs in it that prevent it from doing what it's supposed to. Also bring along a colorful UML diagram printed on 11x17".
If you deal with UI at all, have some commented out code that adds interactivity (change some specific attribute before showing graphical output, change same attribute at run-time and redraw etc).
Don't forget to use breakpoints to illustrate how to stop the computer before it crashes.
That should generate some nice response, in particular if you take something like Quake and modify it on the fly.
Leonid S. Knyshov
Find me on Quora
When I was in the 5th grade, 1985 I think (challenger blew up), the public school had a weekly computer class. They showed us LOGO and BASIC.
After I saw BASIC I begged my mother for a computer and she got me a C64. I've been programming ever since.
Show them the same thing. The one's that are going to get IT, will get it.
Now I've seen Everything
Get an Xbox or Playstation, set it up, start playing the games and say to the kids, "Who the hell do you think makes this happen?"
C'mon, people. Get a clue!
>> What would be the best way to illustrate what a software engineer does to a group of primary school kids?
Take a big grey cardboard box and sit in it.
Its all about video games. Download a copy of DarkBasic and whip up something cool and short...
tony
hard core geek-ware
Haven't you heard of the paper, now considered a classic.
You want to teach kids to code for a career? Here's plan:
1) Get them interested. Best way is to teach them to program games. There are simple game programming environments. One is Game Maker. http://www.cs.uu.nl/people/markov/gmaker/
2) Teach them about automating tasks using command scripts and either Javascript of VBScript.
3) Next teach them about web and database. Start with straight HTML then move to JSP. Help them build something simple. Maybe JSP to pull their favourite sports results out of a table, or a database of their film collection or something. They'll be learning Java.
4) Now you can get them to go back to something like assembly if appropriate. Teach them how the guts of the machine works and why it works now they've done some simple stuff. Don't bother with BASIC though. This isn't the early 80s, and its so far removed from anything they'll be asked to do when they're older (certainly far removed from most coding professional's day to day experience).
5) If they're still interested, show them how to make their own GUI etc. and teach them more computer languages so they get a feel for what right tool for the right job means.
Might take weeks or months but not years to get them to the point where they understand what coding is like. They can then decide if they enjoy the challenges and can deal with the frustrations.
These posts express my own personal views, not those of my employer
Consider putting together a MaxMSP patch that does something with a video/audio feed and figure out a way to quickly show them how they can affect change on it. then let a couple play with it a bit and when they are done revert back to your base patch.
if you're really snazzy have a stack of cd's handy and burn the audio/video stream that the patch is altering so they could see it at home or on the school computers.
oh, wait, you're a software engineer
I say show them programming the way they will do it in the future.
Show them LabVIEW or some other kind of graphical programming experiance.
its just about telling something how to do something else
LabVIEW can anwer 2+2=4 and give you a neet little meter to show you the answer.
then maybee show then the same thing in some Asembly Language
--meh--
I've done this very thing; however, not all kids will be "into" math and logic. Some may be more mechanically inclined. SO, instead of merely talking about software specifically, talk about engineering in general. If you are in a large room (such as a gymnasium) you could point to the roof support structures and ask why that big roof doesn't fall down. Tear apart an old cell phone and talk about the engineering that goes into that simple, ubiquitous, common gadget.
Engineers included Materials (pick the correct plastic), Mechanical & Human Factors (layout the case for strength and usability), Digital Hardware Engineers (design the microprocessor, keypad, display, etc.), Radio Frequency Hardware Engineer (for the radio transmitter & receiver), Chemical Engineer (to make that long lasting rechargeable battery) and finally the Software Engineer (to make the phone hardware do all of the work).
This simple exercise will show how much engineering goes into such a simple device, and that there are enough engineering disciplines for everyone's interest.
BTW, the definition I use for engineering in general is the use of math and science to solve puzzles. A very elementary definition.
Yes showing games or robotic arms would definitely get the most interest but does it really expose anybody to anything? That would be like a baker bringing in cakes and cookies. It doesn't really reach out to any kids and makes them think "yeah I might like to cook."
How about this. Have a task that takes some thought to do but at the same time the procedure is straight forward once you've done it a few times. Like maybe taking a list of numbers and writing them out in order. Let kids do this. Let them race even. Then start asking them to explain the steps they were doing to sort the list and try to create the code that does that as they go (using nice long names for methods). Not all the kids will find this entertaining but that's perhaps not the point. There will definitely be some kids who are really excited by the idea that they can put ideas of how to do something into words and shapes. Bring some prepared methods that also work and you can use by hand. If you can come up with a method that looks like it should work but doesn't for what ever reason that would probably be really exciting. Being able to see a list ordered wrong but in a predictable way.
"Also see how the objects-first people are teaching programming nowadays. In the first week of class they have people drawing faces using OO programming, without loops or branches. For example, they have the students create a drawing program using event callbacks."
I should point out that plt-drscheme has this capability, and maybe isn't as daunting as Smalltalk.
"Of course, it took me ages to understand anything major, but even back then I knew I was dealing with something aweseome."
Shame you didn't have the "Junior Terrorist, Do-it yourself Biological Warfare, and Easy Bake Oven" kit growing up. You would have redefined "awsome".
Modern kids now...
their's, huh...
Sorry to point out the grammatical mistake.
Show the lil tikes how to remove the IR filter from their webcam...
Then, for some real engineering maneuvers...
There's no time to stop for gas, we're already late.
Dude, did I steal your career fair?
Show 'em some simple game on one box and the code for that game on another (make it BASIC or something, so it's easier for 'em to understand). Then tell 'em that all computer programs are written like this... etc.
-Palal
Grab a handful (4-5) of "volunteers" and turn them into bits....
I frequently volunteer for the career day at the local elementary school (since the organizer is my next door neighbor). The 3rd year of doing this I tried to "lighten up" the dull software engineer part a bit to some success.
I grab 5 kids to be binary and 2 kids to be decimal. In advance I've created a flip slide for the decimal kids that displays the digits 0-9. They sit side by side and we begin counting to 10 with the 10s place child flipping when the ones place prepares to flip their 9 back to 0.
Once that's done I explain that computers are stupid and can only count to 1 (but very quickly) and we have the 5 bits with their 0/1 page. Quickly the kids see that there is math involved but they also have fun (in an interactive sort of way....)
Mind you, the school I'm at has me competing with reptologists, airline pilots, and the like. The interactive part helps me keep up. Ahead of that I've generally shown the most eyepopping graphics I can muster (but it's awfully hard to compete with what kids see everyday in front of their home computers/gaming consoles....)
Most kids of that age understand board games, dice games, card games, etc.
One of the VIC-20 programs I remember seeing was simple: guess a number from 1 to 6, put a bet down, roll the die, and if it matches, you win money. I remember it because I "hacked" the program to tell you the results of the die throw before you had to guess, so I could make huge amounts of money. It sounds lame, but I was about 8 or 9 at the time, and for someone of that age it was quite a buzz.
If you want to get a bit more complicated, kids will understand games like craps and roulette, and if they play, they'll get involved, even if they're not geek types (and yeah, even at that age, you know who the class geeks are).
Here's my distro, with a link to a screenshot. It sure looks different from XP, (IceWM), but the Mozilla Firefox result is the same, as you can see.
Maybe, just maybe, that would get their attention.
Im more than stunned that no one has actually offered to demo what software engineers REALLY actually do.
let me give you my most accurate description of the software engineers/ coders i know:
1. go to work get coffee and surf over to goatse.cx (or other suitably offensive site).
2. Grab source and image using chosen broswer/editor.
3. Rename Code to "cutebunnies.jpg.html" if you want women to see it,,, or "annakournikovabreasts.jpg.html" if you wanna upset the blokes.
4. Stick it on the local shared drive
5. Sit back giggling insanely and wait for the screams
If your going to try to lead a kid down the path of software engineering, at least be honest about what you really do in your job.
you might try to introduce the students to something like ALICE which from the site: Alice v2.0b is the next major version of the Alice 3D Authoring system, from the Stage3 Research Group at Carnegie Mellon University. It has been completely rewritten from scratch over the last two years.
The focus of the Alice project is now to provide the best possible first exposure to programming for students ranging from middle schoolers to college students.
I remember playing around with it when my cousin wanted me to teach her programing, though she lost interest before I was ever able to demo the program. It seemed pretty interesting, although a little on the slow side, but that was a couple of years ago.
Famous Last Words: "hmm...wikipedia says it's edible"
That's the best way to steer kids away from the field and ensure I'll be able to continue working well into my 70's.
After they understand the game, you have to start layering it to give them more of an idea (if you can).
For example, you just figured out how to guess a number. Now you can take that and trigger a robot to move. How would you do that, etc etc.
It's all about deconstruction and reconstruction. You do have to avoid those two words, though.
In that age range, your job doesn't have much appeal; no white-collar job
... or sell french fries. Software engineering is BORING
does unless it has serious celebrity status (e.g., US President). The minute
you start talking about sitting at a desk, there'll be a mass exodus to the
booth where one of the other kids' parents is talking about their job at
McDonald's. Now *that* job is cool.
If it were a junior high or high school career fair, that would be different;
those kids (well, some of them) want to do white collar work when they get
out of school. But in elementary school, they want to be firemen, astronauts,
athletes, President,
to them, almost as boring as being a professional student.
Now, if you were a professional video game reviewer, that would be different.
Cut that out, or I will ship you to Norilsk in a box.
Do something hands on that will illustrate programming with the kids.
Games work best! It will keep them motivated and the experience fun and worthwhile.
In the mid 80's, a great educational program called "Chipwits" was released for the early Macintosh computer. You assembled flow-diagram pieces to program a robot to traverse a landscape. Chipwits seems to have vanished without trace, but another program "The Incredible Machine" (for Mac or PC) may be similar.
How about bring along some of the videos from the DARPA Challenge and explain that computer science is about figuring out problems like path-finding and vision and software engineering is about how to build bigger and more complex systems out of all this smaller components. In this case you've got tons of different near-sci-fi parts of the vehicles you could tell the kids about as well as putting it all together into an AI that can drive a 175-mile course. "That's like having your car drive you from here to ____!" There's tons of neat stuff to inspire kids plus tons of video footage to base your presentation on.
Look around at various machine learning topics. There are many many extremely cool projects described on university webpages.
I've been interested in computers for a long time but machine learning has been one of few things that has actually made me go "damn! That's cool!" in the last couple years. Uni was getting a little boring until I took a course on it and was absolutely blown away with what we were taught to do.
This will take a little preparation, but I would suggest going with a copy of ROBOCODE and a few starter robots. The great thing about this stuff, is that you can have a battle with some fairly simple robots (which you could code beforehand) and then get the kids to look at the code, give them a simple example of how to change some parameters (one of your stock robots may move very slowly, with long waits, another may turn 405 degrees right, where there may be time to be gained by just turning 45 degrees - seed the examples which is fairly obviously easy to improve) and see if they can come up with a better performing one. You may have to help them with the stricter bits of syntax, but if they can analyse behaviour and use the basics (TurnRight, turnGunRight) to improve that behaviour, your well into the territory of CS and already a step away from just asking them to complete a basic program to say "Hello!", which is less CS and more code-monkey... :-) You've covered analysis, versioning, coding and testing phases! If you could just get them to document it, they'd already be a step ahead of most coders :-)) It's probably more important that they can improve the behaviour to win battles, even if they can't actually write the code - they can always learn to do that later if they're keen.
Try NetBSD... safe,straightforward,useful.
I have enough trouble explaining what I do to most adults, let alone small children. "Software developer? Is that like a photocopier repair man?" was probably my favourite response.
Personally, I'd make a very simple game. Doesn't really matter what language, as long as it's something fairly simple to learn. BASIC is a good one, even though it's not that representative of modern coding. Personally I'd go for Java or C#. Maybe VB. As for what you should program, I think some simple games would be a good way to go - number-guessing games, Tetris, maybe Chess, and if you get adventurous, a Tamigotchi (if that's how you spell it). POVRay was suggested, which is an interesting idea. I always found it a little heavy on the numbers (hey, it's 3D graphics, what did I expect) and kids might get fustrated with it fairly quickly, but it might work.
The Lego Mindstorm environment is excellent for showing how software can effect physical action in the real world. They have a graphical programming environment easily grasped by 7 years olds. A few point and click actions and you can change the behavior of an attached robot. And an "NQC" simple C text environment is available free. $200 for the box with 'Brick' computer.
Plan a project to work on during the show. Make it something simple, so the kids can "help" you with it as things go on. Here's a thought: bring a digital camera that you can use to quickly bring photos into your laptop, then let each kid (who doesn't have marshmallow Fluff all over his/her fingers) take a picture, then add a button that brings their photo up in a non-modal window. Use an easy visual environment like Delphi (Kylix, if you're running Linux) or something. All you'll have at the end is a base window with a ton of buttons and a popup window that displays a pic, plus a bunch of pictures of other people's kids which you should probably delete, but it might serve to engage them.
The kids with marshmallow Fluff on their fingers can be project leads; hand them a stopwatch and have them loudly time how long it takes their peers to type the code in.
Save Maine's economy: write stuff down. All comments are exclusively my own, not my employer.
I believe that BrainF*ck has the instruction set you are looking for. Though, you [probably cannot tell them the name of the language. :)
downloading Pr0n?