Ask Slashdot: Professionally Packaged Tools For Teaching Kids To Program?
Binestar writes: I've been doing IT consulting for years, but I'm not a programmer beyond bash scripting, perl scripts to make administration easier, and batch files to make Windows easier. I recently found an online course for modding Minecraft that my 9-year-old daughter is really enjoying (she built a custom sword that shoots lightning). Does anyone have any recommendations on online courses that would be age appropriate and worth the investment? It's been easy to get her interested in the Minecraft modding course because, as any parent with young children knows, Minecraft is kinda popular...
The course she's taking now is teaching her Eclipse and Gimp, and I'm sure there are other tools installed that they haven't had her open yet. What other vendors have stuff worth introducing her to? I've also started looking at things like the Kano and Learn to Mod, but as a non-programmer, I'm not really sure which are most useful for introduction and which are accomplishing what they claim vs. being a waste of money/time.
Anyone have experience or suggestions to help sort this out?
The course she's taking now is teaching her Eclipse and Gimp, and I'm sure there are other tools installed that they haven't had her open yet. What other vendors have stuff worth introducing her to? I've also started looking at things like the Kano and Learn to Mod, but as a non-programmer, I'm not really sure which are most useful for introduction and which are accomplishing what they claim vs. being a waste of money/time.
Anyone have experience or suggestions to help sort this out?
http://scratch.mit.edu/
Gamemaker is the only solution. Every True Programmer uses Gamemaker. Why aren't you using Gamemaker? Gamemaker is the best. Nothing's better than Gamemaker. With Gamemaker, nothing is impossible. Without Gamemaker, you are nothing; a mere husk unfit to exist. Return. Return, I say!
Return, return, return, return, return to Gamemakerdoooooooooooooooooooom!
hopscotch on ipad is aimed at teaching kids to program visually
Tongue in cheek as firmly as I see it there, I'm not sure it would keep her attention very well. I have shown her the Flight Sim Easter Egg in Excel 97 as an example of an easter egg and also had her looking some up for her Wii games. The searching for things has really opened her mind for thinking outside the box a bit. (example: https://www.youtube.com/watch?... )
Do you Gentoo!?
I would (and will) use these cool chips to build programs that really interact with the world.
It is so easy these days.
Of course then I'm not answering your question at all. There are nice interfaces
to program these, but I haven't used any that are made for kids.
ALICE from Carnegie Melon, http://www.alice.org/index.php
Sig withheld to protect the innocent.
... And see them lose interest before the end of the first sentence.
They learn to code and they see interactive results in the real world instead of just looking at a display.
Get free satoshi (Bitcoin) and Dogecoins
You could continue to use minecraft to teach her to servers work as well as use eclipse to create server plugins and use APIs. I mean I'm all about riding the train of what people are already interested in. And Java skills are pretty applicable to a variety of languages. Naturally MC servers can have... questionable people on them, but I'm sure she could make a server with friends (and just whitelist). It could be a really interesting project for sure!
I recently bought my little sister, 9, a kano kit from kano.me. It's like a build your own computer kit, just a raspberry pi with a case and color coded cables. It comes with a colorful instruction booklet like a LEGO set. It has some code-blocks like programming environment that walks kids through how to write simple programs. The code she showed me had her making full blown for loops and such. Rather than run your code and print to stdout, it would generate a scene in Minecraft. She told me that she asked a boy in her class who liked Minecraft, "how long would it take you to build a castle in Minecraft" and he said "about a day." She replied "well, I could do it in about 5 minutes, because I know how to program." That right there made it well worth the cost.
I'm afraid I don't have any specific suggestions, but if you want them to get interested in programming, it needs to be an environment that let's them build things that they're already interested in. Generally speaking, that probably means it should be relatively simple to create videogames in the environment you choose. I learned how to program in AppleBASIC on an Apple II+ as a kid, and the very first thing I tried once I reached a basic level of competence was to create a videogame. I've seen this pattern over and over. Even college students seemed to be a lot more enthusiastic about final projects if they had the option of creating games - nearly all of them opted to do so.
Modding existing games is a great place to start, because they're already starting out with something they like, and they can see results very quickly. The downside, of course, is that setting up a modding environment is often rather tricky (depends on the game, of course). Other good candidates are things which affect devices in the real world, such as controlling robotics. Lego Mindstorm comes to mind. Seeing real-world reactions from something you programmed is incredibly addictive.
I've long wished there was a quality multi-media / game development engine (2D would be fine) all in one development environment that contained a lot of sample art assets and an integrated language that's simple, robust, and safe. Many modern development environments are often too difficult to set up, unfortunately, and those "all-in-one game development" packages I've seen have been severely lacking in quality. Granted, maybe there are some good ones out there I haven't seen.
Irony: Agile development has too much intertia to be abandoned now.
After being used to more powerful IDEs I was at first unimpressed with the Processing IDE. However, the more I mess around with it, it's not all that bad. It's what the Arduino's IDE is based on and where I was first introduced to it.
I could see it being a very good introduction to programming. Simple interface, easy to set up and tons of examples and tutorials. Write code, click "run".
Ascalante: Your bride is over 3,000 years old.
Kull: She told me she was 19!
Errrm, what does *she* want to do? Make a 3D thingie fly around and shoot hearts at ponies with it? Then Unity 3D is the way to go. Blender will be more useful to her aswell. There are courses for that. Does she want to draw cool graphics? That's easy: Processing. Does she want to build her own robot? Arduino. ... And so on.
Teaching her Eclipse sounds more like torture to me. But then again, maybe you have a fledgling business programmer here - who knows?
At the age of nine focussing on a neat useful interpreted PL probably is the best. Python, C# (Unity 3D) or Processing (Processing and Arduino) are good choices. JavaScript and Chromeexperiments if she's into stuff that comes out of the Intarweb.
I like the fact that your daughter is into this sort of thing. I wish the mother of mine had supported me more/not prevented me in trying to introduce my daughter to programming. All the best to both of you.
We suffer more in our imagination than in reality. - Seneca
As you specifically mentioned that your kid's interested in minecraft, see if they'd be interested in ComputerCraft which that lets you build 'turtles' that can be programmed to do things using lua.
You can then give her challenges of increasing difficulty to teach her to break things down into steps, and to build on what she's already learned:
I've done the various tunneling stuff ... I assume the other stuff is possible, but I haven't actually tried them. Note that you need diamond tools to make the various types of turtles, so mining turtles should be first ... but then you have a diamond pick that doesn't wear down.
Build it, and they will come^Hplain.
ComputerCraft Institute :
https://github.com/squidsoup/c...
http://blog.nocturne.net.nz/ed...
https://www.youtube.com/watch?...
Build it, and they will come^Hplain.
If she is interested in learning programming, there's several courses on Khan Academy that do basic Java/Javascript that are age appropriate. My 9 year old had never shown any prior interest in learning how to do anything beyond games and Youtube on the computer, but I set her up on KA one afternoon and she spent about 30 minutes figuring out how to draw boxes on the screen to finish the requirements, then spent another hour and a half drawing things on the screen with Javascript. Access is free, and has other things she might be interested in as well.
I found the W3 schools web site: www.w3schools.com/ to be very helpful. While not specifically designed for kids, it is well written with lots of helpful features. It is a great introduction to HTML CSS JAVASCRIPT SQL PHP among other things.
excitingthingstodo.blogspot.com
That sounds like 0x10c, but I know nothing about KSP.
Sig withheld to protect the innocent.
Teaching them to program _what_ exactly? Robotics? Video games? Mobile Apps? You're going to have entirely different requirements depending on what you want to program.
The tools were good enough for daddy, they should be good enough for the kid...
And I did try eclipse and other modern wonders — and have gone back with disgust. Disgust mild, but sufficient to want to wash hands — the shiny new shells smelled of mice, if you know, what I mean.
In Soviet Washington the swamp drains you.
My first programming language (5 years old, 1985) was Apple BASIC. Online interpreter:
http://www.quitebasic.com/
When I was in 3rd grade, we programmed in LogoWriter. Looks like there is a web-based LOGO interpreter here:
http://turtleacademy.com/
Next, I learned PASCAL.
http://www.compileonline.com/c...
None of that stuff is OOP (although imperative is still a very important paradigm).
Once you want to move past kiddie stuff, I'd set her down with a C# IDE (the free-as-in-beer Visual Studio edition or the free-as-in-really-free MonoDevelop) and some YouTube tutorials.
Ceebot: http://www.ceebot.com/ A well thought-out, gradual curriculum, broken into a series of lessons structured as rewarding game levels. Best thing - they can get through it without constant hand holding.
See, I wouldn't say my daughter is currently interested in programming, I would say she is currently interested in MINECRAFT and I'm adding something I would consider a life skill to that interest by showing her how to mod minecraft. If I'm successful on guiding my daughter into interests that add life skills, I believe I will have succeeded as a parent. By showing her how all this stuff she is interested in runs, I hope to broaden her horizons.
Do you Gentoo!?
Scalable Game Design with AgentCubes online (http://scalablegamedesign.cs.colorado.edu https://www.agentcubesonline.c... fits the bill as it allows your daughter to create 3D worlds similar to Minecraft but includes the ability to design her own shapes and program them.
I remember something about a package for Squeak called etoys.
Also I was wondering if a HyperTalk clone like LiveCode would be useful.
Raspberry Pi Foundation has loads of stuff - see under Resources, Teach and Learn and Make http://www.raspberrypi.org/ - all intended for young people (and its on Creative Commons licences). The "Teach" stuff is written by Carrie-Ann Philbin, who is a professional teacher - she has quite a few videos of good stuff on Youtube.
The Mag-Pi, a magazine free to download (28 issues already) , has tutorials for games in both Scratch and Python, and Minecraft - anfd there's plenty of stuff in there that might fire YOU up! http://www.themagpi.com/
"Cock Up Your Beaver" does not mean what you think. This sig is intended to clog filters and annoy do-gooders
I'm guessing that your kids doing this level of programming are not in elementary school, this guys daughter is 9! Good Grief!
Personally I would not even consider trying to get a 9 year old kid into programming outside of school (boy or girl). If she want's to mod Minecraft good for her, but don't pressure her or even encourage her beyond this. 9 years old is an age where kids should be learning social skills and exercising their imaginations. Motor skill development at this age is also important. Teach her chess and play with her, make sure she has social activities with friends her own age, let her get involved in school plays and be in the band, baseball and soccer are other great activities. Sculpting, painting, drawing, reading, Tai Kwon Do, anything but encouraging her sitting in front of a computer for hours at a time.
A game like chess can develop logic skills and planning abilities without the isolation of programming (I.E. Don't dump her off on chess.com and leave her there). Encourage what she should be learning at 9, not what is the most convenient for you to have her learn at 9. Here is a consideration: If your daughter was one of those rare geniuses ready to graduate college when other kids her age are in the 7th grade, you would not be asking the question. She would have picked up C on her own and been programming already, without your assistance.
-The wise argue that there are few absolutes, the fool argues that there are no probabilities.
Baltie is being used in several European countries, it's more of a graphical programming tool and perhaps for younger children. I haven't tried it myself, but it might be worth a look: What is Baltie?
Geared toward effectively teaching kids - http://pencilcode.net/ Really nice to use and fun way to learn general programming concepts.
If you live in the city, there's probably after school programs or summer programs geared towards kids and computers. Some are technical while others are creative, but most of them provide a mentor who guides groups of children through creative projects. Depending upon your child's personality, she may find it a much more appealing environment.
If you are willing to teach/learn yourself ...
I just started teaching my 8 year old how to write code. We started with regular python and wrote a text base high/low game (Game where computer picks a number and you guess. It tells you whether you are high or low or if you guessed it). Of course my son was thrilled to add a cheat where it always made him win when he entered his name as the player.
Next, I bought some graph paper, down loaded pygame and had him draw a tank, then figure out what polygons to use from pygame to draw the tank. We drew it with 3 rectangles. Just the power of changing the tank size and changing location thrilled him. Over the next few weeks we started demonstrating how to make a bullet move out of the cannon, then how to move the tank with up/down arrows, what rgb values are and how to research those colors on the web and create your own. I had to read ahead and learn this stuff myself first.
This stuff is simple but starts to introduce them to the level of detail required to write something that works. We finished with a game where you had a rocket launcher and two rockets. A tank would come at you at random speeds. You had to pick a fuse time and hopefully the detonation happened on top of the tank.
Don't pressure her. My son's interest comes and goes. I'm there to support when he's inspired. Good luck.
-Nuke the moon
My son, age 11, loves computers so I've wanted to teach him programming for awhile. He loves playing Disney Infinity 2.0 and there is a surprising amount of "coding-light" options in there. (If you step on this switch then this action happens.) He's also gotten to love Blockly which is based on Scratch. He's also joined his school's Lego Robotics club so he's learning some programming there while using Lego Mindstorms.
My sci-fi novel, Ghost Thief, is now available from Amazon.com.
As a rule we have limited screen time a lot (30 minutes/day is generous)
So how should people deal with video games that take 75 minutes just to get to the first save point, like Majora's Mask?
Buy the kid a used Commodore64
http://popular.ebay.com/comput...
You can make a free google site at sites.google.com
You can learn Apps Script
https://developers.google.com/...
So not only can kids develop in an IDE in a browser, they get their own web site and do whatever they want. I recently started using it and I figured out how to render a ghetto lightbox with images pulled from my flickr feed. I used nothing but google API stuff, UiApp, etc.
As a matter of fact, in my experience you can use any of the recommended tools. However, my more pressing question is what PROBLEMS the kids should try to solve since this is tje best way to learn. Of course you can start with a simple game but soon you get into object cloning. You can do pong but you get into general angle reflections. You do anything geometric and get into sine functions. Does anyone know of a nice set of problems to solve, with increasing complexity, for young programmers?
You will also condemn them to a professional life of being under perpetual pressure to overwork, perpetual blame for failing to do the impossible, and perpetual threat of being outsourced. ... Do you kids a favor and send them to get an MBA or license to practice law instead.
Every MBA and lawyer I know is very overworked and expected to do the impossible daily. While the lawyers might be a lesser risk of being outsourced, most of the MBAs tell me they are quite afraid of being outsourced.
Don't try to out wierd me, three-eyes. I get stranger things than you, free with my breakfast cereal. --Zaphod Beeblebr
perhaps Codecademy might be good for her, depending on how well her comprehension is: http://www.codecademy.com/skil...
http://about.me/jimm.pratt
About design patterns: In my own experience, I learned about design patterns only after many years of programming experience. I had already encountered and/or invented all the patterns I later read about. But reading about them was good because it allowed for a common language to communicate with other programmers as well as a kind of self-reflection and ability to think about design patterns more conscientiously and methodically. I'm glad to have learned about these when I did, and not sooner.
It's just fine, IMO, to teach programming as a self-discovery, unguided hacking, kind of thing. This is a "constructivist education" approach, and works extremely well in many cases.
The same comments apply to a lesser degree about teaching multiple languages and general programming language concepts. I would not teach a second programming language before a young student had the chance to explore and get comfortable with their first. That may or may not take long.