[Note: The post below was updated in July, 2019 (originally written May, 2018). This article might be a useful read if you are teacher considering Scratch vs Swift Playgrounds or are caught up in discussions / arguments about the two. I think that juxtaposing these two coding environments helps reveal the distinction between children “learning to code” and children “coding to learn” in schools.]
If you are a teacher like I am, and love to see how coding can be conceived of as a literacy, a powerful tool with which children can create, tinker, and share then you might also become frustrated by articles like this. Here is a quote:
Block-based coding is kind sort-of, kind-of coding just like a child using an Easy Bake Oven is sort-of, kind-of baking. What the child makes in the Easy Bake Oven may technically be a cake, but it’s not really a cake. Similarly, coding in something like Scratch or Scratch Jr. may technically have coding blocks, but it is not really actually coding.
Besides the prejudicial (and erroneous) assumption that block-based coding is not real coding, this kind of thinking strikes at the question, “what is coding?” Or, better, “why do you want kids to learn how to code?” In this article, the author is clearly writing about teaching kids to code. It might seem a subtle and dismissible distinction but I think there is a big difference in pedagogical focus between students learning how to code in schools and students using code to explore, create and learn new things. Unless I am teaching a computer science course in which students are learning the discipline of computer programming (involving best practices of algorithms, structures, systems, networking, robotics, AI, etc.) then I think the focus of coding with children in schools should be the development over time of each child’s literacy in controlling various computing devices with code. And, it doesn’t matter… blocks or typed text… they are still learning to control a computing device. (More on text-based vs. block-based here.)
Ultimately, for me, it comes down to a single key issue: In the limited time we have with children each day in school, what is the best use of that time for learning? How are we designing and/or supporting powerful and empowering learning experiences for our students? I suppose you could think of it as a question of ROI – with any given student investment of time and effort, what is the return in terms of powerful, high quality learning?
I am a teacher who has observed students using a variety of coding environments and finds that Scratch has the most to offer students. Despite this bias, ultimately, I think we can all agree that we are looking for tools, environments and learning models that really work well with our students in terms of high quality, meaningful, useful learning.
I have a love-hate relationship with Swift Playgrounds. I think probably anyone who is as passionate about learning as they are about computer programming would probably feel the same way. Maybe that’s just me? I just think Scratch has more to offer because it focuses far more on creative learning than Swift Playgrounds does (or could) as it stands now. More on that later…
There’s lots to love
Swift Playgrounds is a beautiful looking environment to learn to code. It’s a nice, modern, object-oriented language and I can learn concepts and conventions and put them to work later in Xcode. Children can choose step-by-step lessons and puzzles to build their coding knowledge and skills. They can choose other playgrounds to play in and subscribe to third party ones, too. They can start with a blank project and try out coding ideas. They can save their projects. There are handy shortcut buttons so you don’t have to always type in commands or statements. The code editor is very helpful and automates many syntactic and structural formatting conventions. Kids can program various robots. There’s even a new, augmented reality coding kit so kids can start to explore AR.
There’s lots not to like
I considered writing a section about how Swift Playgrounds and Scratch are both free tools but that Scratch (which runs on all devices) is supported by a non-profit called the Scratch Foundation and that Swift Playgrounds (which only runs on iPads) is supported by a for-profit called Apple, Inc. Suffice it to say, I think the motivations behind each tool are linked to the organizations that create and fund them.
Learning to code
It’s probably clear by now that Swift Playgrounds was not designed as a learning through coding environment; it was designed as a learning to code environment. I don’t think anyone at Apple would have ever said that it’s a coding to learn environment. Indeed, in 2016, Apple’s Director of Tools & Technologies Product Marketing Wiley Hodges said that Swift Playgrounds is “not about learning apps for platforms. It’s about learning good coding practices.” Yet, this turns my mind back to the single key issue at the beginning: In the limited time we have with children each day in school, what is the best use of that time for learning? How are we designing and/or supporting powerful and empowering learning experiences for our students?
What makes using Scratch powerful learning?
Scratch is a unique learning environment because every aspect of it was carefully researched, designed, tested and redesigned. The experiences children have in Scratch maximize the creative, social, personal, experimental, visual and design elements and minimize the technical, syntactic, textual, abstract, and rigid elements of many typed languages. A key design objective in Scratch was (is) to support self-directed learning through tinkering and the creation of personally relevant projects in collaboration with peers. These ideas are further refined and described in Lifelong Kindergarten by Mitch Resnick.
In terms of real students in real classrooms using Scratch, I regularly see students quickly think of interesting ideas they have for a Scratch project and proceed to start to code it in their first session. The use of the Scratch environment, along with a research-based and student tested learning model, can accelerate learning and competence using Scratch to express their ideas. When I observe children creating with Scratch, the best word I can think of to describe it is intuitive. The colour-coded blocks invite experimentation based on almost instantaneous conclusions students have about how the blocks might function with other blocks. The work and the learning come from the building of their code scripts into projects that work the way they want. Typed languages are generally not very intuitive. And with modern object-oriented programming, these languages are even more abstract.
It’s no accident that Scratch works so well with students. I regularly engage in detailed conversations about projects, designs, and problem solving. I’ve written previously about how Scratch is the right place for coding in schools. Probably the most important aspect of Scratch is that it was designed to support a very wide variety of potential projects that can be easily personalized; this leads to children who are highly invested emotionally in their projects. Many have said in passing how much they love working on their Scratch projects.
Papert and Mathland
The “powerful ideas” part of Seymour Papert’s 1980 book Mindstorms: Children, Computers and Powerful Ideas talks about the potential of the computer and computer programming as a tool for thinking and building knowledge within a carefully designed learning environment. This powerful learning environment is the opposite of computer aided instruction (CAI) which is a profoundly important distinction. Instead of designing computer applications that act as a teacher for children, Papert envisioned computers as tools children could use in order to play with ideas and build knowledge. He saw coding as a way to control a mini world, a Mathland, and developed LOGO and various mathematical learning environments. From his perspective, the children are controlling the technology, not the other way around.
Papert’s philosophy was always about how children could use coding to learn, and learning about things that are interesting and fun. Powerful learning is exciting, personal, memorable, social and creative. Scratch was specifically designed (and continues to evolve in redesigns) to be exciting, personal, memorable, social and creative. Despite the seemingly endless coding tools now available through sites like code.org and various app stores, I still think Scratch is the right place for coding to learn.