Ask Slashdot: How To Introduce a 7-Year-Old To Programming?
THE_WELL_HUNG_OYSTER writes I'm a professional programmer and have been programming since I was a small boy. I want to introduce this to my 7-year-son but know nothing about teaching this to children. Since he enjoys Roblox and Minecraft very much, and knows how to use computers already, I suspect teaching him to write his own small games would be a good starting point. I'm aware of lists like this one, but it's quite overwhelming. There are so many choices that I am overwhelmed where to start. Anyone in the Slashdot in the community have recent hands-on experience with such tools/systems that he/she would recommend?
There's enough youtube videos out there, a little help setting up the environment, and they're golden...
Use scratch. It's mildly obnoxious for a real programmer, but has everything you need off hand, and program flow is very easy to visualize.
Did BASIC get uninvented recently? Why do people not start there?
See that "Preview" button?
They were about that age.
I eased the process so, that I made them design the game story and visual look. Later on, they looked and gave input as I churned the code during the next few days. After it was done, and they wanted to change something about it, they had to do it themselves -- I left several 'little annoying things' that are easy to fix there, so that they would ask and would want them changed.
Being able to do noticeable effect with little changes made code less mysterious to them, and they were able to change little things on their own later on.
They don't want to be good at coding, and are interested in other things. But atleast now they have experience of that as well.
Get a Raspberry Pi. There are lots of free tools including a good version of BASIC. There are tutorials for writing simple games. Avoids all the problems of trying to write for a desktop PC.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
Kodu from MSR is excellent.
http://research.microsoft.com/...
"Kodu is a new visual programming language made specifically for creating games. It is designed to be accessible for children and enjoyable for anyone. The programming environment runs on the Xbox, allowing rapid design iteration using only a game controller for input."
PGP KeyId: 0x08D63965
Use Scratch - https://scratch.mit.edu/ It's what CoderDojo uses when teaching kids programming. It has a fun, immediately responsive interface. Bright colours and cartoon characters to attract kids, is easy to make basic games which makes it more fun, and still teaches programming logic.
http://www.learntomod.com/
I hear "Hello World!" works quite well, in the language of your choice since you're going to have to explain it to him.
Seven puppies were harmed during the making of this post.
When my daughter was younger and one day she said she wanted to do what daddy was doing I bought Toontalk. http://www.toontalk.com/
It is more like playing a game than programming, it teaches looping as well as some maths and includes flashcards.
I am Bennett Haselton! I am Bennett Haselton!
I haven't used this personally, but: http://sourceforge.net/project...
I've abandoned my search for truth; now I'm just looking for some useful delusions.
Give the kid a computer, and programming book.
Install an electronic lock on the door with an interface to the computer.
Give them simple instructions.
Serious? Seriousness is well above my pay grade.
You can laugh at LOGO, but I've been having my 8-year-old daughter play with code.org, and it is mostly the same thing.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
My kid loves this one: http://codecombat.com/
I got him started on it when he was 10, and he completed all of the free levels in two weeks with minimal help after I worked with him through the first few.
Lots of other great recommendations here: http://venturebeat.com/2014/06...
The board game one I've heard is good for younger kids, but once they have it down it's rather boring.
-Rick
"Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
Don't?
Why the heck are you supposing a 7 year old one should/could/want do that?
Can he write already? Read? (Likely yes) ... how is he in math? And why the funk do you want him to exercise his hobby behind a computer instead of playing outdoors with other kids, a dog or hanging in a rocking chair and reading, if he can read ...
Coding is a nice word to camouflage all the variations of developing, programming, software engineering, computer science ... what actually do you mean with coding?
Why don't you let him practice cooking and read a cook book and then let him experiment with cooking and write his own cooking book? That is far more "coding" than most "coders" ever do in their job.
Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
So, I say this:
Programming? You should be teaching your kid math, biology, golf and discipline to keep studying and practicing even if he doesn't feel like it.
So, if he can't make it a centi-millionaire golf pro, he fall back on a well paying trade like being a physician.
Programming, pfft! That's for peasants in Third World countries. And in our lifetime, computers will be writing their own goddamn code! All we have to say is, "Computer, write yourself an inventory control program. Make it so. Oh, and an app so I don't have to keep asking you. Make that so too and a cup of tea, Earl Grey, hot - but not too hot."
Ya. Send him outside to play. Take him to the Zoo, or Hiking, or to a Ballgame.
Here's a thought...Books!
When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
My then 8 year old wanted to learn Lua script so he could build original content in Roblox. I tried to convince him to learn to code something easier to teach first. That was HARD, harder than I thought, to convince him to try to learn to think in code before he tried to code in Lua.
One night, he came out of his room long after bedtime crying and told me that earlier he copied someone's script into a level he made in Roblox, and now he was sure he was going to get banned because the game thought he was cheating
it was 10:00 at night and I loaded up his Roblox account, and edited the script right in front of him. It was something like this psudocode: wait(1 minute) display message("You have been caught cheating, your account will be deleted in 5 days") end
I changed it to display a stupid message like "If you see this it means you got trolled by someone who understands scripting"
He felt better, but more importantly he learned that "understanding scripting" is important and powerful... and that even his old dad who "just knows other scripting and not lua" is better than nothing.
Then he said... I guess you can teach me Javascript... then we started Khan Academy and he slurped it up like a hungry aardvark.
https://www.khanacademy.org/co...
Unless you're kid truly displays a passion for it, I would not advise pushing him onto it. It's very likely that it'll overwhelm him, and then he'll never want to touch it again. If you are dead set on doing something like that, I would recommend starting with a LOGO implementation: those are usually pretty easy for most kids to handle, and indeed I got my start with it.
But seriously, playing Minecraft and Robolox != enjoying programming. If anything, it shows that he likes building things, but that does not mean he is a programmer. Give him small and short steps, if at all; if you force this on him, he is going to hate it for the rest of his life. And if programming doesn't work out for him (and I highly suspect it might not), try giving him something practical or more physical; building models sounds like something he would enjoy, and LEGO's (if he doesn't have them already) would probably interest him.
Do keep in mind, he might be playing Robolox and Minecraft for the social element behind them. It's very well possible he's playing them to make things, but a bunch of kids I've seen play it do so because it's an activity to do together, and I don't know they'd do it alone. Obviously, you are going to have to make that decision and I can't, but it's something to keep in mind.
I don't mean to sound scary or anything, but you really want to make sure this is something your kid enjoys before exposing him to the full brunt of it. If he doesn't have a natural liking for it, it's going to be very stressful for the both of you. A lot like if your father ever made you play sports when you were younger - make sure gently stroking his interest does not turn to squashing it.
Whatever happens, just keep an open mind and be sure he knows he can say what he wants. I wish nothing but the best of luck for you and your son!
"Set a man a fire, he'll be warm for the rest of the night. Set a man afire, he'll be warm for the rest of his life."
tell him to go build the biggest sand castle he has ever built before. But it has to be twice as big as the sandbox he has to work with. Tell him there must be an individual entry way and a window for every toy he has in his toy box. It must be ready and meet your expectations by next monday, so no time with family or friends during this hussle. Also you will be out of town on vacation for the rest of the week, so monday is the first review/LAUNCH. Offer him a quarter to get the work done. If he complains about the pay or time tell him the less fortunate neighbor kids would do it for a nickel.
I would recommend a regular Arduino so that if he's interested, he can add regular shields later.
Get free satoshi (Bitcoin) and Dogecoins
Logo was my first thought as well, since I realized years after the fact that it and its use of turtle graphics was how I was first introduced to programming, way back in 3rd grade (I'm now in my 30s and have been in the industry for awhile). I didn't recognize it as programming at the time, but in retrospect I can recognize that it laid the foundation for the sort of thinking that became important later in life.
In that same vein, when you're talking about introducing programming to someone at that age, it probably shouldn't be "programming" as most of us think of it on a daily basis. Instead, you might consider activities that get them thinking in the sorts of ways that they would use in programming. Asking them to move a turtle through a maze and other such things in Logo is one way to do that, certainly, and it worked for me, but it's not the only method. Another might be to play a game like SpaceChem, which is essentially a graphical means of programming algorithms that assemble chemicals to meet objectives in the game. Other visual languages might be a great start too. If you're on a Mac, download the free developer tools and check out Quartz Composer, which can produce some immediate graphical results with very little effort. Likewise, if you felt comfortable teaching Swift (it seems fairly approachable, but I've never used it), XCode provides "playgrounds" in which developers can immediately see their results played out.
But yeah...I'd focus laying the groundwork for programming-like thinking, rather than jumping straight into programming proper.
Oyster,
Personally, I would say seven is a bit young to start introducing him to programming. I don't know what your background is and what you expect from him but my biggest piece of advice is tread carefully. He has quite a few years to become interested/fascinated in programming as well as mature the thinking and analytic skills needed to be a successful programmer. Pushing too hard or introducing it before he's ready could result in him getting a negative attitude about programming. My recommendation would be to hold off and wait until he's around 12 to actively introduce him to programming as a career/interest option if he isn't doing it already.
For full disclosure and as a point of reference; this is my business right now. I cofounded Mimetics Inc. (https://mimetics.ca/) to introduce and engage children in STEM (Science Technology Engineering and Mathematics). We've done over 16,000 students, from ages 6 and up with quite a bit of success in introducing kids to technology and getting them excited about it as a career.
I find that the best approach for introducing young children to program is having something concrete that they can program on with statements directly causing physical actions. This does not mean an Arduino or Raspberry Pi; I know there will be disagreements to this statement, but younger children do not have the manually dexterity to handle wiring or work with complex mechanical structures.
For a parent of a child younger than eight, I would recommend the Wonder Workshop Dot and Dash: https://www.makewonder.com/ The robots are quite a lot of fun for children and are provided with an iPad app that allows control and introductory (Scratch) programming.
As a father myself, I didn't actively introduce programming to my kids at all; they could see me do it and I was available for explanations of what I was doing and demonstrations as how things were done. Maybe a bit incongruous considering my current career arc, but the result has been my older daughter who's now taking Game Programming at college and a 12-year old that is having programming parties at our house with her friends.
Good luck,
myke
Mimetics Inc. Twitter
https://pragprog.com/book/ahmi...
I'd suggest just getting a Raspberry Pi with Scratch. The bonus is there is some minor assembly required (the case) and all the wizbangery hardware is visible. And if the little tyke smashes it against the wall in a fit of rage against your efforts to force him to be a programmer, you're only out $50 (not counting the cost of the therapy sessions).
Left MS Windows for Linux Mint and never looked back!
Vote for Bernie in 2016!
Scratch.mit.edu is a great visual programming environment for building games. It runs on all platforms and the raspberry pi. If you want to move into electronics and robotics there is even scratch for arduino!
My son is using Scratch (https://scratch.mit.edu/) in an after school class. He is having fun and learning some great concepts (variables, conditional logic, control flow, etc.).
"Learn to program by making awesome things." "No typing. No syntax errors. Just drag and drop blocks. Hopscotch is an intuitive, friendly programming interface designed for everyone." https://www.gethopscotch.com/ Nope, I have no connection to them. Just saw them demo it once and thought it would be great for kids.
Children aren't clones of their parents. (And even when we discover a way to make clones, they still won't be this kind of clones.)
"I would have benefitted from learning programming early" or even "I did benefit from learning programming early" are terrible reasons to teach your kid programming early unless the benefits apply to most people, not just to you. And they don't.
This is just a variation of the "how do I get my kid interested in sci-fi" or "how do I get my daughter interested in programming" questions we've had before, and the answer is the same.
Buy your kid a cheap robot like a Sphero or Ollie. These are adorable rolling robots. You can program simple macros with a drag and drop interface. If you want to go a little farther you can write BASIC programs as well. Both of these languages have access to all the good sensor information and motor/light controls. Something about actual physical feedback makes programming seem a lot more real to kids.
play chess with them — it strips away all the semantic crap that will change from language to language, and gets it right down to developing the sort of critical thinking that is required to think logically and consistently in programming.
just chess.
that's all.
2cents
john p
Two words - LEGO Midstorms - it would be so awesome if they were around when I was seven... but I am thirty four. Anyway - LEGO Mindstorms - I can't think about better way to show how seemingly simple drag and drop programing can influence real world objects (robots man!).
The perfect tool is whatever the kid is interested in. If you try to teach them how to write a game with Minecraft, and they want to write spread sheets, they are going to hate coding. Now, as parent post notes, Minecraft will probably hold most kids attention.
Figure out some fashion that code interacts with their favorite thing, and there is your in. Building basic web pages might be a start, or perhaps set up a command line application where they can play with string manipulation. There are many ways you can simplify complex tasks and projects with 'training wheels', ex: APIs and such to hide away complex stuff that isn't important to a beginner. Get them a really simple sandbox where they can change things and see the effects of their changes, and then get the hell out of the way. They will be better than you are in two weeks.
HA! I just wasted some of your bandwidth with a frivolous sig!
When it comes to books I recommend "Assembly Language for Kids" by William B. Sanders. (ISBN 0-931145-00-7)
A great way for kids to get introduced to programming and the basics of how computers work.
It's a mod where you get little consoles, you craft them
then you can program them with the simple scripting language Lua to automate actions in Minecraft: mine, fight, farm, etc
it's good because they are programming *in* the Minecraft world: you're piggybacking on their love of the Minecraft universe to get them into programming
http://www.computercraft.info/...
https://www.youtube.com/watch?...
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
I think 7 is too early. The kid should be outside playing and using his imagination with real world objects at that time.
I also recommend using C. It's simple and C-derived compilers typically support some version of it.
I learned to program in BASIC for the Atari and the Sinclair ZX-80 when I was 8 and a half. I don't recommend using numbered line BASIC or any BASIC, at all. If I could go back and somehow influence how I was taught, I would tell my parents to find something that supports parameterized function calls instead of GOSUBS. C would be best. But if you're really intent on using BASIC for some reason, if you're on the PC I recommend Microsoft's QuickBasic as it allowed you to get away from the rather intimidating edifice of Visual Studio. You'll also have to sandbox it inside of something like DOSBox to get it to run on a Windows environment so there's a plus.
If you opt to just get an old clunker instead of emulating DOS, I recommend a 486 dx4/100. The architecture is simple enough for a kid to learn into adolescence but powerful enough to show how impressively computers can complete some tasks very quickly. I also recommend an ATI "all-in-wonder" graphics card, because it features CGA, EGA and VGA so your kid can learn about legacy graphics as well as switching modes. You shouldn't use a CRT if you can help it, if the kid wants to get into the inner workings of the screen you'll have an armful of stuff to teach him about electricity safety first. So get a modern flatscreen and get a VGA/EGA plug adapter if you have to, to keep on the side for EGA projects. As long as the flat screen is unplugged he shouldn't die of electric shock touching anything inside of it.
The great thing about older machines is that a lot of the components are visible on a macro-scale. It's a lot easier to differentiate between the resistors, capacitors, and inductors in older machinery. Now a days they'll all tiny little squares with little print designating what they are. It's also easier to work on older boards in terms of soldering and other "circuit bending".
All that being said, I recall some hobbyists telling me back in the day that the Apple computers made the best projects. One guy said he had obtained a dozen Apple IIe's on the cheap and because apple computers are made to network easily, he was able to use a later Apple model to organize all the IIe's into parallel computing. An exercise like that could be fun, albeit space-consuming.
If you're going this sort of computer-engineering route involving getting to know the hardware, I recommend also teaching the kid assembly. On older machines like the ones I mentioned, and using older operating systems, this is less of a headache. By comparison, I was looking into "high level assembly" for windows systems and the skeleton just to have a window open with a button to close it again was large enough to dissuade me from going much further. ASM in DOS was far more elegant, which is why these days if you mention writing something in assembly most people think you're crazy. Even though once again many popular compilers support inline ASM.
When I was fiddling with old Sinclair or Atari machines the latest hardware was stuff like the 80286. And when I finally got an 80286 the latest hardware was the Pentium, and so on. Getting things done with older hardware gives you two special perspectives on everything: (1) getting to know how everything works because the machines and operating system aren't so enormous and bloated that it's overwhelming, and (2) having to make do with less memory and processing power forces you to learn things like optimization and paging. People use memory like it's crack today and talk all tough like their memory is infinite, but little do they know RAM is paging quite often in Windows because of programming practices like that. And those same people speak about memory management in their favorite object oriented languages like it's impossible to perform. Trust me, you would much prefer that your kid is one of those people who can do their own memory management. If you give them a shiny brand new computer to learn on, they'll have no incentive to do better than use it like crack like everybody else does.
"Stratigraphically the origin of agriculture and thermonuclear destruction will appear essentially simultaneous" -- Lee
My first exposure to programmign back in the day was Turtle Logo in DOS, which I still think is great because as a kid I loved seeing a visual representation of my code. Another option which I'm biased towards (I co-wrote the code back in college with my advisor) is a package for MzScheme called plumming graphics for teaching programming conceps in a side effect free way while allowing easy visualizatioins (http://www.cs.unm.edu/~williams/cs257/plumbing.html) .
Get a Kano. Yes, it's just a Raspberry Pi, but first off, your kid has to assemble it (hardware!), and it comes loaded with many of the products already mentioned here, such as Scratch, a Scratch-modifiable version of Minecraft, and a couple of others. I got it for my kid when he was 10, but it is really geared towards younger children. Age seven should be just perfect.
Also, I took a look at that list and: no.
Don't teach him a useless joke / toy language like these ones on this list. It'll build a bad habit and the kid will be one of these losers saying "I don't know how to program but I got code::blocks and here's my console emulator, shouts out to the one guy who gave me that voo doo asm to build in line and make it work real fast, everybody please stop sending me e-mails about getting root kitted, this thing totally passes a virus scan."
If you want something that has a strong visual appeal but teaches actual programming practices and has been actually used in industry, I suggest you teach LOGO. LOGO is super-super-super simple easy shit, and you can learn it yourself as you're going. Most LOGO primers and tutorials are practically on a child level any ways because the language is so simplistic. Of course, if you don't know a single thing about trigonometry or geometry you'll probably see it as a useless language.
Over any single one of the weird "robots" and "kids oriented" languages on that list you linked to, I would recommend LOGO.
I bet you can even find a "LOGO for kids" or some shit if you looked for it. For decades, LOGO has often been used as a first language for youngster so I'm kind of scratching my head how it passed you by.
"Stratigraphically the origin of agriculture and thermonuclear destruction will appear essentially simultaneous" -- Lee
the fact that LOGO is not on the list the author linked to kind of makes me feel a little perturbed. like, wtf is wrong with people? there's a mention of "brick logo" as a footnote in some other language's paragraph, and "c" is mentioned as "educational" (wtf?) but not one shout out to LOGO.
did anybody else feel any sort of reaction to that? or did everybody just not even notice it?
"Stratigraphically the origin of agriculture and thermonuclear destruction will appear essentially simultaneous" -- Lee
I'm now in my 30s and have been in the industry for awhile.
Ha. Hahahahahahaha. Get off my damn industry, you kid! Hell, when I was a kid and we wanted to play with turtles in a maze, we went down to the fetid, stinking, polluted sewers and caught them ourselves! And built our own mazes out of barrels of toxic waste! None of this turtles-in-computer shit.
How come Slashdot never gets Slashdotted?
If you are as pro as you say you are, it should be easy enough for you yourself to create a simple learning JavaScript framework.
Let it work with Canvas, DOM, SVG and CSS animations inside of an iframe so accidents don't break stuff. (iframe.open(), .write() are useful here)
Create little tasks that he can work with and edit, live examples, simple stuff like moving a little smiley face from left to right, get him to jump (by hooking a premade gravity method to him), make another smiley, give him AI (you premake the AI of course! Things like "moveToPlayer", "attackPlayer" and others)
Try to eliminate the confusing parts of JS initially, make it simpler, basic simple commands are key here.
The syntax and features of the web world make it a very useful way to learn because it is so wide and varied.
So over time, he can advance to more complex examples, and then eventually, full naked JavaScript, then more libraries..
And the best part is JS is very similar to most common languages as well, so translating to those will be fairly easy as he is older.
Or even Gamemaker. Gamemaker is pretty damn good from what I have seen these days. Not the extremely basic thing it was forever ago.
As for the general naysayers, boooooo.
Learning programming is an INCREDIBLY USEFUL thing. And it is not even for the sake of learning programming itself, oddly enough, it is for all the other skills you learn AS you advance in programming.
Skills you tackle with programming are math, problem solving, planning, language skills, logical assignments, abstract concepts, algorithm design, animation, basic design, in addition to just learning the language itself.
It is a very useful broad subject.
Personally I started programming at the age of 9. I still do at 28. It is an absolute dick of a thing at times, I even get annoyed, but I still program to this very hour. (only stopped programming to check up on random stuff and take a break for 30 minutes before I get back to it. At 11pm. For no reason other than fun)
If I never got in to programming, I'd probably have been a far shittier person. Or worse, probably ended up in art. The horror.
Firstly, I would look to see if there is a CoderDojo - http://coderdojo.com/ - in your area.
CoderDojo is a global volunteer-led community of free programming clubs for young people. These young people, between 7 and 17, learn how to code, develop websites, apps, programs, games and explore technology. In addition to learning to code attendees meet like minded people and get to show off what they’ve been working on.
Secondly, I would look at introductory language we use - Scratch - http://scratch.mit.edu/
Scratch has lots of tutorials aimed directly at kids, and are far better than any of the "type this line and then this one" from various books.
Robo Rally is like a multiplayer boardgame version of LOGO...
Robot Turtles is even better for younger players
Micro Adventures were some of the books that I started with as a kid
"There are people who do not love their fellow human being, and I _hate_ people like that!" - Tom Lehrer
Yeah, it was tadpoles in the drainage ditch out behind the backyard for me. Uphill both ways, of course. ;)
Anyway, I wasn't meaning to suggest I had loads of experience or whatnot, just that whatever lessons I learned as a child have stuck and that between grad school and working in the industry, I've committed myself to this field. I.e. I'm a success story of introducing a child to programming at an early age and having that effort bear fruit later in life.
...when I was a kid and we wanted to play with turtles in a maze, we went down to the fetid, stinking, polluted sewers and caught them ourselves! And built our own mazes out of barrels of toxic waste!
....and this how we end up with Teenage Mutant Ninja Turtles. Stop it.
HA! I just wasted some of your bandwidth with a frivolous sig!
Try code.org
fun angry birds programming game
I'm as geeky as they come. Most of a Ph.D. in theoretical physics, and have spent over a decade working in high-performance computing.
When I was 7 years old, I was wandering through the woods, looking under rocks for creepy crawlies, playing hide-and-seek, and playing baseball with my brother and cousins. Not only did it *not* set me back in anyway, but it is some of my fondest memories of being a child.
Let kids be kids for goodness sake. Take him to a science museum, and let *him* tell *you* what interests you. When I was a kid and hyped about computers, my dad thought computers were a fad only used to play Pac-Man. Not only do I have a good-paying career, but any time dad can't connect to the internet, I get an emergency telephone call.
Let your child steer his future. He's the one who has to live it.
It's a program AND it teaches how to deal with Murphy (nothing worse than getting bumped and watching the rest of your program walk you into a pit or heavy laser fire).
After that, it depends on the child's interests. Robots? Mindstorms.
"Real" computers? Pick up an old Apple II or Amiga and use the Basic to access the display.
https://scratch.mit.edu/
That is all.
Mission: To provide products that consume time and energy as entertainingly as permitted by the laws of thermodynamics.
I think it's an admirable goal to get your kid interested in computers and coding. But it seems like /. gets this question every week, sometimes multiple times a week. You can't swing a dead cat around here without hitting some variant of "How can I teach my [son/daughter/nephew/[2-/3-/4-/5-/6-/7-/10-]year-old/3rd grade class/nation's kindergarteners] how to code?" Can we just sticky this to the sidebar somewhere?
Nothing posted to
I never took to Logo, but the Elsa version had my daughter's interest and it was introducing her to loops and such. It was just writing javascript, and you could click over and look at the source.
W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
Try a human trafficking shop.. they seem to specialize in this field.. (he might miss school though)
Can we get a FAQ please? Here are the common answers:
* Visually with Angry Birds characters: http://learn.code.org/hoc/1
* Scratch
* http://coderdojo.com/
* Minecraft mods
* http://www.learntomod.com./
* https://pragprog.com/book/ahmi...
* http://codecombat.com/
* http://boardgamegeek.com/board...
* http://boardgamegeek.com/board...
* http://www.gamebooks.org/show_...
* http://venturebeat.com/2014/06...
* http://meetedison.com/
* BASIC
* Vic-20 C64 Compute! magazine
* Raspberry Pi
* Arduino
* Logo
This may be what you want. http://web.stanford.edu/class/...
To give you an overview, it's an intro to programming using Javascript and a little image manipulation library. Each page has a series of problems with boilerplate code that you edit and click a button to run.
Head straight to Week 2's lessons (http://web.stanford.edu/class/cs101/image-3-loops.html) and go through it with him.
Kids find it pretty cool that they can change some numbers and that will have an effect on the picture. I did this with my nieces (8 and 10) just a few weeks ago and they both LOVED it. I was showing it to them to gauge their interest for a totally unrelated reason, and we ended up going over it for about 3 hours in one sitting.
Give your kid little challenges and provide most of the code. They just edit the code. It'll be a while before they add their own lines of code (about 2 hours for my nieces). One of the big points of interest was one of the problems that introduced an "If" statement based on the pixel's X coordinate. We made many changes to that block of code and ended up making stripes of different colors across the image, first vertical, then horizontal, then mixed. They thought it was just the coolest thing.
Then there's code that changes pixel values based on the average color of the pixel. So it's doing stuff like taking a picture with a red stop sign in it, and making the stop sign blue without altering the rest of the image. It's really neat, and it's the kind of stuff they've seen in movie special effects (they'd heard of green screens and I related how similar this is), and it's just a few lines of code.
I have researched this subject extensively over the last several years. Most importantly, I have exposure to children between ages 6 and 14 that can program successfully with a text editor or IDE. The short answer is go straight to Python. You can read about my personal experience with my own children here: http://pychildren.blogspot.com... The main child is now 10 and using Python with IDLE and PyCharm. Also suggest you research this site: http://www.learningtech.org/wo... which I also have experience with by sending my own kid to the class. Note the Minecraft plugins from grade 4. Definitely wish I had started my eldest kid earlier as I think that age 8 would have been fine. There's a kid in my daughter's class that is 6 years old and completely killing it with PyGame. I think that I'm going to drop down from PyGame to Python Turtle (logo) with my daughter for a while. Good luck. Feel free to send me a note with your progress. I love hearing from parents with children under age 14 that are using text editors or IDEs.
My 7 year old daughter really enjoys code.org. The puzzles are fun and the site works great on her HP Stream that she got for xmas. Having her very own computer also helped and that laptop was well worth the $200.
Tech is for older kids. Challenge and experiment at this age. Lego to make a bridge that the cat can cross . Draw a picture that Auntie thinks actually looks like a Badger not a [insert vague animal here] Create a birthday invitation card that has fizz. Ask 1,000,000,000 questions you don't know the answers to.
Sketch is a very visual system for learning to program.
Leave it be. They're just kids.
I'd concur. My kids have an on-again/off-again interest in programming, but the crazy shit they come up with using Redstone wiring in Minecraft is just unbelievable. Sure, I could push them towards C or Ruby, but when I see them building logic gates, adders, flip-flops and the like in Minecraft I just think "they'll work this stuff out on their own". And probably have a better understanding of the fundamentals as they go on.
MIT's Scratch system is probably a good start for a lot of nascent coders though. It's not just about the code - it's also the community around it, like a Github for little ones. Strongly recommend looking into that.
If you're not on a first world country, don't you dare on ruin the poor kid's life. Signed: A third world country developer.
Not to toot the horn of my employer too much. But Khan Academy's CS platform is a great way for kids to learn and create stuff.
https://www.khanacademy.org/co...
Make learning programming fundamentals a blocks toy. Kid can stack program blocks a certain way, the physical block pattern gets scanned into the computer, turned into code. Point is to make it an interesting hands-on toy which makes the obvious connection between what the kid does with the toy and what happens on the computer. Once the kid makes the connection to building with pieces, they'll want to go directly to building on the computer, by-passing the simple to use but less powerful blocks.
Everything in the Universe sucks: It's the law!
My son is just about to turn nine, and he is really enjoying the programming section on Khan Academy. The site was originally designed as a math curriculum but is rapidly expanding into other fields. It is free, and it uses JavaScript with immediate visual feedback while teaching them the basic concepts of programming. There are step by step instructions and helpful hints to help guide them through the concepts, but having some occasional parental help is sometimes required. Overall, though, I have been pretty impressed with it.
One thing though: I would make sure they learn how to type first as that will greatly help their ability to program.
I believe in de-evolution. God made the world perfect, man fell, and its been going downhill ever since!
Point them at the Scratch website and then tell them to never look at it again because it's naughty. Just kidding about the second part, but Scratch is a good way to get them started.
'The tyrant will always find pretext for his tyranny.' - Aesop's Fables
Give him one of these books and tell him if he wants to play a game he has to transcribe the code first:
http://www.atariarchives.org/b...
http://www.atariarchives.org/m...
That's how I got started, and around the age of 7 too.
Oh, and wait a year or two before you teach him how to save the code onto audio cassette... Ya know, cause you don't trust him yet not to overwrite a previous save.
LOGO is still around. I didn't get to see it until my early teens but if I'd had access to a computer before then I'd say LOGO would have been a much easier way to start than Applesoft BASIC.
Might I suggest you check out my CC-Licensed book of 4th grade mathematical programming lessons in Scratch:
http://goo.gl/pHF6Hd [goo.gl]
I teach 4th grade, and the book follows the math curriculum as it progresses during the school year. In my experience, a mathematically precocious 8-year-old will be able to grasp much of it.
I didn't read beyond the article's title , but I'm sure that tells me everything that is needed.
How to Introduce a 7 Year Old to Programming.
Using "Kevin" as a sample name, you do an introduction like this:
Hello, Programming, may I present my son, Kevin?
(assuming yes)
Programming, I would like you to meet my son, Kevin
Kevin, this is Programming.
The rule is the senior one receives the first introduction.
Remember to make eye contact with each person as you speak to them.
You should have prepared your son to make eye contact with whomever he is being introduced to, and he should be prepared to handshake if one is offered.
Your son should not offer his hand first; the higher status person does that.
Also, I recommend that you check and remove any boogers from his hands and face before initiating the introduction.
I was 7 when I learned to program. I was taught how to draw graphics in BASIC on an Apple ][. Not having to draw every point manually was a great motivation to learn loops. The rest is history. Kids love graphics and quick results. These days, I would teach a kid programming in Swift, if you have a Mac, because the instantaneous results in the other pane and the graphics and animation capabilities will make it fun. If it, I'd use Python, because I've been calling it the new Basic for years. All the beginner programmers immediately get defensive when I say that, while the more experienced ones chuckle. Proof enough that it's the new Basic? Remember, it doesn't need to be writing a game to make it fun. That's a little too tough at age 7; not because the programming for a simple game is tough, but because kids that age usually can't yet wrap their heads around what makes games fun. Because of this, they have a really hard time coming up with something fun, and they can end up disillusioned from the experience of doing a lot of hard work just to make something boring. Also, remember that what makes programming fun is the reward from figuring out how to make something work, so at this age, resist teaching data structures and algorithms. Instead, just give some trivial examples and let them play.
As others said, don't force your hobby on him. But a child always mimics its parents. If you are coding at home and your son sees you and sits next to you and watches you, just don't tell him to leave you alone because he disrupts your focus. Answer his questions, try to explain what you are doing, ask what would he like to make, do a first few projects for him and with him. It may take time until he shows the initiative but it should be up to him how fast and how far he wants to go. Your role is to support him.
Other than that, to those saying kids should not program at this age - nobody says they will do it more than say 2 hours a week with Dad, where is the loss of social skills in that? And second - if you do not get kids inspired and excited about a bunch of things, something will. Opening up options for your kid is one of your tasks as a parent.
Take a look at Lightbot. It's an educational game where you program a robot to turn on lights on the board. It's very nice. My 4 year old daughter loves it and is able to solve simpler levels by herself. I introduce more complex ideas (procedures, loops) when we have some time to play together. It reminds me a bit of LOGO and turtle graphics - that's how I got started and I thinkg turtle graphics in one of modern editions is also one of good first steps.
This has to depend a lot upon the kid. My 6 yo really wanted to learn to program, so we did it over spring break one year.
I sat with her for a 1-3 hours a day for a couple of days, individually teaching core concepts. During this time I let her operate the computer exclusively. I watched, gave advice, drew pictures on paper, and didn't use my phone. I think being hands-off but present and engaged is critical. When I was a teenager I used to tutor grownups on PCs and found that having them drive the computer was the most effective way to ensure I wasn't losing them. After the first few days I found I could teach her something, make sure she was doing OK with it, and then go away for a few minutes to do something else and return to answer questions.
I had drawn up a list of concepts I hoped to teach, and shared that plan with her and used that as a general direction. Nonetheless, what we actually did was directly guided by her interest level and enthusiasm each day. I aimed to keep her engaged and focussed and adjusted speed and content to do so.
I opted to use a fairly old language environment, Logo. Drawing pictures is directly appealing to kids, and using a text-based programming environment exposed her to syntax and learning to edit actual code right from the get-go. I don't think drag-and-drop learning such as one gets with Scratch or Blockly translates very cleanly to other programming environments because you're only learning procedural concepts, not that commas and quotes and other kids of precision matter. For instance, because she needed to know syntax I showed her how to access and read the docs. That led her to discover that the specific Logo we used, ACS Logo (Mac), has speech synth support. Then she started using the speech synth to narrate her drawings. That was pretty cool and a big success she could claim for herself.
We did not make it through my whole list of concepts, but she did attain independent fluency with a subset of Logo and programming in general. A bit over a year later she periodically updates/extends her programs. And I recently watched her independently learn 2 other programming languages, one via watching videos, and another via an online course. So it's clear she is able to apply what she learned to new contexts.
In a telling comment that seemed to me to confirm my choice of Logo, she learned quite a bit of Python and then complained the language couldn't do anything she cared about. Of course that's naive, but it illustrates that you need to pick an environment with features that will appeal to your child early on, not in some far-off land after one has learned the basics. In this vein, you might also consider introducing a kid-oriented robotics microcontroller like the Hummingbird Duo. These have the appeal of making physical things light up, move, and sense. This will likely rate much higher on a kid's priority scale than building a website or crunching numbers. My daughter is now learning to build simple robots with a Hummingbird Duo and a bunch of sensors and servos and likes it. And even though this too is programming, it's a very different set of complexities than what she did before.
Good luck!
It has variables, loops, functions, etc.
**TODO** Steal someone elses sig.
From my experience absolutely best is Scratch: https://scratch.mit.edu/ ;-)
Start with scratch (IMHO for any age
When the child is hooked and wants to "type" on keyboard try python.
This is from my experience with my son (BTW: he likes minecraft too).
Hey, I wrote the Web based game crafting system Cubiverse for bridging the gap between voxel style games (Minecraft, etc.) and "real programming". Basically Cubiverse gives you the ability to create cube worlds, but add Javascript to control them - you can make lift, teleport players, control the time of day, spawn items, etc.. Having said that it's still very much in BETA but I'm keen on hearing opinions on what to do :)
Check it out at http://www.cubiverse.net/
James
Does anyone program for programming's sake? Can you lead a horse to water AND make it drink?
Show a kid what the possibilities are first, which means learn what you want to teach them. Also, instant gratification is key - no kid wants to be there writing what seems like arbitrary lines of code so that they can see the Fibonacci sequence rendered up to n terms. My top 3 suggestions as a computer science teacher:
1. Scratch: free, online, massive community, tweak stuff before you make your own, instant gratification. There's some complex stuff out there so try to restrict examples to simple ones, stuff that they can try to emulate themselves. Kids will typically have very high expectations of what they can achieve without appreciating the complexities involved. Code is built using drag and drop. It's not immediately intuitive but you can get results very quickly once you pick it up.
2. Minecraft Pi: get a Raspberry Pi. The Raspbian distribution comes with a special version of Minecraft that has a Python API attached to it, and there are some very simple examples on the RPi website that can get you rendering all sorts of cool stuff in the Minecraft environment within minutes. Pixel art made from blocks, a digital clock floating in the sky, hunt the diamond, Midas touch, the list goes on. You can tweak the existing code after copying it out (like we used to do from coding magazines) before trying out your own programs. Also exposes him to an operating system other than Windows.
3. Spirograph: technically I mean 'turtle'. It's a great way for kids to learn about randomness, iteration, geometry and efficient coding tecniques. Scratch, Small Basic and Python all have a turtle module built in so you can draw shapes on screen very quickly and easily.
He is SEVEN! He want's to hear farytale stories, wander around, stop every 5 meters to look at something interesting.
He'll sit at a desk long enough in his life. I'd say 9-12 is the earliest to start progging - and only if he wants it/shows serious interest. He'll be a prodigy fast enough if that's his cup of tea.
We suffer more in our imagination than in reality. - Seneca
Roblox is your best bet! Play to your son's interests rather than starting from scratch. They have a scripting language which implements in Lua code into the games. He can start out by making his own items / weapons, and then move on to constructing a new game for Roblox. Get yourself an account and try it out! It's juvenile, but a little bit of fun at the same time.
Minecraft mods are a little more complicated, and do not offer the same level of ability to start small, and gradually build skills.
Show him your lack of Lua knowledge, and show him how you learn - he won't be very interested at 7, but seeing that you don't know is an important realization that will likely help him become a self-reliant tinkerer within a few years. If his interest is there, he will try to do things on his own eventually, but at first, copying what you help him with will be the majority of what he will do.
Seriously, he will ask you if he is interested. Also programming is just a tool, so rather teach him how (and why) to create (in whatever way) than one specific way of creating things without a purpose.
I see this recommendation a lot.
Nothing wrong with encouraging kids' interests when they're young as long as you're not being a "Tiger Parent".
And who said subby wasn't taking his/her kids outside to play?
Some people don't believe in fairies. I don't believe in The Patriarchy.
Over here in the UK children from the age of 7 are being taught coding in school. This will of course suck everrything that's cool about coding out of coding for ever.
Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.
Yes. Scratch is what I would recommend also. My children love it and have moved on to more advanced things after enjoying scratch. Turtle was another early "programming" language they were introduced to and enojoyed. LEGO Mindstorms is a good next step, but expensive to use. I would not start there because you have sunk money into something that may not ultimately be an interest.
Personally I learned programming fundamentals in Logo, and by the age of 8 was programming in basic. I picked up a Kano for my 5 year old, who is fanatical about Minecraft, and I'm hoping Kano Blocks gives my daughter the same passion for programming that I got from Logo. (Plus she is learning Linux & about computer components) http://www.theguardian.com/tec...
Seriously, please use google to find the answer to this question as it is posted extremely often here on /.
It happens so often that it starts looking as if it is some sort of homework question.
If you can not even able to use google to find the answer, you will not be able to teach a kid anything.
Don't fight for your country, if your country does not fight for you.
Introduce him the same way I was: set him down in front of a keypunch machine with a big stack of blank cards.
http://alternatives.rzero.com/
So I have an almost 7yo at home. My brothers and I are all programmers to one degree or another. I have introduced him to programming in two steps:
1. Robot Turtles
Best board game for programing ever. Not only does it not require batteries, but it provides great quality time and encourages them to think logically and linearly.
2. Scratch + Makeblock
Once he learned to read he was able to pick up scratch incredibly easily and understand it. To make it more fun I picked up a Makeblock starter robot which had a bluetooth connection and allows him to program his robot to chase his little sister around the house.
Honorable Mention:
Lego Mindstorms EV3
He also has a Lego EV3 mindstorms kit. The Lego / labview environment is still a bit overcomplicated for him to use I'm thinking he will be more ready for it in a year or two.
Best of luck
My 9-yr old did the Hour of Code series. Good stuff and he got the concepts. It's drag and drop, so he never was at the keyboard doing it "by hand", but it's a great introduction.
I started Logo when I was 6, and 30 years later I still have a IT job :-) So I can only recommend Logo language.
So frequent unwarranted recommendations for Scratch. It has a pretty crude UI, and it looks unappealing. It feels like adults' conception of what kid programming might be like. Kids are not stupid, they're kids, we should of course simplify and make it approachable, but 'for kids' doesn't mean it should be shit. There's all the deserved dismissal of GOTO, but Scratch and literally EVERYTHING except Logo teaches imperative programming. When people coded in Basic, they didn't think about the problems with a language that didn't encourage structured programming. Kids will look back to this period and will say apologetically, "imperative was the only thing available, the default choice, of course I got stuck in this incredibly mechanistic, low level mindset".
"It is practically impossible to teach good programming to students that have had a prior exposure to IMPERATIVE PROGRAMMING: as potential programmers they are mentally mutilated beyond hope of regeneration."
not Edsger Dijkstra
With interesting data flow tooling for e.g. data analysis (RapidMiner, Knime) and even shader programming (http://bit.ly/1JwMJED), and Bret Victor's vision, not to mention his kid-friendly approach to functional programming (http://worrydream.com/AlligatorEggs/) and visual editing prototypes, we should certainly do better than the n+1th rehash of some frigging 'while' loop into which some other imperative instructions can be snapped like puzzles. Everyone and their dog just rehashes this pattern over and over, mindlessly.
Not to mention that Scratch requires literacy, and literacy in English, for no good reason. Ah and its ergonomics is pretty bad, small fonts, incredibly small interacting surfaces that require a lot of accuracy. We have apparently just no idea how to use this novel interactive medium called 'computing' - the best we can suggest for kids is '59 vintage BASIC without GOTO wrapped in colored puzzle shapes to make it seem 'intuitive'.
The first person who invents a proper content creation tool for kids will have probably revolutionalised computing. There are so many people with artistic talent or creative inspiration who just don't get near the computing medium due to its incredibly arcane, fragmented and brittle hodge-podge of a pile of mess.
I had some of these too.
I also had some Marvel Superhero 'Computer Fun' books, but couldn't find a link to them anywhere.
"There are people who do not love their fellow human being, and I _hate_ people like that!" - Tom Lehrer
giving a kid a cheaper computer isn't going to be helpful unless they don't have access to another computer.
It turns out that a lot of kids are in just that situation, with parents having only locked-down devices in the house. They have an iPod, iPhone, or iPad, and actually making apps for those requires an eighteenth birthday, a Mac, and a $99 per year recurring fee (source: Apple.com). Or they have a game console, and console makers won't let anybody make programs for those unless the developer is an established company with a few commercially successful PC or Android titles under its belt.
The correct way, in classic basic, to designate type was with a suffix- such as "A$" for a string variable named a
So LET M$ = "Microsoft" was correct code? That might explain people calling a well-known publisher of BASIC interpreters "M$".
If you have a Raspberry Pi handy, you can install the latest Raspbian which comes with a free version of Minecraft (creative mode only) and Python programming interface installed and ready to go on it.
If you don't have a Raspberry Pi, you can always install CanaryMod and use the RaspberryJuice plugin to setup a Python programming interface in Windows/other environments.
Both use the same mcpi Python library, which is easy-to-use and documented here: http://www.stuffaboutcode.com/...
C. Griffin
"Can I keep his head for a souvenir?" --Max from Sam 'N Max Freelance Police