Friday, July 14, 2017

In search of best practices to teach coding to elementary students

image from The Scheme Team
For the 2017-2018 school year I will be working at Marzano Academy at Heard Elementary School. Marzano Academy is a brand new magnet school in the Clark County School District focusing on coding. While my official title is Humanities teacher, my focus will be teaching coding to the students in grades 1-5.

The first tasks I was given was to develop a scope and sequence for the coding program, define the materials needed, and plan activities and resources for students with a diverse set of coding skills. As I discussed these ideas with the admins we felt that all decisions would be guided by two main principals.
  • all students should be exposed to all coding platforms taught at the school
  • students need resources to continue their learning outside of class time
As I considered various coding platforms and activities I came up with a list of various coding platforms that I feel all students at Marzano Academy should be exposed to. These platforms, or environments, include Javascript (Kodable/Tynker/Code.org/Code Avengers), Scratch, robotics, HTML/CSS, and mobile app creation. Some coding environments, such as HTML/CSS, are too difficult for some grade levels and would not be taught in all grades. Others, such as robotics, would look completely different in younger grades than in the upper grades.

I love the idea of teaching students different coding environments because it exposes them to different skills, syntax, and applications for coding. For myself, I love working with HTML and CSS to design websites. If I weren't in education that might be a field of work I would pursue. If we were to focus on just robotics or Scratch, students would miss out on other environments that might appeal to them. 

Defining these different environments was the scope of our project. But creating a sequence becomes a little harder. In order to give ALL students the opportunity to work in ALL coding environments, I can see the curriculum taught in one of two ways.

In the first way students in each grade level would be exposed to each coding platform during an 8 week period. The structure might look something like the diagram below.


The pros for this would be:
  • students in all grade levels work in each coding environment
  • students are given multiple opportunities to work in each environment over their time at Marzano
The cons for this structure would be:
  • students would only scratch the surface of the coding environments
  • with limited time in each environment students wouldn't have time to apply their skills or create something of value
  • its hard to define how the coding experience would be different across grade levels. i.e. how does robotics look different from 4th to 5th grade? 
A second approach would be to assign coding environments to specific grade levels, as pictured below.

The pros for this would be:
  • students have more time to go in depth in each environment, experimenting and applying concepts and skills learned
 The cons for this structure would be:
  • students at the beginning of their time at Marzano would miss out on some coding environments. For example, under this model 5th graders would only learn how to create mobile apps and would miss out on robotics or working in Scratch.
  • designing enough engaging activities to keep the students interested in a platform for an entire year (approximately 34 weeks) 
In my quest to find coding resources I've found plenty of resources to teach coding. The following websites have a lot of potential and I'll probably end up blogging about them. They provide a variety of visual activities and games to help students understand coding syntax.
But there's not a lot out there that describes the best sequence for teaching coding to students.  What skills or platforms are better for younger students in grades 1&2? What about older students?

I'd love to hear your thoughts on this. Which approach above seems better to you? Or am I completely off base on these? Is there something I've missed or haven't considered?

No comments:

Post a Comment