A few weeks ago, I wrote a piece in this spot about how tech companies like Apple and Google need to raise the bar in their education efforts. At that point, they had largely provided fairly generic tools to educators and students which enabled learning but didn’t actually assist with teaching or learning directly. The key quote was this:
These are companies with enormous resources and creativity when it comes to creating useful software and applications but we’ve yet to see that innovation applied to the learning end of education.
A couple of weeks later (and a month ago this week), Apple announced Swift Playgrounds at WWDC and my first response was this was exactly the sort of thing I was talking about, at least on paper. Swift Playgrounds would be the first attempt from Apple to directly get into the business of teaching students something and it played to Apple’s strengths by focusing on teaching code specifically. But the problem with keynote demos is you never know how well what’s demoed actually works in practice until you can get your hands on it. A month later and the public beta of iOS 10 is now available, along with the preview of Swift Playgrounds. I’ve had a chance to play with the app this week, as well as talk to some of the folks at Apple behind the app. I’ve come away convinced this is a step in the right direction for education technology.
Pitfalls of teaching coding
I have four kids, with the oldest being 11 years old. As a kid, I learned BASIC and spent hours making simple programs on the various computers we had available at home. I never pursued more advanced programming languages but I gained an appreciation of the value of learning to code and the way it taught me to think. As such, I’ve spent a fair amount of time looking for ways to teach my kids coding and my oldest two have done some basic coding in school as well.
From what I’ve seen, there are two big pitfalls when it comes to teaching coding. The first is jumping directly into coding itself too quickly, with no good grounding in concepts and ideas first. The second is the opposite – teaching at too abstract a level, often in “pretend code” or a made-up coding language which the kids can’t actually use. With the former, kids can quickly become overwhelmed and fail to learn general principles of coding, which often makes the knowledge they gain hard to apply outside the specific confines of the task at hand. With the latter approach, kids get a better conceptual understanding but are often no closer to actually being able to write working code.
Swift Playgrounds mixes concept and practice well
What Swift Playgrounds does well is mix concept and practice, teaching kids concepts before diving into the code. Here’s an example from the section of the first lesson which covers functions:
As you can see, the app first introduces the concept in an abstract form then talks about how code handles this scenario in a general sense and then introduces the specific syntax required for defining a function in Swift. This approach seems to avoid both the pitfalls I mentioned. It also blends verbal instruction, hands-on code, and a visual application very well. The lessons tend to provide just enough instructions to help the student get off the ground, without providing all the answers, and the coding itself is limited to the specific task at hand without getting bogged down in lines and lines of extraneous code, while the visual interface on the right of the screen allows kids to instantly see the effects of what they’re doing in the code. That approach allows kids to test approaches and almost instantly see the results, which is more conducive to true learning than a strict instructions-based approach.
A focus on middle schoolers
From talking to the team behind the app, it became clear the app is designed with Middle Schoolers in mind as a primary audience. As such, there are also resources for teachers of those students on Apple’s Everyone Can Code website, including a teacher’s guide for Swift Playgrounds specifically. That sort of support for teachers is going to be essential, especially since many of those teachers won’t be computer science specialists. Apple brought in both kids and educators to help test the app and ensure it was well suited to the target age group and would fit with school STEM curricula.
I sat down with my 11-year-old, who’s got another year before middle school, to see how well the app was pitched for her age and she did just fine with it. I provided some assistance here and there, but I suspect she would have got along fine without it. She seemed to understand the concepts quickly and applied them well. With most of the exercises, she got them right the first time and, when she didn’t, the combination of the animated world on the right of the screen and the simplicity of the code meant trial and error usually solved the problem. My nearly 8-year-old – who is well below the age the app is designed for – wasn’t able to get started by herself but did fine with a little help here and there.
The one thing I find myself wanting as a parent is an equivalent of that Teacher’s Guide for someone in my position. I’d like to have a better sense of what the app is supposed to teach, how long various exercises should be expected to take, how much and what kind of support I should be providing as a parent, and so on. A self-starting student of an appropriate age should be able to be largely self-sufficient but, if I was trying to supplement my student’s school education or perhaps home-schooling a child, I’d want to have the resources necessary to structure this learning a bit more. When I raised this with the team, they said parents could use the Teacher’s Guide but I worry parents might not know where to find it because there’s no real link to these resources from the app itself. A lot of apps designed for kids have prompts for parents that pop up after the app is opened for the first time. I wonder if the Swift Playgrounds app would benefit from this too.
Swift was designed with teaching in mind
One of the things I found most striking from talking to the team behind the app was Swift as a programming language was designed, not just with ease of use for existing developers in mind, but also with a view to helping people learn to code. Although it’s been two years since Swift was announced at WWDC in 2014, Swift Playgrounds is really the first outgrowth of a strategy that has been in place from the beginning. It’s noteworthy that everyone on the team behind the app has kids too and was motivated, in part, by a desire to help them learn not just coding but computational thinking. A key aspect of Swift Playgrounds is the coding space in the app is not hamstrung in any way – though kids are guided to practice specific tasks in the coding space, any and all other Swift commands would also work in that space and can take advantage of all SceneKit, Metal, the radios on the iPad, and anything else any other Swift code can tap into. If students happen to know how to write Swift code beyond what they’re currently learning, they could play around with that within the app too and experiment beyond the bounds of the current exercise.
Sharing, exporting, and new content
The app supports a number of sharing options so students can share work with their teachers, fellow students, friends, or even export chunks of code to Xcode on the Mac via AirDrop, to incorporate them into apps they’re working on there. Students can also take pictures, capture video, or even broadcast live video of whatever they’re doing for the benefit of teachers or to show off to friends and classmates. The two core components of the app are lessons and Challenges, with the former teaching multiple principles in a structured way and the latter providing individual exercises designed either to teach new skills or reinforce concepts students have already learned. The sharing element of the app allows students to receive Playgrounds from others and then use them within their copy of the app. Apple will also push new lessons and Challenges to the app from time to time once it’s live.
For now, even though the interface borrows user interface conventions from the App Store and iBooks store, there’s no plan to allow third parties to make content available through the app, so the only sources of content will be Apple itself and direct person-to-person sharing but I’d imagine that Apple might want to open this up in time. Allowing others, including students, to push content to the store as they can to the iBooks store through the freely available iBooks Author tool seems like a logical future step.
Overall, a step in the right direction
As I said, I’ve called on big tech companies to take a more direct role in education and especially in providing learner-focused tools and not just technology for educators. Swift Playgrounds very much feels like a step in the right direction and builds on Apple’s strengths with a focus on technology education. I’d like to see more support for parents in addition to the great teacher support that’s there already and I think the app will also benefit from a store of sorts for new content over time, but this is a great start. I suspect lots of future developers will have their start playing with Swift Playgrounds or something like it and I’d love to see other companies – notably Google and Microsoft – play in this space too.