I suppose it’s obvious – children like playing with toys.  You see it with PowerPoint: as soon as you show anyone the animation facilities, they want to do things just because they can.  It’s the same with Scratch.  Because the possibilities are endless, it’s all too easy for children to make sprites perform bizarre tricks, rather than learning useful skills.

The answer, of course, is an understanding of the things children need to learn to be able to program.  This online presentation gives a good summary of the four commonly-accepted steps in computational thinking: decomposition, pattern recognition, abstraction and algorithm design.

I also found this MIT paper on computational thinking useful in focusing my mind here.  It identified the following factors, all of which we need to keep in mind while planning lessons.  Better than this, they provide us with a structure on which to create our lessons.  Over the coming weeks and months, we’ll be developing lesson resources which map these factors to the CAS/NAACE Primary Levels, supporting an effective, integrated approach to embedding Computing in the curriculum.

7 key concepts that need to be understood for effective coding

  • sequences – the principle of an algorithm being a sequence of instructions
  • loops – the ability to repeat commands
  • parallelism – several sequences can be happening at once
  • events – things happen, triggering different sequences
  • conditionals – some things happen only in certain circumstances
  • operators – performing manipulation of numbers and text
  • data – storing, retrieving and updating values

Four sets of practices that children use when coding

  • being incremental and iterative – “Designing a project is an adaptive process, one in which the plan might change in response to approaching a solution in small steps.”
  • testing and debugging – “various testing and debugging practices … developed through trial and error, transfer from other activities, or support from knowledgeable others.”
  • reusing and remixing – “…to potentially create things much more complex than they could have created on their own.  Reusing and remixing support the development of critical code-reading capacities and provoke important questions about ownership and authorship.”
  • abstracting and modularizing – “building something large by putting together collections of smaller parts”

Three perspectives that children apply when coding

  • Expressing – “A computational thinker sees computation as a medium and thinks, ‘I can create’ and ‘I can express my ideas through this new medium’.”
  • Connecting – “Creativity and learning are deeply social practices, and so designing computational media …is… enriched by interactions with others.”
  • Questioning – “Young people should feel empowered to ask questions about and with technology”

(Image courtesy of Lucelia Ribeiro under creative commons licence)