Introducing Children to Computers?
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."
My first memory of using a computer was plugging a HUGE game cartridge into the back of my family's Vic20 and being in some castle (like Dracula's Castle or some shit). It was a text adventure game that I really never mastered. I think I was about three years old.
;))
My father started me writing programs in BASIC before I was four (as that was what he was doing and of course I wanted to know how). I could read most things by then and this was not much more than just copying what he did anyway. I mostly remember playing around with simple things like PRINT, GOTO, and INPUT. Nothing very complex although I suspect (but don't know for sure) that my father never did anything terribly complex in BASIC.
We progressed through the Commodore stages (C64, C64C?, C128D) and when I was in 7th grade we upgraded to a Packard Bell 386SX-16 with a whopping 2MB of RAM and a 40MB HD. This is where my love of computers really started... I sat down my first day and discovered the DOS prompt (PBs at the time had a simple GUI menu that basically sucked) but quickly found myself unable to load anything from the 3.5" disks.
LOAD "*",8,1 was giving me "Bad command or file name" repeatedly... Dejected, I sat down and read the DOS 5.0 manual from front to back (several times actually). I spent time writing crap in Q-Basic (and eventually QuickBasic) and then moved on to Turbo C++ (which I must say had a far less interesting manual than DOS believe it or not
What I enjoyed most of all (and I have posted about that on Slashdot before) was thumbing through the old-school Computer Shopper looking to build my dream machine and making sure I priced it the best I could.
I miss the days of old-school computing when everyone knew at least some part of what was going on inside their machines and the OS even allowed you to! I missed that part of computers until I moved to Linux in 1996.
I'm just glad that with Linux I can continue to allow it to remain that way. I can forever live in the world that I had grown up in. So to answer your question about what I would do to introduce a child to a computer... Linux!
Linux allows you to get right down there in the trenches with your machine. You get to see what the hell is going on when it boots up. Sure, most people don't care (because they don't have to) but we all grew up watching DOS boot before Windows. We knew how to edit config files and save on what little memory we had so that we could run NewGameFoo.
I enjoyed learning about computers and playing around and finding out how they ticked. It scares me that NO ONE will know how soon as Windows does NOT really allow you to know. Everything is behind a shroud of secrecy and hard to find registry settings that are buried in deep trees of information.
At least with Linux a child gets the best of both worlds. A modern operating system GUI with nearly all the comforts of Windows while still being able to learn if they want to.
But that's just me. I learn by doing not by example. Using a computer that is open to explore was the best option for me.
YMMV.
Enroll them in a class. If they have the money, it's the best way. Nothing beats a trained instructor
(If s?he gets a crappy teacher though, you've wasted your money)
Le français vous intéresse?
I'm going to bet practically everybody else here had a very similar beginning... :-)
My father had subscriptions to Atari magazines that used to come with programs in them and he would sit me down with a magazine and I would type the games straight out of the magazine to play them. It was an Atari 400 with a tape drive on it for storage (remember that loud screaming noise that sounds like it would be on an industrial song track). I was 5 or 6 at the time. Later he would teach me how to change different things and teach me what they meant.
I program for a living now and always let him know that I owe it all to him. Feels good when he comes to me with programming questions now. Kinda brings a little tear to my eye...
The Nomad
"Men of lofty genius when they are doing the least work are most active."-da Vinci
In my humble opinion, the most important thing that we need to teach children at a young age is to TYPE. Just as everyone doesn't remember learning a first language but always struggles with a second, teaching kids to type is much, much easier than teaching teenagers to type. At that stange of life, your mind is designed to soak up new information like a sponge. I learned in 1st grade, then grew up watching my peers (from other schools) struggle through intermediate school.
Electrons are free; it is moving them that becomes expensive.
I first started using computers when my dad brought home our Kaypro 4MHz 8088. I learned DOS by watching over my dad's shoulder, and then trying to play games between when I got home from school and when he got home from work.
as far as teaching programming goes, try karel the robot that's what we used in high school before learning pascal, and it made the structures seem very logical.
He showed me statements. I figured out how to write a scientific calculator in BASIC. It never became my thing until daddy gave me a Pascal book and Turbo Pascal 4 (?). It was a dream! I reinvented bubble-sort, and stuff like that. I was sold. I knew I was going to go into computers.
That's why I enrolled after highschool in the computer science classes in a not too remote University. I learned about Linux and BSD, became a OpenBSD fan... I managed to get through my eductaion and get a job as a programmer. I launched Java in the company that took me (and it was a big commercial success), and now... after 6 years... I quit that company. I left to become a teacher... I'll be teaching computers to high schoolers... and so the circle ends.
Ahhh...the great dumpster continuum. Many a free computer will be found there. -- sowth (748135)
way to start on computers, as it is simple and imaginative. If you can find a PC Logo Emulator/program I'd start with that :-) and I'm sure there is one available out there.
You know what also would probably be an easy way to get someone in on programming? Straight up line number GW-Basic or AppleBasic. Simple, and teaches basic programming concepts fairly well (If statements, loops, etc with simple input and output). Beats trying to teach the principles of OO design at an early age. Little baby steps would be key...
...in bed
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.
Check out the Basic Stamp from Parallax. There are kits that use it to teach logic, programming, electricity/electronics, etc. Price is good (radio shack has the whole kit for $79 bucks - it's called the "What's a microcontroller" and it comes with everything you need to do a bunch of nifty experiments). User forum support is pretty good too: http://www.parallax.com/ Dan
Yes, it is amusing... but one of my greatest memories ever dealt with downloading a topless picture of Cindy Crawford off of a BBS. I think it took a good 15-20 minutes to download and my brother had previously installed a program that let you view the image as it came in. Oh man it was killer.
Now the earliest I remember would be playing some tape based games off of my brothers Commodore 64. I don't remember the games that well, and I know my brother hated to let me use his computer, but I think it was worth it.
... or, back in the day, it was "Hero's Quest." That old sierra game is what really sprung me into computers and programming. Played around with basic at home, and pascal in high school.
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.
Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
My dad (also a computer programmer) enrolled me in a programming class at the YMCA when I was 7 years old! He then got me a Tandy computer that plugged into the TV and used a cassette player for storage. That got me writing small programs.
Ever since then (and my impending video addiction with the Nintendo systems a few years later to present) always kept me hooked on computers. My small programs became larger hobbies and eventually my career.
So I guess my point is to start the kids young, they can handle it. Dust off a copy of BASIC and show the kids what you can make a computer do. It doesn't take much.
END OF LINE
LOGO is waaaaay too turtle-centric. If you really want to screw up your kid's brain, teach the 'em BASIC. I don't mean Visual Basic, either. QBASIC is the only way to go. If they learn that, they'll be stuck drinking Mountain Dew forever. ; )
I got started using DOS on my dad's 386 "lunchbox" computer when I was 5 or 6. My dad taught me all the important commands, like "cd", "mkdir", "del", "format" (that one was *really* fun), "edit", and "cp". He was very patient, and even brought home PC World from his office each month, which was much better than it is now.
DOS is (almost) gone now, but I suspect the GNU tools & BASH might be be best for kids just getting into computers. Forget Windows...they'll just use IM & surf the web. Java is far to high level, and C++ is too complicated. A few years messing around with gcc and Dr. Dobb's journal should do the trick.
Today's world of computing? Give the kid an EULA from Microsoft, a C&D from Disney, and a subpoena from the FBI. I'm not completely joking, either.
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.)
A feeling of having made the same mistake before: Deja Foobar
you were lucky. There were 150 of us using abacus in middle of 't road.
What more can I say. Let's face it kids today are not going to write a video game to be proud of today like they could back in the Apple/64/Atari day.
However something like mindstorms is fun and accessible. Also a good way to get your feet wet programming.
See my blog http://ilovecookes.blogspot.com/ for light hearted technical information.
I became addicted to Doom and Wolfenstein back in the day and only in between playing doom did I mess around with the computer to do other things and gradually gained more and more knowledge. Also when I was much younger my dad wouldn't let me touch his computer so when I was finally around one that I could I did everything I could imagine(except that you sick bastards).
I know what's on your hard dr
Simply because i want them being active and playing outdoors. Yes I have a degree in CS, but the last thing i want are my children constantly playing on the PC or sitting infront of a TV.
I understnad their importnace, but i also understand they can be abused and used in a way to foster lazyness.
Honestly, I have no better memory of my introduction to computing than Oregon Trail for the Apple II. I fondly think back on shamelessly killing hundreds of pounds of buffalo, only to bring fifteen back and have Sarah die of a cholera.
It started with a toaster.
At 6 years of age, I received a toaster (with a cord cut off) and I rabidly rip it apart down to the heating elements of which I made slinky toys out of them. Many more appliances were "gifted" to me for adventurous disassembly efforts with glee.
At 8, I received my very first ATM card, I learned to deposit an empty envelope of $1000 and managed to withdraw $100 max. on the same hour! Bank later called and said "we made an error, pay it back."
At 10, Captain Crunch cereal featured a toy whistle. I learned that free phone calls can be made at payphones.
At 11, blue box was made using those Japanese 250-in-1 electronic kit box. Radio Shack becomes my best friend.
At 12, TRS-80 Model I was purchased. I started work as a BASIC programmer for designing a paypoint station in accepting Visa/Mastercard at gas pumps using 8' drive TRS-80 Model II with a sporting 640KB memory... Hooha! Mastered 300 baud communication using 250-in-1 electronic kit.
At 13, Exposed to PET computer, Commadore and a 6502 microprocessor. Mastered assembly language. Actually memorized the entire instruction matrix.
At 14, designed a payroll, general ledger, account receivable program on HP-1000 with those huge disk pack array.
At 16, tweaked and enhanced several BBS software. Ran a BBS station.
At 18, left for college with my various computers. Wired dorm room for wireless alarm (using Tandy car alarm transmitter and a pager, tied to serial port of computers).
At 19, left to work for an undisclosed company who requires mastery of 236 network protocols and other unintended usages. Been there ever since.
I started teaching myself HTML almost as soon as Netscape 0.9 hit the FTP sites. The online guides were helpful, and View Source, as much then as now, was the best way to look at good and bad code and reverse-engineer it for my own purposes.
Once JavaScript was added to the Netscape browser, I began learning it in earnest. It was an ideal "gateway language" for me because it required no compilation, no debugger, nothing more than an OS-standard text editor and the free web browser I was using.
I could build scripts one line at a time, debugging them as I went without much incident. Then as I got the hang of it, I'd start using functions and subroutines, then external includes, objects, and all the other things that make "real" programming what it is.
HTML and JavaScript are still ideal, in my opinion, for teaching someone who doesn't know much about programming what you can do and what it should look like without taking a lot of time or software to produce results.
While it might be tough to get any kid these days enthused about typing 4 pages of Basic to get a little sprit based "Game", I'd think that you might have a shot at getting a child on the right track with something like Zork II. (A WELL!!! Took me months to figure out that one) Typing is such a core skill, and you don't want someone to learn how to type in chat rooms, or email.
My 13-year-old brother recently decided that he might like to learn how to program. He has been fascinated by computers for a long time -- mostly due to computer games.
I've been programming since I was 8 -- about 18 years now -- and I started with BASIC on a VIC 20. I don't think BASIC is the way to go these days, so when I started to teach my brother I thought first of Python. Python has a lot of advantages for beginners and is an excellent tool for teaching programming. It works great for procedural, object oriented or even functional styles.
So far he loves it! At first we were using Dive Into Python as a guide, but he wanted something that he could handle more on his own. Dive Into Python is much better for programmers looking to pick up Python. After a bit of searching I settled on Michael Dawson's Python Programming for the Absolute Beginner. I gave him that book for Christmas and he has loved it!
The cool thing about Dawson's book is that the example programs are all games. It starts really simple (guessing games and the like) but by the end of the book Dawson has you using graphics and animation (thanks to Python's great package support). If you're looking to help someone learn programming then I'd have to really recommend Python as a start and a book like Python Programming for the Absolute Beginner as a guide.
I remember logo, I also remember being discouraged from learning about programming computers because I wasn't good at algebra, and wasn't good at rote memorization. I regret not learning. Its easier for people to see why they failed to learn than why they had success. You might specifically ask nonprofessionals (perhaps women in particular) what would have encouraged them, rather than asking professionals, who often had natural inclinations to take up programming anyways.
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.
A steaming cup of soykaf would be real wiz right now.
It was ham radio that got me into computers. Something about hooking my Vic20 up to my Hallicrafters HT32B, and Drake 2A to send and receive morse code was all that it took. I know people are saying there's nothing good that comes out of ham radio, but they are wrong, dead wrong. It's been a driving force in my education and my career. My kids are showing an interest in ham radio, and I hope it'll stay around for them to learn from. .mark
Remember how clueless your parents were? Still managed to raise a geek, right?
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.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
I doubt this type of solo introduction would be effective with kids today, but starting them out with an easy language which is not very in depth, such as QB, and having the ability to produce some sort of low level game would probably help hook them (unless they are just completely uninterested).
In the end, and no matter which way they get started, it is going to boil down to their own motivation, and their wanting to learn it.
I am now a second year college student majoring in Computer Science, and program in C and C++. :)
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.
A feeling of having made the same mistake before: Deja Foobar
As a father myself of two adorable li'l monsters, I've decided that they won't play with computers at all until later in their childhood. Computers and TV both seem to encourage a lot of button-pushing, while I'd rather they learn to think and make things in their world. Putting together a unix-alike will be child's play once their little brains are appropriately wired to see the world as the great big machine it is.
A strange as that may sound to some, PHP is the "new" basic being taught at many community (and 4 year?) colleges.
My local community college switch just this year from teaching QuickBASIC to PHP as the starter language. At first I was like... WHaaaaa?
Then I got to thinking about it, and realized that PHP can be as simple or as complex as the user wants it to be, and it really *is* a good starter language, and a spectacular path towards C++. The web browser is something most people are already familiar with, and what can be better than designing programs that communicate with your web browser if you want, or they can do other things, obviously... but the web browser is pretty close to a basic prompt, and you can do some neat things that would be entertaining for kids (maybe not 3 or 4 year old kids, but 7 or 8 and up).
If you're like me, your first reaction is going to be the "Whaaaaaa?" to it, but stop and think about it and give it some serious consideration before dismissing the idea... it really does have some merit.
Squeak is a fairly popular approach at the moment. I don't know of any schools that use it directly, but I've run into free camps that promote it. Squeak is a platform-independent Smalltalk, but when teachers say "Squeak" they mean the e-toys framework for building little interactive applets. IMO it's an interesting little system, but fairly awkward to pick up.
For older kids, the game-oriented BASICs give quick results--things like Blitz Basic, Pure Basic, and Dark Basic. Almost certainly you want to steer kids away from stuff from the dark ages, like the Linux command line, makefiles, gcc, etc. I know, I know, lots of geeky types are going to hate that suggestion. But stop, take a step back, and just see the reactions you get to that stuff. It's not that it's unusable, just that it feels so awkward and out of place in the modern world. Show someone DrScheme, for example, and then show someone Emacs and makefiles. Your student will be horrified at the latter two.
but lets just forget that MS infringed on apples IP that apple copied from xerox
the differance between copied and infringed is that when jobs looked at xeroxs PARC os(es maybe) they told him xerox didn't care about the technology because they were in the copier business.
there is nothing new under the sun. meaningles meaningles everything is meaningles
sometimes i have to respond to flamebait
"He's a real midnight golfer"
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.
10 COLOR RND(15)
20 SET(RND(20),RND(20))
30 GOTO 10
Sadly, it is harder to find programming environments for kids that provide this kind of simplicity these days.
Last year I started teaching high school aged kids to make simple videogames using Flash. My class is called "Make your own videogame in Flash Actionscript". Essentially, my class is an introduction to programming, and something of a "stealth math class." I would much prefer to be using BASIC on old VIC-20s, but Flash isn't too bad for this activity.
I'm aware of the huge anti-Flash sentiment on Slashdot - one I generally share when I see it needlessly used on websites. However, I think Flash is pretty good for teaching kids to program.
Since it's vector based, the equivalent code to produce the effect of the above (raster based) BASIC program is too large (see http://krazydad.com/bestiary/index2.html for my implementation), so I have had to rethink how I approach things. I have to start with programs that are simple in Flash, not programs that were simple for me in 1981.
Still, I have to spend a couple classes getting past some unnecessary high-level concepts integral to Flash (like "timelines" and "the stage") but eventually we do get down to programming.
When a kid writes that first program in which they can control something on the screen, they invariably yell "Yes!!" or "Alright!!" This is why I like teaching programming.
The reasons I chose Flash, over something like LOGO (or Squeak) are:
I am in college for a game design major. There are 2 sets of courses. One leaning more towards art, and one more towards programming. I switched to this major, and am having to take alot of freshman classes this year (I'm a sophmore), so I can speak from kind of a "already knowing how to program" kind of stand point.
I would have to say that Python would be a rather easy language, but with all of the neccesarry parts, to teach the child. Its very easy to get a game programmed. It only took me about 20 minutes on my first try to make a simple program that opened a window, created a border, and let me move a sprite around the screen with the keys on the keyboard.
I heard his talk entitled, "Introductions To Computing Should Be Child's Play" and he did a demo of Squeak, and it made me feel as giddy as a schoolgirl.
I grew up in a geeky home with both a dad and older brother consumed with computers.. yet it was not something I wanted to be a part of until I hit college. Females take to computers in a whole different way. I didn't care how to do the little tasks here and there, like fixing little problems that I deemed 'computer janitor' type jobs that periodically sprung up when I was doing basic gaming and word processing. What I wanted to know was the big picture. I needed things explained to me in terms I could understand/ relate to. Something like 'computer story time' would have sparked my interest when I was little, breaking down how the various components communicate with one another and what their jobs were inside the computer first on a broad scale, then breaking it down into finer pieces as time passes. Starting a task like 'ok, we are going to install a new nic into the computer' and explaining WHY you are doing it before you do it, what it does, etc and then displaying the results in a meaningful fashion might useful too. Long story short, fixing something because it is borken just didn't excite me. It doesn't excite a lot of females. Fixing something with a story, with a purpose, with results you can prove to her after the fact.. now that's exciting.
give him a non gui *nix box.
make sure it has some text/curses based games and let em loose on that. Also, have some *nix manuals lying around.
If they figure out how to get access to the outside world/install X, then all power to them (feel free to give them hints)
the general idea is they learn gradually through exploration
---- Put Sig here:
My first experience with a computer was when I was five. My dad had an Atari 800. (He ended up selling it because he couldn't afford a disk drive! This was when disk drives cost hundreds of dollars.) I remember one night he typed in a program that acted like an etch-a-sketch.
:-)
I few years later, my parents bought me an Atari ST. I was hooked on computers from that point on. One day I was reading an article in Atari Explorer magazine about programming. The article presented a simple "Hello, world" type program in BASIC. I decided to play around with it and see if I could change it slightly. (This was back when every computer came with a copy of BASIC.)
I ended up teaching myself BASIC over the summer.
Anybody remember when computer magazines used to publish type-in programs?
I know nowadays a lot of people don't like BASIC because of goto and what not. But I think it is a good language to teach some basic principles (what a variable is, what a loop is, etc).
I'm currently learning python. I've wondered if it would be a good first language for someone. I'm not sure it would be. For one, I'm not sure if someone who learns it would appreciate all the things it does for you. Second, when they learn another language, I'm not sure what the learning curve will be like. It might take them a while to get used to the new ideas. On the other hand, maybe starting fresh and not carrying some of the baggage of older languages would be good for a new generation of programmers.
I've never used Pascal, but I've heard it's a good language for learning programming.
Now, I've heard some people say that OO is the way to go and should be taught to newbies. But even with OO you still use parts from procedural programming: you still use variables, still use loops, still call functions, etc. I see no harm in using a simpler language to teach the fundamentals before moving on to objects.
Maybe what we need is a version of knoppix set up for teaching programming.
Python links:
Main python site: http://www.python.org/
Dive Into Python book: http://diveintopython.org/
Pascal:
A free Pascal compilerhttp://www.freepascal.org/
Basic:
I don't have a link for a version of basic. But I know there are some on the web. And Win 95 & 98 have a copy (buried) on the setup disk. Look in the other\oldmsdos folder.
More:
http://thefreecountry.com/ Has links to free compilers & more for various languages.
Old computer magazine archives:
http://www.atarimagazines.com/
Coder's Stone: The programming language quick ref for iPad
Electronics. Heathkit ET-340 trainer. Assembly. Being able to plug in hardware to make the platform do what I wanted.
;)
Then the Vic-20. There was a space rocket missile type game in the handbook. I modified it a LOT. Called it "Dense Pack" after a politico-social concept of the time. (once you ran out of missiles you were dead
I don't think you can force this on a kid. Nor should you. But offering the right teaser is still fair! lol
Even the new scrip language in O-Office1.9 is a start. There's several Turtle-like things around.
or like I did, give my son an old phone to tear apart...
The summary says high level language like it is a bad thing. If the kid is actually interested in programming why not have it play around with the Python interpreter. You gotta love instant gratification!
How'd I get started in the digital realm?
True story. It's 1986. I've just turned four years old. My parents visit college friends of theirs, who happen to own a computer. I'd never seen a computer before this.
Ten minutes later I formatted the C:\ drive.
And I've been breaking computers ever since!
"To pass through the jungle; silence, courtesy, ferocity, as the occasion demands." -- Kamau, "Proper Passage"
My mom worked for an AlphaMicro Systems dealer in Colorado in the early '80s, and she brought a CBM, and later, a PET, home for her and us to all use. I remember playing some very basic games on it, word processing, and even getting into programming a bit on that huge box.
My brother and I later got further into programming when the VIC-20 and C-64 came out, but I will always think of the PET as my first computer.
The best thing, aside from the thrill of the computing experience, was seeing the autographed photo of William Shatner, holding a PET, with the inscription "Glad to have you on the team" on it.
Sheesh I was reading through all these "My first computer was a and I started programming with it." I feel a little alone seeing as how my first computer I immediately used to find pictures of naked girls.
No sig for you!!
"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."
He hits it on the nail - when i started off on the ZX Spectrum way way back in 1983, it was very very easy to get into programming.
1. Buy zx spectrum
2. Buy Your Sinclair magazine
Your Sinclair was just packed full of Sinclair Basic programs for you to type in - through that, you learned about programming. It really was kind of an open source way of learning about programming and it was just BASIC , but at least it gave my former 12 year old self a leg up and a way in to murky world of coding.
Fast forward to today and i dont see a "Your PHP" or "Your Python" kind of weekly magazine. Dr Dobbs magazine comes close, but that's really seriously high level.
Yeah, i know - PHP and Python have tons of websites, but in reality , a printed magazine on the newstands would make an impact. Maybe we , as in the Slashdot crowd or the more general open source community, should seriously think of going back to "old media" and think about doing a printed monthly magazine with nothing but code in it in order to give the youngsters of today a bit of inspiration.
maybe we've been too self-centred and too self-obsessed with the whole "internet" thing that we've forgotten where we've come from.
we need to reach out and get the kids that dont use the internet involved. maybe that's what might happen over the next few years - new media re-discovers the old media. a kind of influx of new media types into the world of real world publishing.
just my 2 euros.
Being 14, I hope I can shed some light on the problem.
I started out writing simple programs for the basic interpreter in my Ti-83 graphing calculator. Noticing I was interested, my dad got me started using Python.
I'd say python is by far the best choice:
-It's interpreted, so you get instant feedback
-It's simple! I could teach my 10 year old brother to use it
-It's not 'write only'; you can look back on old projects and understand every line of code
-Lots of good documentation
Give it a try and you'll see what I mean.
No, find them a club instead.
Nothing beats a trained instructor
...except a club.
taken! (by Davidleeroth) Thanks Bingo Foo!
>> I wish kids were as amazed by computers as I was at that age.
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.
If you fear that teaching your kids Flash leaves them too many chances to stray from nice safe animutations to actually doing something useful (I'm being sarcastic here), another thing you could try is one of the many programming games that are out there.
Free ones like GNU Robots and Core Wars are a good no-cost option, but I imagine that with their lack of flashy graphics, they would fail to capture the interest of most kids nowadays. I would suggest instead tracking down Mind Rover (out for both PC and Mac), or an obscure Playstation game called Carnage Heart.
Both feature a drag-and-drop approach to programming. In Mind Rover, this is done via a flowchart, and you program the robots to do just about anything there has ever been a competition to pogram robots to do except soccer. (blow out a candle, battle to the death, etc.)
Carnage Heart, on the other hand, is really a turn-based strategy game with mechanics reminiscent of Axis & Allies or Risk. I personally prefer the way its programming is done, though, simply because the programming is very grid-based - strict 2D control flow with absolutely no subroutines or GOTOs. This limitation means it isn't going to take a kid very far towards learning to use modern programming languages, but it turns the game into a very interesting mental exercise as you work out nifty tricks for packing as much logic as you can into a rectangle that can only hold 10x10 instruction units.
The language is very simple, but lacks speed. http://www.ticalc.org/
I personaly started on a PET, but that's not really important. The real question is 'Where to start?' Regarding programming the answer is simple, the begining. Start with concepts and leave variable types, apis and syntax for later. Psuedo code is your friend. While this may not seem particularly satisfying it doesn't take long to lay the ground work, controls structures, methodolgy and that lot.
/simple/ language. Avoid languages with beastly syntax and apis. Pascal was a teaching language for a reason, it was/is very simple. I personaly moved from 'playing' with basic directly to C.
After the core concepts have been taught, and perhaps in parallel, choose a
I remain to this day of the opinion that C is a simple and powerful language where the fundamentals count. I admit that there are some concepts that can be a bit 'hairy' when dealing with C, pointers for example, but they can be taken in stride. I'm not suggesting that C is the only way to go but syntacticly it's simple, the api is small and straight forward (mostly), types are 'reasonably' understandable and the syntax has been largely adopted/adapted by most newer high-level langagues.
One drawback to C is that while it teaches pragmatic programming, things break if you get careless, without apis it's not flashy. You're teaching concepts though so that should be less important. If you're looking for something with more exciting immediate gratification look to another language.
I'd recomend PHP if that's what you're looking for. Again, it's a relatively simple language, and it's typeless which avoids a stumbling block. It can be combined with HTML to give some 'graphical' results.
Why PHP instead of Java? I think Java's api is a bit overwhelming to start with, but that's my opinion. Why not C++? 1) It needs an external api for graphics. 2) In my opinion it's inheritence/overloading syntax *bites*.
Basicly take things in step. Start with concepts. Move to application of concepts. Next, 'practical' application of concepts. Advanced concepts and techniques will come with time/experience. Don't rush things, no good comes from it. A strong background will make learing other langauges and more advanced concepts, OOP for example, less of a task.
That's 'Where to start?' from my perspective. Of course this is all my opinion, and it's based on my experience, so it may be a bit skewed. Take it for what you will.
I am invisble, and you can't see me.
I really wanted the Sony (2 x double density disk drive), but it was deemed too expensive by my parents. They bought the darn PC after quite a time of nagging from my side. It even had floppy disks and quite good graphics and sound for that time.
But the most important thing: it came with a MSX DOS & BASIC handbook. The thing booted in BASIC and I became used to loading the first games from that. The first BASIC programs (starting with the print statement in a loop), but in a few years I was even doing assembly stuff. Z80 is a fun and easy processor to program.
The problem back then was finding people with the same interest. There were a few that did some basic C64 stuff and even a few MSX owners around the place, but nothing fancy. The only advanced refference I got later was an MSX 2 reference book, but it was stolen out of the library by a misserable sod, who happens to be my friend until this day. I stole it back and got it laying around somewhere.
Currently the problem is getting a nice programming environment. HTML is just data, and JavaScript is awkward and ugly to program. No programming tools are installed with Windows as well (and Windows scripting is just too much). I wouldn't recommend scripting and OO is a bit much to start off with.
The good thing is the internet. LOGO is still around, and is probably a great thing to start off with (it's free you know). I've got LEGO mindstorms and that learn children the basics really easy, using flow diagrams, but it is pretty expensive (~250 dollars for the one you can program). Anything that is easy to learn and visual may sufice though. And make sure they've got plenty of refferences - get the school involved or something.
If everything fails, fall back to BASIC, even using an MSX emulator if you must. Don't forget to unlearn it though once they get the basics. Visual Basic is the worst PL on the planet.
Times have changed. But I think text based is still the way to get into programming.
Even young kids can learn how to code HTML and make their own web pages. (Not that this is really programming, but it is a step in the right direction.)
Then, Linux and C/C++. Give them a good tutorial (book or online), and show them how to do "Hello, World!" using gcc.
The ones who are going to love it will pick up the basic idea in an hour or a day or few days. Then you give them K&R and... they either love it or they won't bother. Some people love it. They get to do what they love (or waste time, writing about it on SlashDot).
Possible Interesting Projects:
- funny programs where the computer complains that it feels funny, and starts going insane and asking the user funny questions and using the input to ask even more insane questions. Another variation of this is the program that looks like the computer is logged out, so you have to enter your password again... actually, if you tell your kid about this one, they will think it is so cool that within a few weeks, they will have been expelled from school.
- text-based role-playing games ("you come to a door on your left. Do you open it? y/n")
- game-of-life - checker board where each square might be empty or contain a fox and/or a mouse. Or modeling a forest fire or an election or the emotions in the stock market or the spread of a disease and the effect of using the vaccine, or...
- micro game of life - try to make a tiny system that behaves chaotically with 1 or 2 or 3 primary variables - "I say yes, you say no, you say stop, I say go" (actually that isn't chaotic; it is pretty predictable) or 3 girls deciding which movie to go to - try to do a three-body-problem where each of 3 objects tries to act in accordance to what the others are doing. Try to make chaotic behavior.
"When the going gets weird, the weird turn pro" -- HST
If you're really lucky, you can teach them the tenants of communism...
Wow, I didn't realize that communism rented out to tenants. How much do they pay in rent? Or is paying rent not one of their tenets?
Want to improve your Karma? Instead of "Post Anonymously", try the "Post Humously" option.
My elementary school had a computer lab. A very rare thing (this is circa 1988). The had a small elective class thing for second graders that taught logo. You learned the basic commands then had some time to make your own drawing.
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.
Enroll them in a management class, and then they can hire students in the computer programming class to be interested for them.
paintball
You can take a look at http://www.ienjinia.com/. It is designed for teenagers rather than for kids but my 9 year old son likes it a lot.
Bell Labs made CARDIAC a cardboard computer similar to the one you describe. I actually bought one just a couple of years ago. Here's the contact info I used:l :comspace@aol.com
Comspace Corporation
117 Engineers Drive
Hicksville, NY 11801
Phone:516-942-8191
Fax:516-942-8193
Emai
Webpage (hadn't been updated for a while):
http://hometown.aol.com/comspace/
As of 2003, CARDIAC was 19.95 or a plastic version (for overhead use) was 22.95 + shipping
I learned FORTRAN programming with paper punch cards on a DEC-10 mainframe back in the 70's. It was a big step up when we got paper-feed TTY terminals and could program in BASIC using a real directly-connected keyboard. Eventually I did some COBOL on a VT-52.
It was at least a decade before I got to ANSI C on an IBM compatible, about the time all of you little nose-pickers were born.
-ccm
Too much Law; not enough Order.
Asking "How do we get kids interested in computers?" on a website like Slashdot is like asking "How do we get kids interested in working on cars?" in an automotive magazine.
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.
paintball
Squeak is a great development tool, but for young people, the Squeakland team led by Alan Kay is doing fantastic things. I teach my 8th grade programming class using Squeak and also taught a 4th grade computer club Squeak. It was a breeze for them, and they loved it.
And is this the same Sun Microsystems whose Unix is one of the more difficult (in relative terms) to port Linux code to due to the differences between them?
Here, put on this conical hat and go stand in the corner.
It would be handy to have an option to rename such as you from "Anonymous Coward" to "Brainless Coward".
Got time? Spend some of it coding or testing
GVR is like karel, but with more python coolness. They also maintain a list of a fes karel-related links on their site.
Young kids love to pound randomly at the keyboard so they'll be right at home with Perl.
God, I wish I could think of a sig!
"Ok, son, whatcha got going on, there?"
"I think I've got root. Nmap says it's an NT box; it doesn't seem to have a firewall running. Looks like a law office."
"Aaahhh! Nice one! You gonna nuke it?"
"Nah, I wanna mess with 'em a little. Wanna send a nasty email to a competing law office? Maybe we can get a West Side Story brawl going."
"Hang on, your mom's gonna wanna get in on this. HONEY! GET IN HERE! JOEY'S NAILED A LAW FIRM"
(goth mother comes in)
"A law firm? You're kidding? What are they running, 2000?"
"Naw, ma, NT 4."
"Get out of here!"
"Honest! Hey, check it out, someone's trying to log on. Should I enable his account?"
"Go for it. Hey, pop up a message, let me type."
(Mother sneaks into the seat).
"BEHOLD, LAWYER, FOR I AM THE ANGEL GABRIEL AND I HAVE COME TO WARN THEE, THOU ART BILKING THY CLIENTS AND SHALL SURELY PAY! IF THOU WISHEST TO GAIN THE KINGDOM OF HEAVEN, GIVETH THY BMW TO RICHARD STALLMAN AND DONATE YOUR TIME TO THE FREE SOFTWARE FOUNDATION!"
"Umm, mom, wasn't that a little over the top? Besides, he doesn't know how to respond."
"Right... Umm..."
"LAWYER! JESUS HAS INSTRUCTED ME THAT IF YOU STRIP TO YOUR UNDERWEAR, LEAN OUT THE WINDOW AND SCREAM PRAISE THE LORD ONE DOZEN TIMES, THEN QUIT YOUR JOB AS MINION OF SATAN, WE'LL FORGIVE YOU... BUT ONLY THIS ONCE."
"Yeah... MUCH better..." (rolls eyes)
Hey, the family that plays together STAYS together!
Farewell! It's been a fine buncha years!
and a lot of those types of games. Eventually my dad moved me over to duke nukem and bunch of other weird 2d sidescroller games.
If you want them to learn programming, I'd say start with html. It may not be object oriented (as everybody is friggin obsessed with) but they can see the results immediately and it only takes a month to memorize all the basics. Then you can move them on to css/dhtml and javascript. See, HTML is a gateway language!
It was Marathon, an early Mac first-person shooter by Bungie, which first got me really interested in computers...especially when I discovered the tools for modifying the graphics and physics model, and for creating maps. I loved the idea of creating a virtual 3D environment.
Then I discovered POV-Ray (http://povray.org/), a photorealistic raytracing program with publicly available source code, and which uses a scripting language to generate the scenes. Getting an actual picture as feedback when you get a working program is far more encouraging than a simple blurb of text. By this time, I'd learned Pascal and C++, but the most complex projects I did were in POV-Ray. In the process, I learned a great deal of mathematics...the images I could generate provided motivation as well as an illustration of how things worked mathematically. It's a lot easier to learn the stuff when you have a practical need for it and can see how it works.
And perhaps best of all, when I decided the program was too limited, I was able to get into the actual source code and make my own changes and additions. I don't recommend doing this as an introduction for beginners, as the program is quite complex and has some rather messy code, but just generating images with the scripting language is a great way to start.
Get them a pony. This will teach them to deal with an animal that's cooperative enough that you can do something with it, but independent enough that it's not easy. This prepares them for management.
Microsoft Paint for Windows 3.1 at my Dad's office. Not sure how old I was, but I would guess around 6.
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.
The first time I used a computer was in the 1st grade. Within a week, I had thrown a handful of magnets into the box of floppys with all our homework on them, crashed several boxen, and added a recording that said "F@*k Mrs. Teacher" to the startup folder of one.
It's great to stoke the flames of nostalgia and reminisce of our original geek awakening moments, mine was filling out those FORTRAN grids and then typing my ten liners onto cards by hand. Unix was the coolest damn thing ever and I was way stoked to get a hold of a user's guide in highschool. Whoa! I was maybe a bit cooler than those other kids! (yeah, well, maybe not!)
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.
Try Lego Mindstorms. One thing that gets every kid is wanting to build a robot, and with Mindstorms you actually can, and then you can program it using the simple kit that comes with it. And once you have outgrown that you can go to the Mindstorms hacking sites and get the more advanced stuff. It will grow with a child.
I loved Meccano and Lego when I was a kid, but the most advanced automation stuff in those days was a photo sensor and relay.
Paul.
You are lost in a twisty maze of little standards, all different.
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 (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. 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
This is just my 2 cents. I started on a TI-99 back in 83 I think. I was 5. I played a few basic ANSI graphic games but I remember one Sunday morning I came into the family room as saw my dad typing in BASIC from a computer magazine. I remember having a radio shack tape recorder to save the program too. Well, after about 2 hours of typing either he or I tripped over the power supply and I remember him cussing about losing everything he just typed. Next thing you know I'm retyping everything from the computer magazine, later that day I was playing an ANSI game flying a helicopter to save people from a burning building. Then in the late 80's my Dad regained his interest and picked up an Amiga 500 with a Star Color printer and 1200BPS modem. I spent a lot of time on BBS's, they didn't seem to have a purpose but I was fascinated with what an E-mail was and that I could talk to another computer. The modem went in a box for a couple years. Fast forward to High School, the 500 was still kicking and pretty well. I met a couple kids who asked if I had a modem once they learned I had a 500, they showed me what BBS's has become. I took a programming course in High School. I was on the football team, we all took it. We went through GW Basic, but a lot of us couldn't wait to show off and see if we could learn C. Fast forward passed building computers and all that junk. In 96 I walked into Best Buy, asked for a job, they asked me what I knew about. I looked around, not really sure and said computers. So they interviewed me, one question was "What is a Pentium Processor?" I remember saying "It's a dual 32 bit processor which has [whatever the raw processing power was]". I was hired, then I found out I knew a lot more about computers than I thought. Back in 96 was when all the kids who grew up learning on the computers were just entering the part-time workforce, we were good, a lot better than kids you run into at these box shops now. Fast forward again, I landed a career with a Fortune 100 company, still working with computers. I thought the way to go was networking, as of right now, I'm a consultant and do a TON of intergrating and programming. I also started my own consulting business scripting in CGI/PHP to coding in Java/VB/C++. So what is my answer? Well, it's simple. When I was 13 my dad bought me an RC plane. I flew it a few times and crashed it, I wasn't interested in it again. I'm 27, 2 months ago I suddenly started buying RC planes again because it was something I did when I was younger and I have some great memories. So, I say expose a kid to computers at an early age. They might not to take it, but there is a good chance as they get older they might really want to learn exactly what it was they experienced at a younger age. Also, tell them not to do it, when you tell a kid not to do something, they automatically are interested in it. I remember that anytime I was told something if for High School or College kids, I instantly wanted to do it. So tell them it's for the big kids, all little kids want to be like the big kids. So, if you want them to learn programming, who cares where they start, it's where they end up that matters, you can't force a person to become a person, they have to do it on their own. I would suggest if you want to get them into programming, have them write a basic program in your language of choice that actually accomplishes something. I interview people all the time who took programming in college but didn't have practical use for it. They had no interest in learning what a class was, or proper syntax. They need to program something where they can directly see not only a result, but a use. I can teach a kid 'Hello World!' in any language, but the gratification of that doesn't last very long and just gives us web sites that popup annoying practicaly joke alerts over and over. Find something your kid is interested in and have them write a program for that. Learning to change a tire, now that's practical. Kids don't want to learn it? Weird, how'd this tire go flat
I just relayed this story to someone else. Odd.
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.
Acts 17:28, "For in Him we live, and move, and have our being."
I think the (learning) vehicle should be transparent, and real. Look at plastic. When plastic first came out, everyone strove to make it look like something it wasn't: wood, leather, stone... fake, fake, fake. People based it on what they knew in their present world view. For a long time, people were stuck with the glaring image of plastic trying to be something it wasn't. It was hard to see beyond the imperfection. What plastic really had to offer, was a new aesthetic. A new way. It took a while for that to happen. Now, look at computers. Why have your child learn to count by clicking fake apples into a fake box? The child is much better off with real apples and real boxes. Now take it home. Real computers... new ways of learning. What do computers do that apples and boxes don't? Total immersion, virtual reality, computer games and... and... and... who can imagine where we will go from there! Let's not burn our energies on fake wood.
Trying to learn a language through a book that teaches the parts of programming can be a pain. I'd suggest that you instead find an existing program that you can modify to work on.
For me, I learned most of my C (which I later transalted to C++) coding on a MUD. I didn't code the MUD from scratch, but editted one that already existed.
Find some open source code that does something you're interested in and start hacking away. It's much easier to pick up things one item as a time through editing something that's already there than to try and think of (and implement) a whole new package to program from scratch, especially when you're still a novice.
paintball