Houston we have a problem
I recently attended EdCamp Cleveland and during a session on coding in the classroom an exasperated primary grade teacher (I think she said 3rd grade) said "Does all of this block coding really lead to anything? I did the Hour of Code block-based activities with my students this past December, but what I really want to know is does this actually lead to something meaningful?" I think that this teacher's questions expressed her (and many others' I'm sure) frustration with what she saw as the lack of meaningful coding activities that looked anything different than kids just playing a game. Additionally, she may have also been expressing her students' desires for more meaningful coding activities. Though I am sure that a teacher with a background in coding could take many of those block-based coding activities and modify and/or enhance those lessons to include a connection to an acitivity rooted in an actual programming language, those teachers with a background in coding are in the extreme minority. What we need is a curriculum, teacher materials, and teaching tools that are accessible for any teacher that wants to provide meaningful coding actitivities to her students - especially for students in the primary grades. On the most recent episode of my Swift Teacher podcast my guest, Stacy Sniegowski, stated it best when she said, "...comparing a block-based coding envrionment to real text-based coding is like comparing a child using an Easy Bake Oven to those on MasterChef Junior." Stacy was exactly right. 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.
Block-bassed coding in Swift
It seems to me that what we really need for primary school-aged students is a block-based coding system/program/app that is fun for young children and yet still enables the students to get exposure to working with and manipulating actual code from an actual programming language. Fortunately, we now have exactly that. Tynker has partnered with Apple to provide a K-5 block based programming curriculum that gives students the opportunity to learn some of the basic concepts of coding and computer science all in the Swift programming language. Tynker's K-5 curriculum is part of Apple's Everyone Can Code curriculum. With Tynker, students have access to many different, engaging, and fun activites in which they need to move their character through the activities in order to meet an individual activity's objective. Students code the character to perform the needed actions by dragging a block with an action on it for the character from the left-hand side of the screen onto the main part of the screen. The action block then becomes part of a larger code snippet that has been started with a function
func name(). This is almost identical to what other block-based programming activities do. The real genius is in the new Swift button at the bottom of the screen that takes the plain English on the coding block and transforms it to actual Swift code!
Houston we have a solution
It is the ability for students to change from block-based coding in English to block-based coding in Swift that is the exactly what is needed and provides the most engaging coding edcuation experience for students. I believe it is the best coding education possible for young students for several reasons. Apple partnered with Tynker and created Get Started with Code 1 and Get Started with Code 2 Teacher Guides that are filled with the resources, information, and support materials. Teachers with little to no coding experience are now enabled to provide their students a quality coding education experience in the Tynker app with these materials. The Tynker app provides students a block-based coding experience that allows them to learn the basics of coding in blocks. When students are ready, they can then start working with real Swift code in their blocks. It is the Tynker app's functionality that enables students to work with both blocks and real Swift code, which is precisely what is needed. A teacher will be able to ask students specific questions on how to solve a level or multiple levels in an activity in Swift when the teacher feels her students are ready for that level of difficulty. The repeated exposure to and use of the Swift code in the blocks is what will provide students a strong recognition of the basic structure, syntax, and use of Swift in programming-type problems. Additionally, this early and repeated exposure to Swift will enable students to more easily tranisition to the more advanced coding challenges in Swift Playgrounds.
The partnership between Apple and Tynker has yielded an exceptional coding tool and curriculum for K-5 students on any iPad that is running iOS 8 or later. Consequently, Tynker will run on an iPad 2 or later device. I am excited to see the powerful programming challenges my future students will be able to tackle given the long exposure to and the many learning experiences those students will have with Swift in apps like Tynker and Swift Playgrounds.