Making Semantic Waves with Robots

09 Mar

Semantic Waves has emerged as an explicit pedagogical approach in Computer Science Education. For example The National Centre For Computing Education in the UK has released a Pedagogy Quick Read on Semantic Waves. In this blog post I would like to look at how I have been using semantic waves in my robotics classes. Semantic waves track the relative abstraction and complexity of ideas within a lesson. Much of educational practice is geared towards helping students understand relatively complex, abstract ideas in terms they can understand: making it simpler and putting it in context. We also need to help students take their understandings and express them in ways which are more complex and abstract, more academic. When students are trying to code robots to perform particular tasks they need to be able to move between the abstract and complex and the simple and concrete. Making this process explicit can help students understand what they need to do, and helps teachers understand what to do to scaffold students’ understandings.

Semantics is a dimension within Legitimation Code Theory (Maton, 2014), and looks at the relative level of contextulaization (semantic gravity) and condensation (semantic density) of knowledge. Knowledge can be viewed as either highly de-contextualized and abstract (Weak Semantic Gravity SG-) or as strongly contextulaized and concrete (Strong Semantic Gravity SG+). It can also be seen as highly complex, with meaning heavily condensed (Strong Semantic Density SD+) or as simple (Weak Semantic Density SD-). By tracking this movement between abstract and complex (SG- SD+) and concrete and simple (SG+ SD-) we can see how meaning is changing over time within a classroom. This can help teachers see when they need to help students either strengthen or weaken their semantic gravity or density.

Commonly meaning either remains at a fairly abstract/complex level – the high semantic flatline (A), or tends to remain at a low semantic flatline (B). What we  want to see  is  a much wider semantic range,with movement up and down the  semantic axis (C).The ability to link  theory and practice is what is being aimed at.

When choosing which platform to use for teaching robotics, there were a number of considerations. The financial cost of introducing robotics into our grade 8 and 9 year groups was one consideration, but the decision to plump for physical computing was partly driven by the need to strengthen and weaken semantic gravity. Computing is often seen by students as being highly abstract and complex. Particularly they struggle with transferring programming solutions from one context to another, in other words, they struggle with applying programming concepts to different contexts, or the weakening of semantic gravity. This presupposes the ability to understand those programming concepts, requiring the strengthening of semantic gravity. The decision to frame coding within a robotics context was taken because we felt it would help strengthen semantic gravity and increase semantic range by allowing students to “see” the results of their code in more tangible ways. We felt it would help if students could test their code in a very practical way and that it would help them understand programming principles better if they could see the results of their coding.

We decided to use the BBC micro:bit chip as a platform for robotics because it has a huge amount of resources available and an online programming platform using both text-based and block-based coding, giving us options for strengthening and weakening semantic gravity and density. The online coding platform allows students to use block-based, or text-based coding simply by toggling between Blocks and JavaScript. It also has a visualizer which displays the results of the program on the chip. The program below rolls a six-sided die. Students can test the program online by clicking Button A on the visualizer. They can then download the program onto the actual chip and test it.

In terms of robotics, students program the chip, which can then be inserted into a robot to drive it.

An AlphaBot2 with a BBC micro:bit chip


In designing the syllabus for robotics in grade 8 & 9 we were also concerned with creating opportunities to strengthen and weaken semantic gravity and density. In the semantic profiles shown above, semantic gravity and density were tracked in unison (between abstract/complex and concrete/simple). But Legitimation Code Theory offers a more nuanced picture of semantics. If we set out the axes of semantic gravity and density on a cartesian plane, as shown in the diagram, each quadrant represents a semantic code, as follows:

The Rhizomatic Code: Meaning here is abstract (SG-) and complex (SD+). This is the world of abstract, complex theorizing. In many ways this is where students need to operate when coding a more complex program. They need to be able to decide which variables or functions to use in their code, whether to use “for loops” or nested loops. Decisions are largely abstract and complex.

The Rarefied Code: Meaning is abstract (SG-), but simple (SD-). This quadrant is where the concepts used may be fairly abstract, but are simple. So, for example a single variable is used, rather than a variable inside a function call.

The Prosaic Code: Meaning is concrete (SG+) and simple (SD-). In terms of programming, instructions may be straight-forward and operational, such as move forward 5 seconds.

The Worldly Code: Here meaning is concrete (SG+) but complex (SD+). In other words, although practical, tasks are complex. A great deal of professional programming takes place at this level.

By the way, the word code here refers to the rules which legitimate practice rather than to computer programming. In a rhizomatic code, theory is valued, and practice is not. In a Worldly code, on the other hand, practice is valued above theory.

What becomes apparent from this is that teachers need to lead students on journeys between these codes to help make programming accessible. In other words semantic waves need to be created so that abstract and complex problems can be broken down into do-able, more concrete or simple tasks, and then reassembled into larger projects. To manage this a series of tasks were created, designed to introduce several programming concepts such as loops, variables or functions. Tasks were also organised in complexity. A basic pattern was to have a concrete, simple task (prosaic code), followed by introducing an abstraction (eg. a loop), but keeping the task simple (rarefied code), then introducing more complexity (worldly code) such as setting distance or speed though a variable. Concluding tasks would put together more than one principle, together with complexity (rhizomatic code).

Here are some examples of each code in the unit on robotics. Each of these solutions makes the robot move in a square. All of these solutions are technically correct if we see the problem as making a  robot move in a square,  but some solutions are more concise (condensed) or applicable across multiple contexts (decontextualized).


Rarefied Code

Rhizomatic Code

Prosaic Code

Worldly Code

Whereas in the Prosaic code quadrant, the task has been completed using forward and turn moves alone, abstraction has been introduced in the rarefied code by controlling the distance travelled by using variables for distance and speed. This allows a change in the values assigned to the variables to alter the size of the square – re-contextulaizing the problem. In the worldly code, we have condensed the movements within a repeat loop. Semantic density has been increased. In the rhizomatic code, a function has been created using the repeat loop (increased condensation) and variables (increased abstraction). Semantic Density has been strengthened, and Semantic Gravity weakened.

Students had been introduced to the use of loops, variables and functions in earlier tasks, but were given the prosaic code shown in the table above as a starter code, and asked to adjust speed and time to make the robot move in a square formation by testing it on the robots, further strengthening semantic gravity. They were then asked to try to use a loop, a variable, and a function to improve on the code. What became evident in the tasks submitted was that some students were able to incorporate variables or loops, and a few were able to incorporate functions, but only a minority could accomplish all three. Some students got stuck at various points in the prosaic, rarefied or worldly code. In a busy and productive classroom, students were encouraged to ask for help, and a “Live Code” session was held demonstrating the use of variables, loops and functions together to make a different shape.

What was plain to me was the need to find pedagogical approaches to help strengthen Semantic Density or weaken Semantic Gravity in a more deliberate fashion. Reading code and tracing through it to see what it does, testing it out, really helps to strengthen Semantic Gravity, but complexifying and abstracting out is far trickier to achieve. Live Code, in which the teacher models solutions and thought processes takes some of the class all the way, but leaves some behind. Mopping up the rest, one-on-one is a bit hit and miss with a large class.


Maton, K. (2014). Knowledge and Knowers: Towards a realist sociology of education. London, UK: Routledge/Taylor & Francis Group.


One response to “Making Semantic Waves with Robots

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: