Teach Kids Code: Activity Design


The approach follows a three-pronged approach:

  1. Slow down & simplify
  2. Maria Montesori’s teaching methods
  3. Gamification

Slow down and simplify

As detailed in the thesis, computer science and thus programming is taught at a university level, with a mostly well defined syllabus. Its syllabus, is, designed appropriately for the target age group, whom typically commence studying these topics between the ages of 18 and 21.

Prior to that age group, however, there are roughly twelve years in which children receive formal education at schools, in which they are typically not exposed to any of the concepts that are required foundational to learning computer science or programming at university. This results in a “pre-selection” of sorts, that only a small subset of children, who have been lucky enough to pick up these concepts outside of what they were taught formally at school.

There have been other attempts to fill that twelve year void. Simplified programming is one attempt, for example by making various lines of code or control flow structures available as drag-and-droppable jigsaw puzzle pieces, such as Scratch and Alice. Another attempt is to explain through one-trick-ponies, for example by picking a concept such as making a turtle move around a board and do things through instructions, such as logo and several physical board games that are inspired by it.

The shortcoming of simplified programming environments, such as Scratch and Alice, is that while they simplify, they fail to slow down. They do not explain the fundamental concepts behind the drag-and-drop jigsaw pieces, they have to be inferred, and the children who do not get it, continue to not get it.

The shortcoming of the one-trick-ponies, is that while they do both slow down and simplify, they only do so for a narrow section of programming concepts. They use analogies and metaphors that children are able to grasp, but they do not employ a comprehensive set of them - not enough to constitute an entire syllabus.

Thus, how do we slow down and simplify, in order to teach children programming? We have to find ways to teach the fundamental concepts of programming based on things they already do know, or can already relate to; and we have to design a comprehensive set of activities which can be conducted, supervised, and assessed by a teacher in a classroom environment. Activities are not lessons, they are a hybrid, or an in-between, of play time and a lessons.

How do we design such activities? Maria Montessori pioneered many techniques that have been adapted to teach children the subjects that they learn in school today. If we are to treat programming as a subject taught in schools on par with mathematics, science, languages, et cetera, then we would do well to adapt the same methods for this subject too!

Maria Montessori’s teaching methods

Montessori identified the following types of actions that children tend to perform:

  • Abstraction
  • Activity
  • Communication
  • Exactness
  • Exploration
  • Manipulation of the environment
  • Order
  • Orientation
  • Repetition
  • Self-Perfection
  • Work (purposeful activity)

After identifying these, she designed her classroom around activities that would utilise these natural behaviours and actions by incorporating them into her teaching methods, in the belief that by doing so, learning would happen more spontaneously and naturally. This culminated in essentially setting up each classroom lesson as a prepared environment that is designed to facilitate such spontaneous learning, and simultaneously to steer the learning toward the intended concepts.

In designing the activities, the action types listed above will be highlighted. Rather than creating a syllabus in the more traditional way - creating a table with columns for content, instruction material, and tests to verify understanding, the syllabus will be designed around activities, and how each of these activities facilitate spontaneous learning according to these action types will be first and foremost. Secondarily, each of activity will be linked back to the traditional syllabus constructs.


Learning is not an activity where the teacher imparts a chunk of knowledge to the students. It can be just that, but that would make it ineffective, more-so when the students are younger. Instead, learning could be an activity where the student is continually given feedback on how well they are learning, through recognition and rewards (not just by graded tests).

Gamification - the use of game mechanics in non-game contexts - is a natural fit in this situation. Gamification employs various techniques, such as giving students stickers, badges, or even real objects such as toys, as a reward mechanism designed to foster better class participation, and increase their motivation to learn. Great teachers have known this for a long time, way before the term “gamification” had first been coined - many of them used to give us star-stickers to paste in our notebooks, and sometimes paste them on a board at the front wall of the class (a leader board).

This creates an excellent feedback loop between teacher and student, however, it can be improved by having another party added to this feedback loop: the parents! Sites and apps such as classdojo have identified this, and made this very easy to do. This means that when a child is rewarded, he/ she is not just rewarded at school, but also at home, creating a much stronger reinforcement.

Activity Structure

For each activity, the following things should be identified, and detailed where appropriate.

  • Activity Name
  • Fundamental concepts, and building blocks linked to
    • One activity may link to one or more of these
    • At minimum each fundamental concept and building block should have an activity which teaches it in isolation
    • Syllabus should be structured such that activities which teach a combination should be taught after the ones that teach each of its constituent items in isolation
  • Related activities
    • Identify which activities are pre-requisite to this one
    • Identify which activities are easier than this one
    • These two bits of information will be useful in determining the possible ways to order the activities for teaching.
  • Activity overview
    • A brief blurb describing the activity
  • Child’s natural actions facilitated
    • List each of the types of actions, and indicate whether they are facilitated
    • For each one that is facilitated, describe where and how this is done
  • Physical objects required
    • List each of the objects that is required: e.g. boxes, wooden blocks, coloured papers, etc.
      • This includes teachers’ aids where necessary
    • For each object describe what they are used as an analogy or metaphor for: e.g. Boxes represent variables, and we use markers to write the variable names on them.
  • Prepared environment
    • Apart from the physical objects, what other things in the classroom are going to be used to facilitate learning and need to be set up prior?
    • Safety precautions: e.g. Do not use marbles if children are under a certain age, use __ instead
  • Sequence of instruction and assessment
    • Draw a flow chart for the things that will be done in the activity
    • Use different colours (or other visual cue) for nodes that are related to instruction, and for nodes that are related to assessment
    • Detail what will be done in each node of the flow chart, if necessary, in prose below the flow chart
    • Try to intersperse the instructional steps and the assessment steps in the flow chart
      • Avoid having a “test” or “quiz” at the end - the core concept is facilitating spontaneous learning!
      • A steady alternation between instruction and assessment is much better
  • Gamification
    • List each of the rewards (stickers, badges, or real objects) that the students will get for participating or doing well
    • Describe the means with which these rewards will be communicated to the child’s parents; e.g. Using classdojo

Copyright © 2008-present Brendan Graetz