I've been looking for something similar to this for my 12-year old son. Are there any other resources you guys can recommend to help teach coding? (that aren't Apple-product dependent?)
You've been looking for something similar, discovered that this "something similar" exists, yet the Apple logo puts you off? A used iPad that can run this is probably a couple hundred dollars.
Now, perhaps I've misinterpreted your question, and you'd just like a list of alternatives to keep your options open. I've not looked really hard, not having any kids and all, but there seems to be a dearth of options that meet the (IMO) high bar Playgrounds has set. Me, I wonder if the 2nd-best alternative isn't an old machine with QBasic on it. I just don't see anything else out there that doesn't start with "Step 1: Let's learn about dependency trees!"
Why is parent getting down voted, not wanting to spend a couple hundred bucks, specially outside of the US where a couple hundred bucks can be what you make in a month, is a perfectly valid reason.
Well, I obviously didn't down vote it. But if that were a consideration it should have been mentioned, along with what that existing hardware is. Hence my question, because as-worded the motivation comes across as just an allergy to Apple logos.
No it doesn't. It simply asks for something that will work on a platform other than those owned by Apple. It's an entirely reasonable request, and I'm baffled that people on a web site called "Hacker News" are suggesting otherwise.
There is a next generation implementation of hypertalk, livecode. It began life as metacard (a hypercard clone) and has now evolved to something that can export to mobile, html5 and multiplatform applications. Basically you program in simple english with a smalltalk message passing philosophy.
Scratch is really great. It's free, and kids can publish their work online. Being able to see what other people are doing, tinker with their work, and show off your own projects was a big draw for my son.
It's a visual programming environment, so moving into a second more traditional (text-based) programming language is a non-trivial step, but scratch gets you thinking in terms of algorithms, teaches about what variables are and why they matter, loops and conditionals, etc.
I really like nand2tetris [1] in which one builds a computer from NAND gates upwards. You build the ALU etc., an assembler, compiler, a OS and VM on which you can run your own version of tetris, snake, whatever. It doesn't teach programming directly, but could be used to teach programming when the first parts are reached that require programming (I believe it was Chapter 6 - Assembler).
The hardware part of the course is also available on coursera now. [2] Previous discussion on hn [3].
When my son was around 12 years old we gave him the book "Hello World: Computer Programming for Kids and Other Beginners." It teaches programming with Python and targets making games and was perfect for him. Five years later now, he's really a great programmer, proficient with many languages and techniques. Here's his github site: https://github.com/zyedidia
Being an open source language that also runs on proprietary platforms, Swift can teach people programming from many different points of view.
1. Getting familiar with the platform and toolchains. We all know that these toolchains will be obsolete when your kid grows up. But we have to start from somewhere.
2. What matters is the creative exploration via programming. Whether your kid ends up becoming a Swift (or an iOS) developer is a different matter.
3. One of the advantages of Swift playground on iPad is to liberate the swift learning experience from XCode, which requires you to buy an Apple computer. Another one is being touch native, the design and programming experience will be different from the traditional keyboard and mouse.
4. On the other end, with open source swift on Linux, kids also have opportunities to learn lower level non-graphic programming all the way down to llvm (http://llvm.org/) on portable Linux platforms such as Docker and the cloud. Again, whether your kid ends up being a "server programmer" is also a different matter.
Although it won't deliver the same kind of user experience as Apple product, but there is no reason to believe that kids can only learn from traditional GUI. And to be honest, nobody knows what the future user and programming interface would be.
Swift is open-source now, so it's not really Apple-dependent. Using the Swift Playgrounds doesn't mean your kid will be locked into the Apple ecosystem.
There's nothing usable you can write in Swift that would run on other platforms. Lack of cross platform standard library makes portability only a lip services, "opensource" or not.
Actually, Foundation is being ported to Linux and there are already quite a few third-party libraries out there. I am successfully writing cross-platform server-side applications in Swift.
I teach my 6yo son using Pyret and Racket simultaneously. Pyret is, hands down, the best teaching language today, but hasn't been in use as long as Racket, so there aren't as many resources.