Learning to code as a 30-year-old kid with Apple’s Swift Playgrounds
arstechnica.com
arstechnica.com
The challenge is that after about 45 min of "play" time, they want to 'build' something and create--and Playgrounds doesn't provide the environment to do that. Then, they get bored and feel encumbered.
After working with over 1000 kids in our beta phase, we've tested almost every product on the market.
I personally like Scratch + Learntomod.com which uses Minecraft to teach Javascript and CodeCombat.com (My YC batchmates).
We're soon launching an online course (for a nominal fee) that has progression, milestones, and support for parents who want their kids to 'complete' a project. Message me or check out our beta site if you're interested to in being a beta tester for our online product--would love to hear from you.
In addition, you as a developer can create additional playgrounds in Xcode and transfer them to Swift Playgrounds on the iPad. That means you can give the kids a basic template and allow them to fill in the code. For example, create a template with a couple of pages with the imports already complete and a basic template of empty procedures to get them started.
https://twitter.com/ontouchstart/status/753801598367731712
However, with the .playgroundbook format (folder), it seems that I can only export it to Mac (as a folder) and can not AirDrop back to iPad. And it seems that XCode 8 beta-2 does not support playgroundbook yet.
I am keeping an eye on Apple documentation:
https://developer.apple.com/library/prerelease/content/docum...
Pasting your website, lead me to your contact link of team@futureleague.co ... is that best place for us to message you?
Who is we?
btw - Every time I see a bunch of 130+ IQ engineers tackle education problems, I get optimistic about the future.
It makes programming approachable to nearly anyone on a device that's approachable to anyone that can afford it.
I heard someone on one of the TWiT podcasts talking last week about teaching their 6 and 8 year old to program using it and that they were talking about creating real-life functions to do household tasks IIRC.
I ended up working through about half of the first Learn to Code module and had a great time even as an experienced programmer. Hopefully those new to coding will also find it to be an enjoyable experience.
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!"
- Pico-8 (Lua)
- Love2d (Lua)
- Scratch (visual coding)
https://github.com/open-swift https://github.com/VeniceX https://github.com/Zewo
This is just one example.
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.
It's a live programming environment with instruction to go along with it.
(Disclaimer: Used to work there; didn't work on CS)
The hardware part of the course is also available on coursera now. [2] Previous discussion on hn [3].
[1] http://www.nand2tetris.org/
https://docs.racket-lang.org/drracket/
http://www.ccs.neu.edu/home/matthias/HtDP2e/
Someone below mentions Khan Academy. It's approach is similar and stays on the straight-and-narrow in its use of Javascript:
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.
Here is an example of a non-graphic interactive "playground" (https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93prin...) for the same language. https://asciinema.org/a/79773
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.
Kids will find out themselves.
referenced here: http://www.livebinders.com/play/play?id=810282
Unfortunately the bigger the list, the less likely profitable info has been highlighted. I also didn't note where I found this info; bummer.
From the Swift Playground website:
> Send your code to a friend’s iPad using Mail, Messages, or AirDrop
No other apps are allowed to do this because of the iOS Terms of Service restrictions
It's not like this sort of behaviour is new to Apple (or any of their competitors) .
> 3.3.2 An Application may not download or install executable code. Interpreted code may only be used in an Application if all scripts, code and interpreters are packaged in the Application and not downloaded. The only exception to the foregoing is scripts and code downloaded and run by Apple's built-in WebKit framework, provided that such scripts and code do not change the primary purpose of the Application by providing features or functionality that are inconsistent with the intended and advertised purpose of the Application as submitted to the App Store.
You can see this is how they handled it
https://bitbucket.org/TwoLivesLeft/core/wiki/CopyingCode
Swift Playground doesn't seem to have that limit which arguably makes Swift Playground a whole lot better and arguably anti-competitive
(After some googling, apparently it goes way back: https://en.wikipedia.org/wiki/Karel_(programming_language) )
For me, I guess having started in 1979 with a Commodore PET and basic and assembly, it doesn't have the appeal. I tried Kotlin a year ago, and Swift looks identical to it to me. I believe in the gamification concept, I just think it is from an adult's view on what they think a child likes, which I guess is inescapable unless you do constant targeting studies and updates. In the end, have children design what children like with an adult's skills at hand to realize it.
I use Codea, Pythonista and now Continous (.NET/F#/C# on an iPad Pro) [1]. I can write add-ons and actions for my iPad apps in Pythonista (Editorial and others) to extend them. I am a polyglot and Scratch is not something I would use to teach my kids, not for any enumerable reasons other than I tried, and it didn't appeal to my kids after the first animation demo program. I know it has been somewhat popular. My older teenage children fared better with Processing, Racket, Minecraft, Arduino and plain Python.
One that has caught my attention, and I will show my youngest child is NetLogo [2]. It is a modeling environment for researchers, business people, and well, basically adults, but it is self-contained, comes with tons of examples, and will be valuable in the future in learning modeling. It's a lot of fun too!
NetLogo's three-tabbed unified interface has the GUI simulation up front, an Info/Documentation page second, and a Code tab. The Code is a variation of Logo. Short programs, and easy syntax with immediate gratification of watching your simulation run. Now just some more kid-friendly examples, and you're off to the races and a PhD in the Mathematical Sciences and Modeling!
[1] http://praeclarum.org/post/147003028753/continuous-c-and-f-i... [2] https://ccl.northwestern.edu/netlogo/
Then I realised it won't work on their iPad (4th Gen with Retina) - which runs everything fine, and there's no need to uprade it.
So there we go - they won't be using this.
Edit: For those who downvoted my comment here, I'd really be curious to know why.
What makes Swift Playground so compelling is that it seems to be specifically tailored towards new programmers, with the way it teaches -- it provides basic information about Swift, and does not overload information at the reader at once. And even existing programmers can make use of it because it's just a Swift playground (part of Xcode) underneath.
I think Swift Playground is genuinely fun as you can manipulate an object on an iPad. It's pretty much like playing a game in that sense. That's something you just can't get out of reading a book. It makes it that much more approachable.
If you show kids or even new programmers Swift Playgrounds along with something like Learn You a Haskell or Realm of Racket, or even tell them about Scratch, which do you think they would gravitate towards more?
But anyways, I'm excited to give this app a try - I'm always glad to see more tools to help people get started.
And yes, it uses real Swift syntax which is its main goal, according to the "Platforms State of the Union"[1] talk at WWDC this year.
It's after people have gotten used to a few languages that they start to develop syntactic prejudices, for example against "parenthesis languages" if they've been doing a lot of coding in C-family languages.
As a total noob programmer myself, stuff that exists only on the command line is a bit of a let down.
Playing with Swift on an ipad is a lot of fun.
(The second one is a trim from the same original.)
iPad swit playground preview video : http://www.apple.com/swift/playgrounds/
Lightbot: https://lightbot.com/