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?"
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.
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.
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
I would argue against fractals. Although the code is reasonably simple, it is very mathematical, and that is not something modern children can understand. In fact, for the fifth grade, games are pretty much the only option, since when a kid thinks of computers it's either games or homework. And you definitely don't want them to associate computer science with homework; you'll ruin their surprize when they go work for EA.
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 :)
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
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.
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.
Lego Mindstorms is more about the hardware than the software. You want to keep it simple: there is this arm thing, and it can bend in a number of ways, but it's up to YOUR PROGRAM to guide it properly. Focus on the software and how it is the master over a piece of dumb hardware.
[
... pssst...
they already do it..
that's what we call "education" these days.
- 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.
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.
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.
". . .have them see very basic principles in BASIC. . ."
.since it was possible to "know everything" about the system, down to the bit."
Nooooooooooooooo!
". .
Now this is where the truth lies, at bit level. I like to start, not with a computer at all, but with a bag full of Othello chips (or something similar) and demonstrate in a very clear, graphical and hands on sort of way exactly what is going on inside of the little computer brain, and then show how these arrangments of binary numbers represented in physical medium can be at control of the programer to create whatever it is you wish to have appear on your computer's monitor.
Like, a game, which also gives a chance to demonstrate the importance of getting a good foundation in mathematics and physics if you want to do really cool shit with a computer, and, let's face, it, games are what's going to get the kids exited, not the commandline or beowulf clusters.
KFG
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.
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
Basic is so far removed from the hardware that it is difficult to explain. I've found C easier to teach than more abstract languages. Try explaining how a GUI button works in the context of "a computer is just bits right?"
On the other hand it is soooo hard to show accomplishment anymore. When I was a youngster, printing my name 8 billion times on the screen was fun.
10 print "Joe was here. ";
20 goto 10
Now, the student expects to integrate video before the end of class.
I realize that you could teach the students an IO package (Java Swing, MFC, GTK, etc.), but then we are back to the point where the student isn't really learning what is going on, only the magic of the IO package.
For instance, 20 years ago, my grandmother took two college courses in Pascal, but it didn't really help her use a computer. At the end of the classes, she understood Pascal (actually top grade in the class), but not computers or programming. Her comfort level hadn't changed.
I think assembler may be more exciting than BASIC. I was very excited to learn VAX assembly after only having programmed a TS1000 and a C64. I was able to guess at how the whole computer worked, because I understood the building blocks.
All that said, I'm a lousy teacher.
Joe
Joe Batt Solid Design
GAAAaaahhhhhh!
Quick - learn smalltalk and tote along some toys from Squeakland.
The next generation will thank you someday ...
"But all your emitter and collector are belong to me!"
Vocational drones? Better that than a load of college drones. At lease with a vocation they can learn some skills and make money, rather than getting into massive debt just to end up with a piece of paper that's effectively worthless as every other fucker has one.
As for computer programming, not much point getting into that. The market's saturated, and it's shrinking rather than growing, with jobs all going to India. Everyone and his dog has a computer science degree, but you can never find a decent tradesman when you want one.
Also, there is no such thing as 'software engineering'. Calling something engineering doesn't make it so. Professionaly, the word 'engineer' has a precise legal definition, and calling yourself one when you are not is illegal.
Professionaly, the word 'engineer' has a precise legal definition, and calling yourself one when you are not is illegal.
In Texas at least it is quite legal, as determined by the Texas Board of Professional Engineers.
Not in Ontario. To call yourself an engineer, you can either
a) Maintain an engine b) Have a degree in engineering (and do a few other things) and become a member of the Professional Engineers of Ontario.
However, if you graduate with a degree in Software Engineering (something my university offers), you can become a member of the PEO.
how about logo and turtle graphics, [sarcastic humor]if they are that's going to be obsolete in five years, shouldn't it be lisp based? [/sacrastic humor] the logo/turtle graphics was designed for K-5 er's. Imagine them trying to explain recursive programming to their parents; especialy when they really get it.
Apocalypse Cancelled, Sorry, No Ticket Refunds
Actually there is a such thing as software engineering with a precise legal definition currently recognized by Texas.
The problem is that the term is terribly misused. The first comment I read here involved endless coffee and coding - that's not software engineering.
Analogy:
Software engineering:coding::Civil engineering:plumbing
Another analogy:
Computer Science:software engineering::Physics:civil engineering
The problem is that software engineering is such an embryonic field right now - there are effectively no widely recognized standards of practice, no standardized testing, etc. for it to come to the same level as most other engineering disciplines.
The coders aren't doing much to change this, nor are the true computer scientists. Ultimately, CS will have to contract to a more self-contracted science, coding will revert to a trade, and software engineering will somehow emerge in the middle.
It's not MS/Oracle/etc. that need software engineering, nor are they driving it. It's coming out of Boeing and other large traditional engineering firms dealing more and more with code that DO take responsibility for their work (that's one of the first tenets of a professional engineer) and have no comfortable way now of determining if the work of their individual engineers is good or not.
Bottom line, from the perspective of a professional engineering firm, MS and all other software firms that follow their model of deniability of responsibility are absolute train-wrecks. At some point, a MS buffer overflow or some other dipshit problem will cause a major direct and obvious financial or human life crisis and the Congressional hearings will begin. Software engineering as a widely recognized discipline will be the result.