Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

How Do You Explain Software Development To 2nd Graders?

samzenpus posted more than 3 years ago | from the it's-all-about-the-games dept.

Education 430

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."

Sorry! There are no comments related to the filter you selected.

A few kids might be able to get it (1)

Megalodactyl (2445348) | more than 3 years ago | (#37282660)

But I think that 2nd grade is a little bit too early.

Re:A few kids might be able to get it (-1)

Anonymous Coward | more than 3 years ago | (#37282784)

That's what she said!

Re:A few kids might be able to get it (-1)

Anonymous Coward | more than 3 years ago | (#37282848)

You haven't read 4chan lately I take it.

Give them a good example (0)

Anonymous Coward | more than 3 years ago | (#37282670)

The best way to teach a second grader about programming is to explain how pornographic websites are created.

It take alot of software to get out of control skanks from the rented bedroom to your computer.

Re:Give them a good example (1)

unixisc (2429386) | more than 3 years ago | (#37282908)

Dunno whether I'm troll-feeding, but this is a good way to get one's teaching licenses revoked.

Heh, you remind me that joke... (4, Funny)

elsurexiste (1758620) | more than 3 years ago | (#37282978)

What do prostitutes and programmers have in common? They both have trouble explaining their jobs to 2nd graders!

Easy! (5, Interesting)

TheCouchPotatoFamine (628797) | more than 3 years ago | (#37282672)

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!

Re:Easy! (0)

Anonymous Coward | more than 3 years ago | (#37282706)

Think along the lines of the "Mouse Trap" game. It's a wonderful example of programming the perfect mouse trap. I really like the parent threads idea which I think may be great.

Re:Easy! (1)

Anonymous Coward | more than 3 years ago | (#37282754)

You mean like this:
http://www.youtube.com/watch?v=BUCZJWo9MZo
Bonus: Trippy "Mad Men"-era vibe.

Re:Easy! (2)

istartedi (132515) | more than 3 years ago | (#37282828)

OK, that's actually a pretty cool idea. I regret my initial hasty reply of "maybe nothing". You also reminded me of the first program I ever encountered (and I suspect we all encountered it by 2nd grade). It worked like this:

For a picture of a naked lady, turn to page 45.

45: The teacher is ugly. Naked ladies are on page 89.

And so on, and so forth.

It was a simple language, but not well structured. Mostly statements and gotos; but it did have conditionals, perhaps even before Lisp: If you want to see an explosion, turn to page 10, otherwise turn the page.

Of course you can't have the student's marking up books now can you? Yep, the first programming language a kid learned, and it was fun, intuitive and just a bit subversive. Nothing changed when we went electronic.

Scratch (1)

xzvf (924443) | more than 3 years ago | (#37282876)

Introduce them to Scratch. http://scratch.mit.edu/ [mit.edu] It's an easy programming environment where they can actually create something. You can demo programs other kids have written and depending on the time you have, they could actually create programs themselves.

Re:Scratch (1)

JMJimmy (2036122) | more than 3 years ago | (#37282954)

That's a great idea. I'd add to that, not to treat them like idiots - it's amazing at what a second grader can understand. I know I was amazed with the stuff my nephew came out with.

Re:Easy! (0)

Anonymous Coward | more than 3 years ago | (#37282906)

I recall in kindergarten being plopped down in front of an Apple IIe with Logo and letting my imagination run wild about what designs might be created on the screen. Sadly, we weren't let free reign, which IMO, was the worst possible thing you can do to a kid with something new and fascinating in front of them. Here's a neat toy. Now, follow these instructions to the t and don't deviate.

The ability to express my ideas clearly through a completely foreign medium and produce a desired result was astounding to me at that age. Yes, this might be dated, and I can only imagine what it's like growing up with all the tech. we have now, but I identified something then that I still very relevant today. Code can be as much an expression of creativity as it is a tool to perform a function.

It is also likely that, some of these students have already grasped the concept of programming. They just haven't fully realized it yet. Ask if any of them play Chess, or Checkers. Surely you can wrap an interesting tutorial into a game they're already familiar with.

Re:Easy! (1)

Worchaa (774320) | more than 3 years ago | (#37283050)

Absolutely correct--- the parent must either be, well, a PARENT or a teacher (perhaps both). Choose an EXTREMELY simple, straightforward physical task, break that task up into absolutely fundamental chucks, assign a [child-unit]* to each chunk, execute. *[child-unit]: Depending on how many kids you have and how you want to structure things, assign your kids to work as either individuals or small groups. I'll return to this in a bit... For 2nd grade, I'd suggest opening up by having the children consider single-task robots. They'll dig that. A bot can perform ONE physical movement. The task is to move a box from Table A to Table B. Break the movements into chucks like this: a: Grab box, elevate from table height to chest height b: Accept box at chest height and pivot left/right from a stationary position c: Accept box at chest height and move back and forth on a linear path from Table A to Table B d: Accept box at chest height and pivot left/right from a stationary position e: Accept box at chest height, lower to table height and release Following this model, you need three kinds of kid-robots: Lift/Lower, swivel cargo, transport cargo. If you explain and demonstrate each chunk, they'll get it. For 4th grade, do the same except lead them in a discussion to discover that the 5 chunks only require three discrete actions, and have them outline the order on the chalkboard. In essence, they'll be writing code. Good luck, consult the classroom teacher for assistance with the lesson plan, and above all HAVE FUN !!

Build a game in front of them (1)

Anonymous Coward | more than 3 years ago | (#37282674)

I'd suggest hooking up your laptop to projector and building a game in front of them. Take some easy-to-use framework, like cocos2d for python or anything native to your language of trade, but readable enough for 2nd graders to understand. Make a game of walk and jump (a.k.a infinite scroll), tetras, or any other arcade/puzzle thing.

Re:Build a game in front of them (2, Funny)

Pseudonym Authority (1591027) | more than 3 years ago | (#37282788)

I think that they should learn Lisp or Cobol.

Re:Build a game in front of them (0)

Anonymous Coward | more than 3 years ago | (#37283116)

or Logo.

Minecraft (1)

Nukedoom (1776114) | more than 3 years ago | (#37282678)

You can explain how worlds are created in Minecraft, or if that turns out to be too complex to simplify, show that software like Minecraft is capable of creating fun and interesting things, and that it's much more than a black box that pumps out endorphins.

Logo language (turtle) (2)

psy (88244) | more than 3 years ago | (#37282690)

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]

Re:Logo language (turtle) (1)

TellarHK (159748) | more than 3 years ago | (#37282730)

That's what I first thought of. My school was too cheap/broke to actually have the turtle, but the draw-on-screen Logo software out there was a great thing to learn with. It would be interesting to see someone take the idea of Logo, an instant-feedback system, and create a new language with just enough functionality for educational use. You could make it really simple, maybe even an embedded sort of thing on a ROM chip. Just something really basic and low level that you can put on a little box designed to connect to a TV, since even the poor households these days have those. Heck, a hundred dollar box that can hook up to your TV and run uncomplicated little programs that kids could type in from textbooks or even magazines devoted to the idea would be brilliant.

We could call the language something simple to remember, that evokes the lack of complexity inherent in the design. Something really basic.

I see a great future for this. Kickstarter, anyone?

Re:Logo language (turtle) (1)

XiaoMing (1574363) | more than 3 years ago | (#37282744)

Logowriter FTW. And that turtle was so cute. Penup, pen down!

Re:Logo language (turtle) (1)

knuthin (2255242) | more than 3 years ago | (#37282778)

Logo makes sense.
All the Knuth fans might hate me, but I started with Logo + QBasic.
Also I have heard good things about Alice (which could be a bit more modern as compared to Logo and QBasic)

One thing I am curious about is what will kids turn into if they are exposed to nothing but UNIX/Linux based systems. I always wished I was introduced to UNIX as a kid.

Re:Logo language (turtle) (0)

Anonymous Coward | more than 3 years ago | (#37283052)

Why would Knuth fans hate you? Don has always been pretty agnostic when it comes to languages.

Re:Logo language (turtle) (1)

Macgrrl (762836) | more than 3 years ago | (#37282976)

Check out the game RoboRally [wikipedia.org] . Each player has a set of simple commands to execute in the form of cards. One instruction per card. The game board also contains instructions which are played out whenever you land on them. It also demonstrates what happens when you combine instructions and the importance of selecting the right order of instructions.

If you are really enthusiactic you can build a live action RoboRally board (a bit like live action chess), we used to have someone run live action RoboRally at gaming conventions along the east coast of Australia, it was almost as fun to watch and to play as people collided with each other around the board.

Choose your own adventure (0)

Anonymous Coward | more than 3 years ago | (#37282692)

At the simplest level, software is choices.
2nd graders can understand choose your own adventure books.
Software really is nothing more than a far more complex choose your own adventure book.

Scripting with AutoHotkey (0)

ZendarPC (837897) | more than 3 years ago | (#37282694)

I think the best way you could get them up and running would be introducing them to Autohotkey http://autohotkey.com/ [autohotkey.com] . You can literally teach them how to make keyboard presses do new things in 5 minutes. Example: !a:: SendInput I pressed alt+a return

I'd Reckon (1)

Greyfox (87712) | more than 3 years ago | (#37282702)

It's probably easier than trying to explain it to my dev team! Oh! No I didn't!

Heh heh heh.

The intro-to-CS exercise they used back in my day was for the instructor or another student to pretend to be a robot that would follow instructions literally, and other students would have to devise instructions to a simple task. It gives you a good grasp of what talking to a computer is like, without having to go into technical details that second graders probably wouldn't understand or talk about binary math which second graders also probably wouldn't understand.

Use Their Own Work (1)

mugetsu37 (1485997) | more than 3 years ago | (#37282712)

See if they've been working on any group projects of their own and try to relate it that way. Then you needn't worry about introducing a new system, rather show how it would work in your world. My dad was able to explain it to me when I was that young, there's no reason another second grader would be unable to understand the concept.

Scratch as Comprehensible Input (0)

Anonymous Coward | more than 3 years ago | (#37282718)

You might check with their teacher to see if they have been exposed to Scratch and try to do a simple live demonstration. If their technology teacher hasn't heard of it, you might shoot him or her an email about it.

Use abstract language (4, Funny)

antifoidulus (807088) | more than 3 years ago | (#37282722)

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

Re:Use abstract language (0)

Anonymous Coward | more than 3 years ago | (#37282966)

DEF00001: null pointer dereference on startup.

you can't change jobs on the first iteration, function pre-conditions cannot be met on startup.
impact: career cannot be started, family starve.
no workaround

fix: refactor "change jobs" to extract "find a job", "quit", "start pending job" operations. rewrite loop in terms of those.

Implementation notes: There is scope for a race condition between iterations, must do operations as a transaction in this order:
1) find a new job
2) quit
3) start pending job

but on starting the first iteration do not do "quit", and on ending the last iteration must do only "quit"

Re:Use abstract language (1)

antifoidulus (807088) | more than 3 years ago | (#37283058)

You are right, I forgot to add code to deal with interrupts, namely when some smartass gets all pedantic over names you used in your pseduocode and makes a huge deal because he cannot recognize the difference between human language and code.

Re:Use abstract language (1)

gl4ss (559668) | more than 3 years ago | (#37283022)

basic for kids.
find a book from '80s, adapt from that.
it's important that they'll "get" that the computer just follows pre-made instructions, it's just a machine that goes to next step depending on what the state is.
dos and .bat files were easy to learn as a kid and then going forward from that.

the kids have probably seen computers and played computer games already.. fun way to spoil some of the fun of them is to have them play a simple text adventure made in basic, and then show them that.

then have them write a text adventure as a class - to get a taste of what bloated development process can be! they'll never agree to what should happen to the player!

also, for 2nd graders it would be fairly easy to provide them with some solutions to problems from their math class written in basic, or have them write a basic program that generates math exams of their grade.

Their attention spans are very short (-1, Troll)

okmijnuhb (575581) | more than 3 years ago | (#37282724)

So bring a ruler or rolled up newspaper to smack them a bit. And give them sugar candy, they like that.

Re:Their attention spans are very short (1)

rubycodez (864176) | more than 3 years ago | (#37282796)

no no no, that's the protocol for asshole managers who have no technical background but try to micromanage you. The sugar part is where you bring in donuts and such often so everyone loves you and it makes the asshole look even worse by comparision

children, on the other hand, will pay attention to something interesting and fun, and respond to positive role model.

Scratch (0)

Anonymous Coward | more than 3 years ago | (#37282726)

Have you heard of scratch? http://scratch.mit.edu/

It's a GUI based programming language that lets you drag and drop code 'blocks' and create programs that do visually cool things (like watching a character run around the screen).

Why not use an anology? (0)

Anonymous Coward | more than 3 years ago | (#37282728)

I would probably try explaining it like a computer program is like a castle built of blocks. Each block is like an element of code that has a specific function. So you can have the turrets, the drawbridge, the tower, etc.. each of these individually isn't a castle but when you add them all together then you get a program. Your job as a software engineer is to build the castles parts and then put it together.

Know your audience. (1)

XiaoMing (1574363) | more than 3 years ago | (#37282736)

It's hopefully pretty straightforward to assume that no 2nd grader will really be interested in the process of software development.

My suggestion is to start off trying to relate it to something they know and use. There has been educational software for as long as there's been the hardware to run it. OG Oregon trail (spacebar for hunting) to Newschool oregon trail (mouseclick for hunting), to that time traveling mathdog game that I always forget the name of. Try to find out if they play any educational computer games in their curriculum, and then divulge the dark underbelly of the development process that would to into such a game!

And of course, even that isn't without methodology. Children of all ages (incl. us) all love a good story. They will most likely learn more from an example story of a funny situation regarding the software development process, in relation to a game they play, than any template directly trying to assault the subject matter, regardless of how well done it is.

Re:Know your audience. (0)

Anonymous Coward | more than 3 years ago | (#37282892)

*applause*

Thank god somebody here has some sense. I was THE only one in 2nd grade that was interested in programming games. I would have loved to have a presentation. I was learning c64 Basic and never really did get it at all until I got older but I tried and read like hell.

Like I said, I was the only one that gave a shit.

Peanut butter and jelly sandwich (5, Insightful)

dacut (243842) | more than 3 years ago | (#37282738)

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).

Re:Peanut butter and jelly sandwich (1)

dcollins (135727) | more than 3 years ago | (#37282786)

These exercises are really only fair if the permitted operations are defined as the first step.
(1) Definitions (2) Axioms/Hardware (3) Theorems/Programs

Re:Peanut butter and jelly sandwich (1)

v(*_*)vvvv (233078) | more than 3 years ago | (#37283002)

Love this. The "giving of instructions to the kids to execute" by another poster is also lovely, but this would be what I'd do if I'd preferred the kids to remain seated!

A programmer can only make the computer do what the computer can already do. But then, how do you make it do something it has never done before, but just for you?

Maybe start with a premise that you wash dishes. But provide commands that would let them piece together a program that would "scrub" jelly onto a "plate" of bread... Then at the end, don't forget to show them the instructions they compiled, and present that as a function they can execute again. And make a student do it.

That is programming.

Re:Peanut butter and jelly sandwich (1)

Anonymous Coward | more than 3 years ago | (#37283070)

Be careful with that, peanuts may actually kill some of the kids.

Two words: Scratch and Game (1)

fzammett (255288) | more than 3 years ago | (#37282740)

I started getting my kids into programming at young ages... not 2nd grade, but close: my son was in 3rd grade, my daughter 4th. I tried a couple different approaches... gave him an old Commodore 64 (yes, a real one!) and the original BASIC manual that came with it and let him try to figure it out himself (he's been way beyond his age reading-wise for years now so it really wasn't as bad as it sounded). That didn't work. I tried coding a simple Pong game in JavaScript with him following along... that kinda/sorta worked, he was at least interested and went off and tried some things himself.

In the end though, what kept his interest the best was Scratch and making games. If I was going to do what you're talking about I'd do a simple game with Scratch right in front of them. Be sure to mention that Scratch is free and they can ask their parents to get it on their computers at home to play with. Being a game will keep their interest and make it relate-able because, after all, what kid these days of ANY age doesn't play video games? You can throw in some comments about software development generally, vis a vis, how you'd go through a beta test phase, maybe draw a simple wireframe on the blackboard before you start, explain debugging briefly, etc.

I think you won't have much luck with 2nd graders no matter what you do frankly... they just don't have the attention span to get very far... but a game with a visual thing like Scratch might keep them into it for at least a few minutes, might even get one or two of them interested enough to go do it on their own... so long as they don't come trying to take my job the next week! ;)

Sure (0)

Anonymous Coward | more than 3 years ago | (#37282742)

tell them that we produce nothing physically real, but we replace ppl's jobs and create new jobs.
Or, you can just tell them that we create those computer games, and make it possible to create cars, trucks, space shuttle, nuclear reactors, etc.

If you are having this much issues with talking to kids, then I suggest that you not do so.

Robotz (0)

Anonymous Coward | more than 3 years ago | (#37282746)

To successfully teach programming to 2nd graders you need to get them interested. Start with a selection of Arduino-based robots, lasers and a toy shark. And Minibloq (http://technabob.com/blog/2011/04/17/minibloq-visual-arduino-programming/). Then ask the 2nd graders to have a last-man-standing demolition derby style competition using them.

Maybe you don't (0)

istartedi (132515) | more than 3 years ago | (#37282756)

When I was in 1st or 2nd grade, the whole idea of a computer in the home was still science fiction. One day, we were marched into a room at the school and shown some kind of hookup--in retrospect it was probably a lineprinter based hookup to the school's mainframe. We were shown a couple of printouts and I always rememeber what they said. "In order to work with this printout, you need to be good at math. In order to work with that one, you need to be good at reading".

The whole thing was a dog and pony show of course, designed to encourage us to study so that some day we could work with the cool sci-fi machine that filled a room with hums and clicks, and sent men to the Moon.

That was the only in-class computer "instruction" I had until highschool. I ended up writing software for a living a number of years.

In other words, 2nd grade? You could tell them there are little gremlins in the machine and that it'll make rainbows and unicorns if they press the right buttons. Some even say that the average child doesn't have the neural connections to handle some problems until they approach puberty. I know that some math was a real PiTA for me until jr. High, and then it got easier.

Also, I learned more computing outside of class than in it. I came to college knowing how to use a lookup table to make a program 3 pages which most people used 11 pages of if-then statements to accomplish because that's all they were taught. Ahhhh, good times. That said, I do sometimes wish I'd had more formal training. I got realy embarassed one time not knowing the meaning of the phrase "side effect", and I know that probably would not have happened if I'd had a hardcore MIT-style Lisp based CS curriculum instead of my own hacking and a few Pascal-based courses as part of a BSEE.

I remember (1)

www.sorehands.com (142825) | more than 3 years ago | (#37283044)

I started in 1978, when I saw a film on computers. The I took a couple of courses at MIT (Fortran and LISP.)

When I wanted a computer, my aunt told me that only rich people had computers at home for toys. Then she told me that, computers were just a passing fad.

Focus on requirements and design (1)

chatgris (735079) | more than 3 years ago | (#37282762)

Take a very simple application that keeps a list of what money you get, and what you spend it on. A simple display screen of Amount Reason Then explain you need to add two buttons - add money and spend money. Each button opens up a screen where you enter the information, explain how you need fields to enter the data, and buttons to go OK. Then you can go, what if you hit the button by mistake? You need a cancel button. Around this time you need to talk about how dumb computers are, and how you have to tell them every single little detail of what needs to happen. Then assuming the OK button is hit, you need to update the screen to add the new Amount and Reason. After you explain the above (use a blackboard to draw simple versions of what the screen should look like), you will have spent probably 15 minutes explaining what you had to go through at least. Then, if you have the resources, open up something like excel. Explain that each and every little menu and option and button requires just as much if not more analysis like what you just described - and that keeping track of all that information with such detail gets very difficult. And voila, you've largely explained what software development is all about, without touching code.

Scratch? (3, Interesting)

Max Romantschuk (132276) | more than 3 years ago | (#37282766)

A projector, and Scratch?
http://scratch.mit.edu/ [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).

Re:Scratch? (0)

Anonymous Coward | more than 3 years ago | (#37283110)

I've taught 10 year olds how to program using Scratch, so using Scratch to explain software development to 8 year olds should be straight forward. If you do that though, make your program really simple (5 lines at most) and frame it as a story (such as a shark trying to catch a fish for dinner). If you want to ask the kids questions (to keep them engaged) and you're okay with them calling out answers, mention that to the teacher so that he can tell the children it's okay.

And whatever you do, don't let the kids "program" you like a robot. The last time I tried that, the kids forgot to implement collision detection. OUCH!

Dilbert (0)

Anonymous Coward | more than 3 years ago | (#37282774)

Spend a half hour reading Dilbert cartoons aloud, with a facial expression that suggests you may be putting off something important, like Bush reading "My Pet Goat" to the Florida kids.

Here's how you explain it to them. (-1, Offtopic)

Maxo-Texas (864189) | more than 3 years ago | (#37282782)

Divide the class into "business" and "software" people.

Throw a party-
Let the business people attend.
Make the software people work writing numbers on paper.

Tell them it will be like that the rest of their life.
They'll be working 10 hour days and holidays and nights while the business people have nice parties with booze at the bowling alley.

For bonus points, put all but two of the girls in the "business" group. But they won't get it at that age-- so instead give the business group kittens and puppies. But none for the "software" people.

Make them stay up overnight writing numbers on paper while the "business" kids get to go home and watch cartoons.

Tell them how proud you are of them. How they are such hard workers.

More details please... (1)

Fubari (196373) | more than 3 years ago | (#37282790)

More details, please.
This "present special skills to students" is a vague goal.
Is this like parents coming in for 10 minutes and explaining "I am Timmy's dad. I'm a carpenter. I build houses." That would be pretty easy: show them what software does (xbox, ipad, cell phone, internet(club penguin), a tickle-me-elmo or some other toy with software. Tell them you build software, and that software makes these things "smart". What *doesn't* use software in 2011? They're like what, 8 years old? Don't overshoot.
If they want volunteers to help students acquire these skill, you're going to needs lots of prep time.

Get them involved! (3, Interesting)

matt-fu (96262) | more than 3 years ago | (#37282792)

Whatever you do, print out some copies of "Snake Wrangling for Kids" to hand out while you're there. It was written for kids who are eight years or older, but chances are there are at least a couple of kids in there who would get it if they looked it over. I gave a copy to my daughter when she was seven and she thought it was pretty fun. Even if nobody has access to some kind of Python install, it may plant seeds for later.

http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids/ [briggs.net.nz]

Robot or turtle (1)

steveha (103154) | more than 3 years ago | (#37282794)

You might tell them you are going to pretend to be a robot, and tell them to give you instructions to pick up an object (let's say an apple), carry it across the room, and set it down. Write out instruction cards they have to use, cards that say things like "lower hand", "close hand", "raise hand", "walk forward", etc.

The fun will be when they realize that robots don't have common sense, and if they tell you to walk you just walk until you hit something. Or maybe they didn't tell you to line up the hand with the apple, and your hand closes on air.

Perhaps with fourth graders you might just bring a laptop that is set up with Python, and use Python's "turtle graphics" features to draw progressively cooler things.

http://code.google.com/p/python-turtle-demo/ [google.com]

steveha

Re:Robot or turtle (0)

Anonymous Coward | more than 3 years ago | (#37282920)

Note that the turtle software is named after an actual robotic device with a couple of wheels and a pen. You could buy one, hook it up, and draw an a really big sheet of paper for real.

Then let the kids draw their own on screen only and pick your favourite to draw for real.

My primary school gave us a go with a turtle with one of these, my high school had a drafting board with a pen arm that would move around and could pick up all sorts of colours... that was cool.

For the kids that don't quite get it you could take a bigtrax (dumper truck, programmable with movements and turns just like a turtle but no pen).

Lego Mindstroms (1)

Roger W Moore (538166) | more than 3 years ago | (#37282798)

If you have any lego mindstorms build a shooter bot (one that can move and shoot balls) and then show them how you put a simple program together to control it and get them to help design a program to make the robot hit a target (like the teacher's foot if they don't mind!). The lego system uses graphical programming which is not great but nice and visual and is so simple that even my son - who just entered second grade today - has been able to write simple programs with it.

If nothing else it might encourage a few of them to go home and ask their parents for a Lego mindstorms set which is a good way to get them thinking of science and engineering in the future!

Re:Lego Mindstroms (0)

Anonymous Coward | more than 3 years ago | (#37283130)

Decades before MindStorms I always thought of programming as like playing with Lego, but with an infinite set of bricks.

Each instruction in a programming language is as simple and well defined as one of those bricks, but when you combine enough of them in a smart design you'll produce something cool. And the good thing is - those programming instructions are free - you can have as many as you want. Plus mum & dad won't yell when they stand on a programming instruction without shoes on.

Robots! (0)

Anonymous Coward | more than 3 years ago | (#37282804)

Take in some sort of robot - e.g. parallax has the scribbler which can draw pictures with a sharpie. If you can work this into your presentation then I think that it will hold their attention. There are also the mindstorms robots, sumobots,... Perhaps you could look into some of the livecoding stuff that can draw pictures or play music. You could cover something like music sequencing and synthesis, or dsp. Maybe a kinect? How about discussing routing algorithms used on a GPS? I would think that you could have the kids try to figure out optimal routes? You could easily make this into a game.

too young? (1)

dudpixel (1429789) | more than 3 years ago | (#37282808)

2nd grade might be too young to teach anything other than a vague concept of what it means.

I think a simple game would be the best bet - but I suspect the only thing you could convey to them is some demonstration of "i type this code, turn it into something the computer can understand, and when you run it, it looks like this".

I taught myself programming at ~10 years old by borrowing books from the library where you could type in the 10-50 line BASIC programs and run them. I learnt to tweak them to do other things, and eventually had a breakthrough in grade 6 where I discovered how to move characters around on the screen, in response to keyboard input.

I'm not sure if a 2nd grader would be ready to do that, but who knows in today's world? These kids grew up with computers - whereas I only got access to my first computer when I was 8. And it was an Amstrad CPC6128.

Anyway, I suspect what you're really trying to do is impress them with what it means to become a software engineer. You're not teaching them software engineering - you're showing them that if they like to create things, and invent things, using computers, then software engineering can take them there. Show them what is possible, and some idea of how to get there, and you'll have several class members decide right then that they're going to be a programmer when they grow up.

I knew from 10 years old that I wanted to be a programmer. Now, 20 years later, I'm living that dream.

Never underestimate the impact of a simple demonstration on young minds. My motivation was initially game development but as I grew older my love of games faded. I still like to create games, but I'm equally interested in other applications too.

Logo! (1)

Ambiguous Coward (205751) | more than 3 years ago | (#37282812)

Introduce them to Logo. 2nd graders can grasp the concept of a turtle that leaves a line as it walks. I say this from absolute experience: my father was a 2nd grade teacher for over 20 years and he introduced them all to Logo. It was always a HUGE hit, and the kids picked it up amazingly well. Remember, 2nd graders are only around 8 years old. They don't care about for loops and binary systems and memory and stacks. Logo is such a wonderful thing to introduce young children to "making computers do things." It allows them to explore the concepts of telling the computer to do what THEY want, and it keeps the lesson fun and simple.

Make it even more interactive and have the kids execute their own Logo program physically, either in the classroom, a gymnasium, or (better yet) out on the playground with that colored plastic safety tape.

Again: Logo, Logo, a million times Logo.

http://en.wikipedia.org/wiki/Logo_(programming_language) [wikipedia.org]

Re:Logo! (1)

mrbluejello (189775) | more than 3 years ago | (#37282838)

Logo logo logo!

Logo was everywhere back in 1986, but it's nowhere now...what's the deal with that?

Awesome way to start.

Re:Logo! (1)

Ambiguous Coward (205751) | more than 3 years ago | (#37282868)

Seriously, I have no idea where it went. I'm sure there are tons of free interpreters out there for every platform in existence, though. Surely google can reveal them.

Teaching 2nd graders is all about not sweating specifics like how a program runs or pseudocode or crap like that. Logo's great because it's all about simple steps that make a picture, and then experimenting easily with those steps.

In a similar vein: my father used to watch the school district and local businesses for old equipment that was getting thrown out. Old copiers, fax machines, any interesting stuff like that with lots of bits. Then he'd put it on a table in the back of the classroom, and throughout the year, the kids would take turns at it, usually just two kids for 20 minutes at a time. There was one rule: no breaking, no cutting. (And, of course, if you see anything that says "WARNING" or "CAUTION," fetch the teacher.) It might take them an entire year to take it apart, but eventually they'd get it. That's much more interesting and investigative than "how does a photocopier work?" At least to a 2nd grader.

The key is encouraging free exploration, rather than explaining how a thing works. 2nd graders don't give a damn how it works, they want to get their hands dirty. Help them do that, and you'll see huge success.

Re:Logo! (1)

Ambiguous Coward (205751) | more than 3 years ago | (#37282882)

Also I just want to say it's rather awesome seeing a 1980's photocopier entirely reduced to its constituent parts.

Lightbot (0)

Anonymous Coward | more than 3 years ago | (#37282814)

http://www.kongregate.com/games/Coolio_Niato/light-bot

The game Light-Bot covers some of these ideas with simple instructions controlling a robot to achieve a goal.
Also has the bonus aspect of an increasing challenge giving the kids something to work towards.

Scratch (1)

null action (1344151) | more than 3 years ago | (#37282818)

I suggest showing them some simple programs in Scratch (http://scratch.mit.edu). It's like turtle, but with a block programming interface, and a built-in graphics editor. You could bring in a computer with a projector to show them basic commands and what the commands do. Kids that age are able to understand it, and have fun making a simple animation or game. Our elementary school has a computer lab; if yours does you could bring the kids there after your demonstration for some hands-on work. If there isn't a room with a lot of computers, you may be able to ask a few parents to bring in laptops so that the kids can try it.

4th graders can learn to code (0)

Anonymous Coward | more than 3 years ago | (#37282820)

I learned simple LOGO programming (move the turtle, etc.) when I was in 1st grade. I taught myself BASIC when I was in 4th grade, then C a year later. So, I can't see any reason not to just teach them actual programming. For the younger kids, having the program manipulate something in the real world (like that turtle in LOGO) makes it more accessible. But by the time they are in 4th grade, just throw 'em in the deep end. They'll pick it up pretty quick.

Re:4th graders can learn to code (0)

Anonymous Coward | more than 3 years ago | (#37282862)

Actually, as a follow-up to my own post, I just remembered something we did in my 7th grade classroom that was a really good introduction to the imperative nature of programming. Every student in the class was asked to write down step-by-step instructions that a space alien could follow to make a PB and jelly sandwich. The teacher then picked out a few at random and followed the instructions. He made sure to intentionally interpret any instruction that was ambiguous in the "wrong" way, resulting in various substances being spread everywhere but on a piece of bread. It was very funny and after 2 or 3 complete failures to produce a sandwich, the students in the class started to get a much better understanding of how a computer executes a piece of code.

Yes. (0)

Anonymous Coward | more than 3 years ago | (#37282824)

I picked up a copy of 'Learn to Program BASIC' when I was in fourth grade. Though simplistic and outdated (which is probably good for the age bracket you quoted), it did a marvelous job at explaining the core concepts of programming in an applicable fashion. Honestly, the only reason I've been programming into my adulthood. If you can find a copy, I would recommend that as a resource.

First you tell them (1, Funny)

countertrolling (1585477) | more than 3 years ago | (#37282836)

Get a good lawyer...

When software goes bad :-) (2)

Dr Black Adder (1764714) | more than 3 years ago | (#37282840)

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. :-)

Show them you can spell too (0)

Anonymous Coward | more than 3 years ago | (#37282846)

Show them that we can write programs to make computers do things, but can't spell:

"... brave enough to attempted such a thing ..."

Sorry.

Software Engineering in a Nutshell (2, Funny)

The Dancing Panda (1321121) | more than 3 years ago | (#37282864)

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... (2)

HockeyPuck (141947) | more than 3 years ago | (#37282878)

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 "BASIC STILL RULES!" (2)

Dahamma (304068) | more than 3 years ago | (#37282898)

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...]

Start with the Fundamentals (0)

Anonymous Coward | more than 3 years ago | (#37282900)

Have some run around in circles a specified number of times, some trade places depending on how many circles the other kids have run around them, and some run in circles passing papers to eachother until they're too dizzy (while !dizzy). If you do it right they'll be too tired to ask any questions that make you try to cover up the complex underside of the latest free apyware platform they're all playing these days.

start with C++0x (0)

Anonymous Coward | more than 3 years ago | (#37282910)

After the obligatory tutorial on emacs, you could move on to some of the differences between C++0x and vanilla C++, like variadic templates and strongly typed enums. That should cover most of your available time.

In the deep end (1)

multiben (1916126) | more than 3 years ago | (#37282914)

Give them a copy of the C++ standard. Tell them if they don't understand it within one week Santa Claus will poison their pets.

Don't (1)

Psychotria (953670) | more than 3 years ago | (#37282922)

Really. You don't explain to 2nd graders what it's like to be a farmer, a preacher, an engineer, a politician, an author, a doctor, an ecologist, a chemist, a clerk, a physicist, a professor, a teacher, a police officer, a cabinet maker, a candlestick maker, a fireman, an astronaut, a pilot, a nurse, a proofreader, an electrician, a builder, a seamstress, an artist, a race driver, a GIS specialist, a mountain climber, a kebab maker, a bearucrat, a paramedic, a storekeeper, a herdsman, a psychologist, a film director, a lawyer, an artist, a husband, or a wife, a giver, or a carer, a baker, or a master brewer. You just don't "explain" these things to a 2nd grade student. There is no point, because they have not yet developed the understanding, passion, drive, abstract thought, whatever; what I am trying to say is that there is no way to "explain" because they don't have the background. You're over-thinking things I think -- just go in and say why you like your work. That's about as much as they could understand I reckon. You surely can't expect them to be enthralled by the source code of even a simple game.
 

Re:Don't (1)

Psychotria (953670) | more than 3 years ago | (#37282956)

Adding to my above comment, do you think they (the kids) would be excited if a baker came into the class and taught them how to bake a basic loaf of bread? Whack some flour in here, add a bit of yeast, a pinch of salt, pound it, turn it, let it rise, pound it, let it rise, bake (sorry if that's not the correct procedure, I am not a baker). Their eyes would glaze over until they ate the finished product. Even then they wouldn't have learned anything (well, the majority would not have). Except that fresh bread tastes nice.

Re:Don't (1)

jackbird (721605) | more than 3 years ago | (#37283000)

What are you talking about? My 4-year old and his friends go apeshit over baking. Every preschool in America has baking/cooking in the curriculum, because the kids love it and then everyone gets a snack. It frames planning -> effort -> reward in a way a toddler can immediately get it.

No Do (0)

Anonymous Coward | more than 3 years ago | (#37283012)

Most 7-8 year olds would be enthrolled if a baker mixed some dough in front of the with a brief summary of why he's adding each thing. For bonus points he could let them touch the dough set it aside to raise and letting them check on it and watch it grow. That's the kind of stuff 2nd graders run home to tell their parents.

Just think back... (1)

Anachragnome (1008495) | more than 3 years ago | (#37282926)

Just think back to when you were a kid. What got YOU interested?

For my cousin and I, it was this badboy.

http://en.wikipedia.org/wiki/Big_Trak [wikipedia.org]

Man, the fun we had with that thing. The absolute top was getting the thing to fire a spring-action Crossman BB pistol (taped to the top of the unit) by using the dump function of the optional dump-trailer and a piece of string to pull the trigger when programmed.

If that doesn't get kids excited about programming, I don't know what will.

Or you can just fall back on the "In the Old Days..." spiel and start with "Back when I was a kid, we had old ladies weaving code..."

http://en.wikipedia.org/wiki/LOL_memory [wikipedia.org]

You don't. (0)

Anonymous Coward | more than 3 years ago | (#37282928)

Show them hello world and tell them that you use programs to solve problems.

FOSS only! (-1)

Anonymous Coward | more than 3 years ago | (#37282934)

Teach the children about FOSS, but tell them to stay off Proprietary software. Like illegal drugs, children need to be taught about the dangers of non-free software. Tell them how Microsoft tried to enslave the world. Tell them that Apple wants them to join their cult. Tell them that using FOSS is the only way to lead a healthy, moral life that gives back to the community. Teach them about the love spread by Richard Stallman. FOSS is the future. The children are our future. Show them and let them lead the way. Show them all the beauty FOSS possesses inside.

LINK TO COURSE (0)

Anonymous Coward | more than 3 years ago | (#37282942)

Here's a guy who's invented a course that doesn't even require computers.

http://www.youtube.com/googletechtalks#p/search/0/Tcwx-I6Arwk

Learning to code has become both more important and more complicated
in the last decade. We need to make it attractive and easy again.

Once you explain it to them (1)

NotSoHeavyD3 (1400425) | more than 3 years ago | (#37282944)

Could you come by and explain it to some software engineers? I think quite a few of them could do with learning about it too.

How about not bothering? (1)

aristotle-dude (626586) | more than 3 years ago | (#37282952)

Why don't you just let kids be kids?

A big part of the reason why America is falling behind other parts of the world is because they have not learned the concept of "work smarter not harder". You can only get a certain amount of productivity out of a worker where keeping them chained to their desk for more than 7.5 hours a day for 5 days a week.

The same problem exists with schools in America, children are forced to go to school far too early when they would rather be learning social skills and playing with their friends. A lot of european countries start schooling at a much later age but those students end up not only catching up within a year but exceed their North American counter parts the year after. Not only are children in school too early but now some parents are enrolling their children in summer school as well even when they did not need it.

Speshul Skillz (0)

Anonymous Coward | more than 3 years ago | (#37282970)

Seriously, why would kids want to hear about how sit in my cube all day reading dry technical references, find obscure bugs, succeed at being an utter bore at social functions, and generally waste my life? If you really want to entertain and inform, write it up as a horror story. Perhaps someone already has and this is the reason the really smart kids avoid math and science careers. After all, why work hard when you can be a totally successful wall street or executive quackhole and make more in one year than most people save over a lifetime?

Here's my way of explaining "programming" (2)

Sun (104778) | more than 3 years ago | (#37282988)

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

Logo (0)

Anonymous Coward | more than 3 years ago | (#37282992)

http://en.wikipedia.org/wiki/Logo_%28programming_language%29

Its a language designed to educate kids.

When I was in 4th grade.... (0)

Anonymous Coward | more than 3 years ago | (#37283008)

When I was in 4th grade I was writing simple menus in qbasic so my classmates could open all the shareware games I was putting on the computers in the computer lab.

There is quite a difference between a 2nd grader and a 4th grader, but computers were not nearly as ubiquitous then as they are now, so don't be surprised if some catch on faster than you think.

Simplify, simplify, simplify. (0)

Anonymous Coward | more than 3 years ago | (#37283036)

Software development is how you make computers do fun things, things that maybe other people can't do. All the great things that you use a computer for, like games, playing music or surfing the web, needed somebody to write software to tell a computer how to do all that. You can write software too if you really want to, it's just like learning a new language.

That's the basic speil I'd give them. Though to be brutally honest, if you're a software engineer and you don't know to express what you do in a positive, exciting way... then what the hell are you doing with your life?

Keep It Simple! (1)

cOldhandle (1555485) | more than 3 years ago | (#37283098)

Remember they're still very young so just cut it down to the basics - maybe start by introducing some design patterns from GOF, explain the main software development methodologies and processes and their respective pros/cons, and maybe finish up with some quality management strategies such as Six Sigma and perhaps introduce some basic formal verification theory.

Edit game config files (1)

G3ckoG33k (647276) | more than 3 years ago | (#37283100)

Edit game config files, to begin with.

Then find something that requires a loop, if they still have the interest in fiddling around.

This is easy. (1)

grasshoppa (657393) | more than 3 years ago | (#37283102)

You go up to the front of the class and say, "Abandon hope, all ye who enter this profession". If they want you to expound on it a bit, you add "Are you fucking crazy? Go play some foot ball, score with some cheer leaders, drink booze, smoke pot, do anything BUT become a software developer. Your peers are almost universally morons, and those are the ones in THIS country. It's entirely likely that by the time you graduate, you'll have to move to India or China to find work. Oh, and your managers will constantly challenge your faith in humanity."

Bend the rules of a simple game (1)

KevMar (471257) | more than 3 years ago | (#37283114)

Last week I felt like writing a little code with a simple game framework. The tutorial they had was a basic jet flying to the right shooting at and avoiding oncoming items. All the graphics and sounds were in the tutorial with copy and paste code so it was quick to throw together. My kids ages 3 and 6 were hanging out with me watching it come to life. I let them move the jet around when all I had was a moving jet. They saw it as we added targets, then bullets, then explosions, then sound.

What they really loved was me bending the rules of the game. I changed the rate of targets from 1 to 10 to 100 and showed them how it changed the game. They got a real kick out of me changing the bullet logic. I made the jet fire stationary bullets and let the targets run in to them. I also made the bullets fly backwards. I would point out how silly it was and they would laugh. I basically explained that we were in control of how everything acted and we could make it as serious or as silly as we wanted.

Make a simple game but comment out or turn off all the functionality. Then turn each piece on one at a time showing them the result. Have a few things that you can tweak that the kids can see make a difference in the game.

I Don't (0)

Anonymous Coward | more than 3 years ago | (#37283120)

They will be confronted with the ugly sides of modern life early enough. Let them be kids as long as they can.

Photo editing (1)

NotPeteMcCabe (833508) | more than 3 years ago | (#37283128)

Bring your laptop and hook it to the classroom projector. Take a photo of the teacher and open it in two or more different photo editing programs. If you have a Mac, photoshop and Photo Booth will provide a very teachable contrast.

Now demonstrate a variety of different effects you can apply to the photo, comparing and contrasting the UIs, discussing various design/programming decisions that go into developing this kind of program.

Then take some pictures of the students and invite them to try the program, demonstrating the good and bad aspects of the UI for new users.

This will give you an educational presentation that is engaging and interactive, on a subject that is relevant to the students.

Don't forget to Email all the files to the teacher.

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?