How Do You Explain Software Development To 2nd Graders?
First time accepted submitter zimania writes "At the start of every school year, my kids' teachers invariably ask if any parents have any special skills they can present to the students. As a software engineer, I'd like to give a presentation to the classes about developing software. The tricky part is making a presentation fun, inspirational, and easy enough for 2nd and 4th graders to grasp. Has anybody been brave enough to attempted such a thing? Are there kid-tested prepackaged presentations freely available? Would it be best to present the development of a simple game? Web page? Any advice is welcome."
Have them stand together and execute a "program" as if each of them are "utilities". Something like getting an apple onto the teachers table, but each person does one thing and one thing alone. Then let them have fun seeing what they can figure out to do - so long as they still only do that one thing. This isn't about "code" it's about a way of thinking!
CS majors know the time/space tradeoff, but they never get taught the 3rd, crucial, tradeoff of the set: comprehension!
Back in primary school (15-20 years ago) i was introduced to programming using the Logo language (drawing the path of a turtle on the screen).
Syntax was something similar to:
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
FORWARD 100
LEFT 90
OR:
REPEAT 4 [FD 100 LEFT 90]
Use abstract language and flow charts to explain, for instance here is pseudocode for a function called doSoftwareEngineering:
function softwareEngineering outputs betterBonusForBoss and meagerSalary
do until tooOldToEmploy
change jobs
do until bossFiresYouForBonus
do TPSRepeatsReportsUntilYouWantToCry
repeat
repeat
repeat
gosub without return
Monstar L
One of the most engaging presentations I've seen on this was the making of a peanut butter and jelly sandwich where the students write out the instructions and you execute them -- very literally, as a computer would do -- illustrating the attention to detail and error checking required for programming.
I recall seeing the knife go through the lids for the peanut butter and jelly jars, the jars being placed directly on slices of bread, peanut butter being spread on the bread wrapper, etc.
This would be something to incorporate into a larger talk, probably at the end (to keep their attention going).
A projector, and Scratch?
http://scratch.mit.edu/
Mindstorms could also make sense?
To explain a programming I would demostrate how changes to a simple piece of code changes something that you can see, like an animation (scratch) or a robot's behavior (mindstorms).
.: Max Romantschuk
I think that they should learn Lisp or Cobol.
http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids/
I do workshops for 15 year olds +, so this may be useful to you: There are many great stories of disasers that have been caused by software. This lets me explain how my job is to create software that does not make those mistakes. :-)
I'd say tell them the truth. It's a job that sucks the life out of you.
Most of your days will be spent:
a) in "requirements" meetings: Where people who have no idea what they want hope for some reason that you do.
b) in "testing" meetings: where those same people get pissed that you didn't do what they didn't say.
c) in "bug report" meetings: where people can't fathom that in a hundred thousand lines of hastily written code (because we had a due date, and had too many testing meetings to actually test anything), there could be a mistake somewhere.
d) "developing": where you write some shitty business software that most people are forced to use during jobs that they also hate. Meaning no one will ever be happy with the work you're doing.
e) looking for a new job: And not being able to find something interesting because your experience is in fucking business software, because it was the only decent paying job available when you were first out of college and didn't know any better. And everyone that's going to pay you decently wants experience in whatever they hell their doing, not business software. Even though you have a god damn master's degree in CS, not "business software".
f) Oh god please make the hurting stop.
g) Drinking, and trying to avoid people who want to talk about work.
Feel free to pass this out as a pamphlet to the kids.
Be glad you aren't like me and support mainframes...
"Hello class, I work on this really big black computer the size of a refrigerator and the weight of an elephant...No, it doesn't play Angry Birds.... but it's older than both of your parents"
I'm still trying to figure out how to explain what I do to Adults...
10 PRINT "YOU SUCK!"
20 GOTO 10
Pretty much every Apple II in my elementary school ran that program almost continuously... what more do you need?
[Bonus - it was a gateway program to writing Eamon expansions by Jr High. Double bonus if anyone actually knows what the hell I am talking about...]
What do prostitutes and programmers have in common? They both have trouble explaining their jobs to 2nd graders!
I rarely respond to comments. Also, don't ask for clarifications: a brain and Google are faster, believe me!
Caveat - I have never actually tried it, and I developed it for adults. I still think it might work with 2nd graders (probablu too coplex)
Ask for a volunteer. Write a bunch of numbers on the board, and tell the volunteer to sort them.
Explain that this is not programming.
Now, cover the volunteer's eyes, write some more numbers on the board, and tell him to tell you to sort them. Allow asking "what is the first number" and such.
Explain that this is, also, not programming.
Now, tell the volunteer to tell you how to sort the numbers before they are written on the board. Explain that once the numbers are written on the board, you will not hear any comment from him. Write the instructions down on the board. When they are done, write down numbers and carry the instructions out. Try to pick numbers that won't work with their instructions. Allow the class to fix the instructions, but any time they do, restart the whole thing.
This is programming.
Shachar
Seven years old.
This information is available on wikipedia.
Is it more effort for 10,000 non-US-based geeks to look up Wikipedia, or 1 US-based OP to mention an internationally recognisable age in his question...?
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
I like this. When I did career day and my kids were in elementary school, I did a couple of things.
At the time, I did embedded systems, so first , I asked them how many computers they thought were in their Mom's car. And then I used that as a jumping off point to explain (at a very high level) embedded systems.
Then I talked a little about how I write software. I asked them, if they were building a house, would they just start hammering, would would they make a plan. Pointed out the same thing for software.
The last thing I did was to make the teacher happy. I asked them what they thought one of the most important tools I used (besides a computer) was. They guessed for a bit, and then I brought out a book (picked the biggest programming book I could, I think it was Petzold 5ed at the time), and kind of played with it a bit until someone figured out "books". Pointed out you need to read.
Career day was always tough for me, because my daughter was always in the same class as the guy who did lasers (no frickin' sharks).
General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
Just use whatever presentation would be appropriate for your board of directors. Maybe bump it up a notch or two so the kids don't feel insulted.
I keed! I keed! I know a lowly programmer would never be permitted to speak to board members.
Yes, I generally agree. That's why I recommend teaching them about God. The world it too complicated for these young minds and we can't have them walking around having more questions than answers. So start delivering your powerpoint show and when you get a blank look, just change over to discussions of God, Santa Claus, ghosts or other imaginary things.
Actually, I might try to explain programming as a way to make their toys do things you want them to do. But really, 2nd grade would be way too challenging a concept for them. They already know what a computer is, but it's a LOT of little details. Anything more than 3-4 steps in a process and they are bound to get glassy eyed. But you can explain that they already know a lot about what a computer does because they are learning those things now! They know how to organize their things and put them into their boxes. (shoes, jackets, crayons, etc... they store them, sort them, and search them) They know how to do math functions too.
In fact, the word "computer" was originally used to describe a job that people did. It might be interesting for them to know these things. But to demonstrate programming itself would be too much for a short period of time. Instead, I would try to give them a basic understanding of how the magic box is similar to what they are learning in school already today. But computers do not replace the need to learn these things any more than cars replace the need to walk. In fact, I think I would start out with the standard "car analogy"
"Raise your hand if you know what a car is!" "Great!" "In a car, you can go really far and, depending on how busy the road is, really fast too...." They already know what a car is, but by starting out with something they already know will help them to draw parallels with the purpose of computers and that can be done within the first minute. After that, think of a fun class exercise they can follow or participate in that involves sorting by number or letter or some other criteria... things they do all the time already. That's more challenging than you might think though... give that some thought.
I've seen a kid that age program in mine craft. They're ready, they're just not into stuff that's boring.
Then again, TFA doesn't ask about interesting children in programming, but in software development. This seems silly to me. 2nd graders might be interested in learning how to count just for fun, but teaching them to do book keeping will require a massive carrot & stick.
ahh, 2nd grade. Best 3 years of my life
Yep, that's the trick part, way I see it. He asked about software development, not programming. Programming what you want, especially in a game, is fun. Software development, on the other hand has lower average job satisfaction than being a garbage man, according to a survey from a couple of years ago.
Mind you, it might still be able to explain it via an exercise, but I don't think anyone has the heart to do that to some innocent little kids. I mean, it would probably go like this:
"Hi, kids, my name is Moraelin and I'm here to show you how software development goes. I must thank Mrs Crabapple for letting us come to the park for this exercise. We'll be making this a role-playing exercise, so it's easy to understand. I brought a few friends to help with some key roles. Say hi to Tom, Dick, Harry, Jack and Jill.
"Now the first thing to remember is that we're not in this for the fun. You'll get a grade for this, so try to do your best.
"The most important skill in my profession is to sit in meetings and look interested. It may not be the greatest percentage of the day, unless you really draw the short straw, but you'd be surprised how much more important making a good impression to the boss is than actual work...
"You over there? Yes, you in the blue sweater. What's your name? Well, Billy, you get a minus one point on the grade for fidgeting instead of paying attention. Yes, I know it's boring, but that's the whole point I'm trying to convey. Let this be your first lesson in real world employment.
"Well, anyway, for the purpose of this exercise, you'll be divided into teams and have to draw something on the pavement with chalk. As a team. Remember, what matters is the whole result, not just your own personal performance.
"Now to make things more educational, I brought a second class to pad the teams with. The assignments will be big enough to include them, but they've all been assigned some secret roles to play. Most... let's just say it sounds like 'mazy loron', but occasionally you'll get the guy who just tells you how to do your job instead of his own doing his, the guy who keeps adding pointless "THIS IS A FLOWER" comments to your work instead of doing his own part, the guy who keeps trying to tell you about his vacation instead of letting you work, and so on. Some may even be naturally inclined to go beyond even the assigned role in their being useless and counter-productive.
"I probably don't need to tell you that you're not supposed to beat them up even if they 'accidentally' erase your part of the work. In fact, you're not even allowed to complain about them. Doing so will get you a bad grade for being a bad team member.
"You have a question? Oh, WHAT you'll have to draw? I don't know myself either. Tom and Dick will role-play the customer. You'll have to make them tell you what they want drawn.
"Now they'll be as vague and occasionally wrong as humanly possible, and occasionally obnoxious, but you must extract exact information from them. You don't get points by just doing close enough. If they say they want a flower, you must get out of them exactly what flower and what colour. If they say they want a boat, you must find out exactly what kind of boat. And if they say they want a cow, well, better make sure they don't ACTUALLY mean the kind that meows and catches mice.
"They'll also change their mind or demand changes at random times, and at the end will blame you for not guessing they actually wanted something different. You'll also have to change it to that, and repeat about a dozen times.
"Harry will play the Pointy Haired Boss in his exercise. He'll give you extra directives, like only using blue and yellow chalk because of trying to consolidate into fewer technologies, or drawing with the chalk on paper because he read that that's the latest buzzword. For your grade, you'll have to figure out a way to satisfy both him and your customer. If you end up trying to mix
A polar bear is a cartesian bear after a coordinate transform.
I was about that age when I wrote my first program. Sure it was a simple basic program that printed my name in an infinite loop - but it was the start of a new route of discovery.
In short:
1) You're wrong.
2) My answer to the GP - don't TELL them... SHOW them !
Unicode killed the ASCII-art *
Have gnu, will travel.
http://penny-arcade.com/comic/2002/05/17