Introducing Children to Computers? 886
Years ago, kids could be gradually introduced to computers through learning languages like LOGO and educational computer games. Many of us started our computing careers at our parent's workplace, logged in to a word processor to type away, only to become fascinated with the whole computing thing. So Slashdot, let's hear how you were lured into the digital life. What was it that drew you to a life of programming? How old were you when you first used a computer? What pieces of modern software do you think would be a good way to introduce today's kids to the world of computing?
Two of our readers had a few related questions: "A family friend has asked me to help teach her 13-year-old the art of computer programming. I initially thought this would be easy to approach but times have changed since I cut my teeth on text-only, ROM-based, BASIC interpreters. Twenty years ago, it seems there were much more clear and concise paths one could take to learn programming. Now I'm at a loss as to what language and resources I should use. Everything is so high-level that I'm having trouble finding convenient, simple tools that promote the fundamental tenets of programming, allowing newbies to jump in and see immediate results, without getting bogged down in corporate-centric APIs. It seems nowadays most programmers end up spending more time learning the development environment (and thus being confined to specific platforms) than core, transferrable programming knowledge. I'd like to ask my fellow Slashdot dwellers what tools, languages and approaches they have used to help introduce new people to programming?", and from sagefire.org: "My daughter is a huge fan of TuxPaint and ChildsPlay. We use Linux and MacOSX (and occasionally Windows) on different computers. We like to have stuff for her installed wherever we go. The two I mentioned go a long way, but we would love to pick the collective Slashdot brain on this one."
On the "computer programming" question (Score:3, Insightful)
(If s?he gets a crappy teacher though, you've wasted your money)
Pr0n! (Score:5, Insightful)
There's porn in this .tar file. Here's a spec for the .tar file format. If you can write a program that extracts the .tar, you can keep the pr0n!
If you replace "pr0n" and "tarfile" with "game" and "disk", that's pretty much how I got started.
I asked what the computer was for. They told me it could be programmed. I RTFM'd, and figured out how to use the thing to "program" a game whose source code was in the form of ink spots on dead trees.
From there on, it wasn't too hard to figure out that I could make the game better by changing some of the numbers (probability of hitting a target, radius of a targeting circle, etc).
By the end of the day, I realized I was having more fun programming the thing than I ever did playing the game.
It's been 20 years now, and I'm not hooked. I could quit any day I want to. I just don't want to.
Quest for Glory... (Score:5, Insightful)
Anyway, with the question. First thing a child should know is how to get around on the computer. This includes command prompts and everything. Once they are truely mastered at this, I'd find some free compilers and teach a little bit of basic. If they have a school with an MS partnership, they could pickup visual basic pretty quickly.
Don't be an elitist and try to teach the kid C or C++ or anything overly complex. Give them a bitesized language before introducing them to the big stuff. Would hate to see the kid drown cause you put too much in front of her.
Whoa, Cowboy! (Score:2, Insightful)
I suggest evaluating that class/instructor yourself, first, or take the class at the same time as your kid. Bad teachers abound, don't just assume people you get on with just fine are good at teaching, some of my friends couldn't and shouldn't teach. (I know, I've sat through some of their courses.)
Personally, I will keep my kids away from them (Score:3, Insightful)
I understnad their importnace, but i also understand they can be abused and used in a way to foster lazyness.
Infocom and Games magazine (Score:2, Insightful)
Re:BASIC (Score:5, Insightful)
Wanna-be programmer was discouraged (Score:3, Insightful)
Re:Linux, the open OS. (Score:4, Insightful)
With the Commodores and Apples, there was no question about where to start - you turned on the computer and there's your BASIC interpreter. Yeah, BASIC is for the most part an awful language, but it at least teaches the kids the necessary logic and thought processes that go into programming.
My 8-year old son is a lot like I was at that age, and I suspect that he'll really take off in that department if he can get started. He's already taken an interest in modifying a silly game I wrote in C when I was 15 - he likes it mostly because of its quirks and bugs, and is fascinated by the idea of being able to change it himself. C is a tough language to start out in if you've never programmed, though.
Bally Basic (Score:3, Insightful)
Now my family seeks my approval to de-louse their machines of (ad/mal/spy)ware. Since they are family I only charge them 60$ an hour... unless they switch to Linux in which case I offer my services for free.
I don't worry about this kind of stuff. (Score:3, Insightful)
So, just concentrate on raising a bona fide geek, the rest will take care of itself. No sense ramming soon to be obsolete skills down their little throats; ideas matter more and attitudes even more so.
True story from a couple of days ago. The Dear Little Ones were whining to play on the computer. "We won't be happy unless we get to play on the computer." Well, you can't take that kind of guff from the DLOs, so I said they were going on a ranger lead nature hike at the local park. Oh, the humanity. Well, as soon as the DLOs hit the trail, they had a blast. They learned how to tell rabbit scat from deer scat. They learned how you can sometimes tell coyote tracks from dog tracks. Then we capped it off with a short cut over a rocky hilltop and slippery descent down the far side.
They switched to wheedling more nature hike time on the drive home. Which is great: you build memories that will last a lifetime, you give them physical exercise, and you make them enthusiastic about science all at once.
Re:quick and easy: HTML and JavaScript (Score:3, Insightful)
Re:Step one (Score:4, Insightful)
Have you noticed the obfuscation (well, actually you're indicating a familiarity with aspects of it) of television? I've had the creeping dread that media entertainment is heading away from the consumers choice to the conglomerates direction of what we get and how we receive it. You think you have choices, but do you really?
It's like computers. Most desktops are GUI, thanks to Windows, and are inexplicable. There's crap I want to turn off, or change or am not even aware of 90% of the time. Sometimes I bring up task manager and start killing processes to see what they were actually doing and how necessary they were.
Most classes on computers, at the outset, do nothing to challenge thinking about why things are the way they are, it is expected the student accept it as a fact and procede. Seems like being handed a credit card at birth and not realising until you're 40 years old that you could actually save up money to buy things, rather than borrow all the time and manage debt. It's seems like there's a debt of knowledge regarding things today , some critical thinking should be a part of any training these days. One thing is certain, things change and what will be in a few years is little like what is today.
Short and simple... (Score:5, Insightful)
Don't use a computer you care about! (Score:5, Insightful)
Older computers that had only tapes/floppies were better in that way, since it was pretty hard to ruin media that was either in the drive with write-protect enabled, or in the desk drawer.
You probably also want to have programs (read: games) available that can be changed easily.
I haven't tried Macromedia Flash, but I'd look into it.
high level is a bad thing? (Score:4, Insightful)
Re:Linux, the open OS. (Score:5, Insightful)
In general, they just want their computers to boot up and let them download all of the free music that they can find. They're not interested in learning how to make the computer to do what they want, just how to make it get the songs that they want.
I wish kids were as amazed by computers as I was at that age. My first programming experience was on my TI-82 calculator, where I wrote a couple of games and other programs. I had a C64, but at the time didn't have enough exposure to the computing world to understand what it was capable of. I really wish that I still had that old thing, as it was awesome and would be great to show to my brothers-in-law.
Re:Linux, the open OS. (Score:3, Insightful)
Windows doesn't do anything special that its surprising that it works any more then its surprising that any OS ever works.
Re:On the "computer programming" question (Score:4, Insightful)
Look, you are obviously a technically informed kind of person, if not even an IT pro. How about sitting down with your kids, giving them a few first hints, maybe a good book too, and see how they'll do on their own? Having trained instructors teach you sure is an extremely valuable thing once you reach a certain level from where moving further forward by means of self-education gets really damn hard. However, for the basics, a trained instructor would more probably scare the kids away, instead of attracting them to the subject.
Pun Alert (Score:3, Insightful)
No, find them a club instead.
Nothing beats a trained instructor
...except a club.
Amazed? (Score:2, Insightful)
Well, were you as amazed by typewriters then as they are by computers now?
Computer was *new* that time; and because of that, your mind was unformatted. They now come into this world with pre-packaged multi-booting systems.
Where to start a kid today... (Score:1, Insightful)
What tool? Whatever is at hand. What drives the kid? What kind of thing do they want to build? For what it's worth, the first real programming 'language' I learned and really used was Lotus Symphony's @Macro Language. I had a problem, Symphony was the tool provided, learn to code, fix the problem.
Today, Excel or OpenOffice both have fully functional languages that can be used to make very creative apps.
If they're into db type stuff - html, php, apache, MySQL. Total power, lots of cool stuff you can do, tons of sample code available and a great way to break into some highly useful coding concepts.
Bottom line for this message is to to think a bit outside of the typical 'programming' box and think about environments that include programming features. You may be surprised at what the little buggers dream up.
Doug
Logo all the way (Score:3, Insightful)
Most students wrote simple circles and squares that took about 3 lines of logo. I drew a house with trees and stuff. It was a few pages of logo. It was enough that the teacher called my parents and told them I should go to a special school to learn programming.
My parents said no. They thought it was a little too weird. However, my parents got a computer (an IBM PS/1) and within the next two years my Uncle while visiting showed me how to use Basica on it.
That was it. I don't know why but it sparked an interest. I went out and continously checked out the two books on programming the local library had (one on Basic and one on C). I read them cover to cover and saved up 500 to buy my first used laptop around 1993. It didn't come with an operating system so I put this "hacker operating system" called Linux on it. Took me a couple years to figure out how to get X to work but I was able to use gcc which was all I cared about.
So, at the end of the day, I think I would have gotten into programming no matter what. It may have been later than I did but I do believe it still would have happened.
My advice? Don't try to introduce your children into computers. Expose them to everything, see what they take to, and nuture it. I know most people want their children to be successful, but I also think people are most successful when they're doing what they love to do.
Just my thoughts.
Do Nothing. (Score:5, Insightful)
You don't. Your kids will pick what they want to be interested in as a natural result of what they do in life. My parents tried to get me interested in all sorts of things they thought would be good for me - soccer, football, tennis, math team, piano lessons, foreign language, blah blah. The only two things I ever became really "good/involved" at are computers (my full-time career) and paintball (hobby), both of which my parents discouraged (paintball in general, computers in the "don't spend so much time on computers!" sense). I still resent this quite a bit as I would be better at the activities I ultimately chose to be involved in if I hadn't had to waste time appeasing my parents' desire for me to be interested in the activities they thought I should be interested in.
How did *I* get involved in computers? My dad got a computer with a modem, and I was quickly discouraged from spending time on it because I was spending nearly all of my free time on the computer (time not at school or with friends, when we were not messing around with computers), and this was viewed as "bad". I eventually forced them into getting a second phone line, but the next 8 years that I lived at home would be a constant battle between me and them over how much time I spent on the computer.
Ultimately, I escaped to college and a computer engineering major and then got to spend all the time on the computer I wanted. But those 8 years of fighting my parents over it put me quite a bit behind the kids who'd had unfettered, and even encouraged, access to their machines.
So if you have a computer in your house, and your kid is not ALREADY spending all of their time in front of the computer, they're not interested in computers. Nobody had to figure out for you how to get you interested in computers, you figured it out yourself. It will be the same for whatever your kid decides to be interested in. No matter how much you as a computer geek want your kids to be interested in computers, chances are your kids are going to become very interested in something that is NOT computers, whether it be sports, guitar, chess, student government, whatever. Do your kid a favor and support whatever it is your kid spends all their time doing. If you have to "show" them how to be interested in it, they're not interested in it, and you're wasting both of your time.
Re:Cold, Hard Reality (Score:2, Insightful)
Re:Linux, the open OS. (Score:1, Insightful)
my dad works for the university, and was good as DOS 5, etc...the computers that have 4 serial ports. our family computer was a ooold (i say this now) 486 running Win3.1. my instructions were not to touch anything in the Control Panel. i went...yeah... straight for the control panel. i basically poked around until it broke. and then i fixed it before my dad caught me. we installed M$ Word from floppies (40 or so, i think).
then we got a dell v333 running windows 98 so i could use my Lego Robotics kit. (well, not *just* for that). win98 gave me more things to break and meddle with. although, i did actually break the system a few times, i overwrote the MBR, i... well, besides physical damage, i pretty much did everything to it. needless to say, my mom wasnt happy when she had to do the budget and the computer didnt know that the harddrives existed.
i then started linux-ing everything. my dad's laptop from work, my mom's computer... and my dad threatened me pretty much with my life. last year i picked up an old 400mhz, 192ram, 12gig HD...from a college student that'd just gotten a new HP. it's respectible, i guess, it's now my main machine running slack10... and that's where we are today.
i think linux is a great choice. just dont give your kids root, and dont teach them then 'rm' command...
computers are fun, but make kids think. GUI's? nah.
Re:Short and simple... (Score:4, Insightful)
My First Use of a Computer: MS Paint (Score:2, Insightful)
Before we got an IBM PC we had a Commodore 64 on which I played games like Fischer Price School Bus Driver and Firehouse Rescue and a Dinosaur game (whose name escapes me at the moment). After we got a PC (RadioShack brand (Tandy) 386...oh ya). I grew up on all the Learning Company games in the Super Solvers, Reader Rabbit series Treasure (Mountain, Snowstorm, Cove, Galaxy) series. But mostly, as I wasn't old enough to have alot of money, I lived off Shareware and Demos from Epic, Apogee and Sierra. Jazz Jackrabbit, Raptor and the Sierra Demo discs are what I remeber most of.
new generation, new world (Score:2, Insightful)
But reality check here. The world is way different. Computing is everywhere and kids are saturated with it. One progeny has had required computer classes at the local elementary since the first grade. Are they teaching programming? No! It seems the fundamentals of powerpoint presentations are far more important to the generally computer illiterate teachers. The Intel gifts of donated windows boxes to schools reminds me of the handing out of free cigarettes to WWII GIs. Gotta dig those tiny mice though.
Kids care about games, music, email. And they already understand that Dad's computer is way better than the semiretired machine sitting on their desk. They see computers as media delivery machines, not something that can be tinkered with.
The fundamentals of discrete math would be a place to start, followed by scheme or squeak, or both. Logic needs to be in place as soon as possible.
Re:PHP is the "new" basic at many places (Score:2, Insightful)
Variables can be easily understood, because they have a $ sign in front of them ("Dollar means value, son").
There's no GOTO, but you could probably introduce loops with the backwards do
The browser is then your compiler.
The hard part would be explaining why you need to put <br> at the end of your lines--but you can always do it from the command line. And you'd want to disable all filesystem functions for an education environment.
My thoughts (Score:3, Insightful)
I just got back from celebrating my nephew's third birthday. He takes after me in a lot of ways, and so I'm guessing he'll have fun with programming.
For Christmas and his birthday, I got him a KidzMouse [kidzmouse.com] (icky website, great product) and some non-computer stuff. The KidzMouse was because his hands can't use his Mom and Dad's mouse, so he has to have Mom do all his mousing when he plays games. I felt that this interface might discourage him from exploring on his own; hence the KidzMouse.
I've been thinking about him learning a lot lately. Buffy fans remember what she said to her kid sister in "Grave": "I don't want to protect you from the world. I want to show it to you." That's how I feel about my nephew. I want him to be able to experience art, and music, and science, and nature, and-- of course-- technology. I'm not going to shove anything down his throat, but by golly I'll make sure he has the tools he needs to discover them on his own.
That's shaped my choices of gifts for him a lot. I'm trying to stay on the topic of computers here, so the KidzMouse is one example. (I also set up video conferencing, mostly because I'm tired of only seeing him once or twice a year.) I think that this is the most important thing you can do: make sure that the kid has the tools to explore, and learn whatever they want on their own.
So here's what I see as needs. First off, an interactive environment: you should be able to give a command, and immediately see the results. Second, no file editor, no IDE, none of that mess. He should be able to concentrate on playing with the environment, instead of learning the editor (and the associated problem of saving from the editor and loading into the program). You should be ready to introduce an editor, but wait until his programs get long enough that the editor becomes a programming aid, not a necessary step.
You can easily set up a .bash_profile or .xsession to launch a programming environment, and exit when it's done. That can spare him from bash. (Again, remove everything that's not an actual aid to programming at this stage!) But which environment?
Python is probably the closest thing you'll get to our old ROM BASIC. It's fast and easy, and pygame sets the stage for much fun. But without a save or list facility, Python may have some problems. I'm not aware of any way to save an entire Python state, a la Lisp, but you could probably write it based on unexec [python.org]. You can use this idea to implement a "save" command, and just use exec for "load". It's probably pretty simple to write in a kludge to save functions for listings.
The other problem with Python is that it's difficult to edit programs in the interactive mode. You can redefine functions, but you have to retype the whole thing. The one good thing about line-numbered BASIC was that you could quickly make a simple change to a routine.
So you might prefer StarLogo or the like. Many of us started on LOGO or Pilot before we got into BASIC, and I think it's a good environment. Also look at Squeak, which I think has great potential in teaching to program. If I were in your shoes, I'd probably focus on Squeak, unless you're scared of Smalltalk. StarLogo and Squeak deal with the editor issue pretty well.
You will need to provide him with some starting points for exploration. Our generation learned by typing in listings, and then modifying them. I can't really think of a better way. Programming books are too linear; they don't tend to encourage as much exploration. Certainly, have some books available, but I think that "let's play with this and see what we can do" is much, much more important than "let's proceed along these lessons in this order". I'm teaching a friend of mine how to program, and I'm always thrilled when he starts going down his own path instead of staying on my lesson plan. (Well, al
The magic moment (Score:3, Insightful)
I was born in '69. When I was 10, everyone was getting Atari 2600's. My dad steadfastly refused to get our family one. He wanted to get a more expensive computer, which would do more than just play games. We finally got a Vic20 (as many others on this subject are talking about), and, yes, we played a lot of games on it.
I learned a little about programming the thing, thanks to a local computer club and Byte magazine, but it wasn't until I wanted to write my own program for my own purposes that I really took an interest. Of course, at the time, I was getting into D&D. So, naturally, my first program was going to be a character generator.
I wrote the core of the program using the "roll 3d6 3 times and take the best score for each trait" method. I think I had just over 50 lines of code for the actual dice rolling part. I showed the code to my dad, and he said that he thought he could do it in 6 lines. *That* got my attention. So we worked on it, he introduced me to nested loops, and it worked out to be 5 lines. I was hooked. Programming has been a way of life ever since.
Later, I begged Dad for a C64. He told me that I had to run the Vic20 out of memory. It took me another year of work. The character generator took 20 minutes to load from cassette tape drive. But I finally got it over 4.5 KB in size, and Dad was good to his word. He got me a C64, a 1541, and one of the dot-matrix printers. (I never got the monitor, though.) I'm going to sell the whole kit on Ebay soon.
There are a couple of points in the story that I think are essential.
1) You *MUST* have your own motivation for learning how to program. A personal interest in the outcome and a definitive vision for how you want it to work are critical. Nothing else will motivate you to put up with the hassle of using computers.
2) Like the old saying "writers write," which means that people who will be good at journalism will already be writing, in diaries or short stories or such, "programmers program." There are people who program as their job, and there are programmers: people who want to do something specific with a computer, evaluate the options, and, if nothing satisfies them, write their own solution, no matter how small or big that winds up being.
not fake wood -- plastic! (Score:2, Insightful)
Re:Amazed? (Score:3, Insightful)
The thing is that a kid would be more prone to mess around in the windowing enviroment, since it is more intuitive, and more obvious (as compaired to the terminal icon hidden 3 directories deep). Also people like the simple solution, and most things on an Apple (thanks to the "Just Works" philosophy" can be done at a GUI level with no need to ever even think of bash. While using a GUI might be good for little kids, there has to be a motivation for them to graduate into the wonderful world of text (*nix san windowing, programming, scrpiting).
Actually. With OS X, try to get the kids to learn applescript, and from there they can hit up Python, and others... Hmmm... Apple script seems to be a good starting point, rather powerful, rather simple. HTML is also a good starting point, for the same reasons, and kids like making pretty things. Windows users who want their kids to become geeks should give them a couple pages on the server, and open up notepad.
Math is more important (Score:1, Insightful)
I started using TRS-80 at 14, and learned BASIC. My dad bought me a star-trek-like game, and no matter how I tried to emulate it using BASIC I couldn't.
My Math teacher gave me a reference manual to TRS-80 Z80 assembly language before summer. I spent a month during summer trying to decipher the three little pages describing labels and a simple example of writing Z80 assembly for clearing 1024 bytes using LDIR instruction (it was a reference manual, not a tutorial) and finally, after a eureka (finally understood that a label may not be a variable and registers are like variables but not in memory) I wrote an assembly language game. All this in 6 months since I started using a computer. I think knowing algebra and logic really helped me learn fast.
I progressed from there on my own, to learn 6502 and Apple II internals, to hand dis-assembling Atari 800 ROM and learning every detail about bootstrapping and I/O in it, and eventually writing a clone of 'invaders' in machine code that was saved to a tape using one of the routines in the ROM that I discovered, which can be auto-loaded at power up without a need for manual load.
But now I don't see that kind of knowledge being useful for next-generation kids. I wouldn't want my kid to learn that way. In a decade, computers will be used mostly as complex appliances, and programmers will be very specialized. It isn't a problem to defer programming to later years.
Just focus on fundamentals, especially math. Nothing beats math as a required academic knowledge.