Blog series – Learning to Learn (to program), by Paul Curzon @cs4fn – Tip 9: #SemanticWaves

Learning to Learn (to program): Tip 9

Semantic waves

Part of the Learning to Learn series by Paul Curzon, Queen Mary University of London

We all learn naturally but some ways of learning are more effective than others. Whether it is a skill or knowledge you want to learn there are good ways and bad ways. This series of blog posts is about how to learn quickly and effectively.

TIP 9 : Follow semantic waves

SemanticWave.jpgProgramming is a very technical subject with lots of jargon to learn with precise technical meaning. To master the subject you have to both master the terminology and gain a deep and precise understanding of the concepts. If explanations and activities just use more jargon to explain, building complex concepts on top of complex concepts then it is very hard to learn. The secret to providing good learning experiences is to make your explanations and learning activities follow a semantic wave structure (Maton, 2013). This involves introducing terminology or concepts but then using everyday language to explain their meaning (not just more jargon) and also using everyday contexts that students have already mastered and are familiar with. This is why metaphors, analogies and unplugged computing are powerful ways to teach (if used well). You must also however then actively help students link those everyday meanings introduced directly back to the technical concepts and language if students are going to really understand the technical meanings.

If you explain variables using boxes (with integrated shredder and copier) for example, then don’t leave them thinking it is just about boxes by only talking about moving values between boxes. You must link it back, moving the values while following a program fragment and linking to the terminology and processes in memory as the program executes: showing how the boxes are the memory spaces allocated for the variable, how the things in the boxes are data (eg numbers), and so on. Repack the meanings further by having students then work on a program fragment themselves moving data around boxes to execute it, and then creating a trace table to trace the same program. Repack the meanings further still by then writing/running programs using print statements to show the values of variables as it executes each line …

As you introduce the idea of a variables and assignment you are at the top of the semantic wave (talking about technical words with complex and precise meanings. As you introduce the idea that they are “like boxes …” you are descending the semantic wave. and dropping further as you illustrate this by putting values on paper into a box with a name on it. By demonstrating step by step a sequence of assignments by putting values in boxes you are starting to repack the meanings (climbing back up the semantic wave), linking everyday boxes back to the technical meanings of the words. Each subsequent step of trace tables and writing/running programs that print the values you are taking further steps back up the wave so that now the students can connect the technical concepts and processes of the program to the ideas about boxes that they understand.

Common teaching mistakes

There are some common teaching patterns that have poor semantic profiles and so lead to poor explanations and make it harder for students to learn. The theories behind semantic waves give us insight in to why these do not work well

Flatlining: The first is to flatline( or only follow very shallow semantic waves). This is where you stay at one level of abstraction. You can flatline high or flatline low on the semantic profile. Neither help learners.

Flatlining High: Your explanations may be completely in technical language talking about concepts abstractly. This is what experts do when talking together. They do not unpack the meanings at all, as they can assume the other has mastery of the language and concepts. All experts know deeply and precisely what it all means. Many wikipedia articles and stackoverflow posts have this kind of flavour.


“The while construct consists of a block of code and a condition/expression. The condition/expression is evaluated, and if the condition/expression is true, the code within the block is executed. This repeats until the condition/expression becomes false.” -Wikipedia.

You need to understand a lot of technical language and other programming concepts like block of code, condition, expression, evaluation, execution, true, false… to know what this means and so understand what a while loop is. It isn’t (at least at this point in the article) using everyday language or concrete examples. When you finally have mastery of the subject you should understand and be able to write like this, but on its own it isn’t helpful to a novice trying to get to that point. They may struggle to understand any of it.

Flatlining Low: You can also flatline low, by just sticking to everyday examples and language, never making the links to the concepts you are trying to explain. For example, if you just talk about recipes in a lesson that is supposed to be about algorithms and never explain the links to the technical concept of an algorithm (or where the simile falls short) then you are flatlining along the bottom of the semantic profile.


This time the students may understand absolutely everything you say (they know about recipes after all), but never actually understand anything new. In particular, it leads to no new understanding about the technical concept of an algorithm, no idea about in what ways recipes are like algorithms, or how they are not. To do that you have to drop down and then back up the semantic wave linking recipes to algorithms in an appropriate way, unpacking and repacking the links.

Down Escalator: Another common problem is to structure an explanation or lesson so that it takes students down the semantic wave, but not back up. A link is made to a technical concept but the explanation does never repacks the ideas. It doesn’t link the individual ideas back to show how they relate to the meaning of the thing being explained. You move on to the next concept before anyone has made sense of how the everyday things explain the first technical one.


For example, you might start a lesson, by saying that today you will learn about algorithms (at the top of a semantic wave). You then go through an activity about making jam sandwiches, following instructions, probably leading to chaos. This has dropped down a semantic wave as this is now about everyday experience. The lesson then moves on to the next topic, what a program is perhaps. There has been no repacking of the first concept. We have just jumped back to the top to start a new concept, at the top of a new semantic curve.

Another example, often seen in novice student writing, is to give a definition, of an assignment statement say (high on the semantic wave) then give a piece of code as a concrete example (descending the semantic wave) but then not actually explain how the example illustrates the concept (no ascending back up the wave).

eg A student might write:

An assignment statement is a command that stores data in to a storage space called a variable. For example

x = y + 3;

Compare this answer with the fuller answer below which repacks so is a better explanation

An assignment statement is a command that stores data in to a storage space called a variable. For example

x = y + 3;

This is an assignment that stores a new value (the data) in to a variable x (on the left hand side of the assignment. The new value is the result of evaluating the right hand side (y + 3). Suppose y holds 5 then it evaluates 5 + 3 to get 8 and 8 is the new value stored in x.

The last part ascends the semantic wave, linking the elements of the example back to the concept, repacking by explaining how it is an example of the technical term ‘an assignment statement’.

If you are a:

  • student
    • Practice writing your own explanations following a semantic wave structure. It will help you understand.
    • Make sure you think about how everyday explanations you are given relink back to the technical terms and concepts.
    • Similarly, work on lots of examples (whether set them or not) and actively think about how they illustrate how
  • teacher:
    • Make sure your explanations follow a semantic wave in structure
    • Plan learning activities to also follow this structure
    • Make sure you do not flatline – working completely in technical language or completely with everyday versions, never linking to the abstract concepts and terminology
    • Make sure you do not leave students in the trough – leaving them with the examples without making them repack the ideas to see exactly how they relate to the technical words and concepts.

For more about semantic waves see: the legitimation code theory webpages

Note: I am just aiming to popularise this wonderful theory here. See the above webpages for all the academic literature about it, its origins and research on its effectiveness spanning many disciplines, none of which I was involved in. The ideas of Semantic waves were created and developed by Karl Maton:

K. Maton. 2013. Making semantic waves: a key to cumulative knowledge-building. Linguistics and Education 24, 8-22 (2013).

We gave a talk on semantic waves in computing at the Cambridge Computing Education Research Symposium, April 2020. Watch the talk here: Semantic waves: analysing the effectiveness of computing activities, Curzon, P, Maton,K and Waite, J

Read our detailed answers to the questions asked after the talk here


Blog series
There will be 9 blog posts in this series, a new one will be posted every week day, but you can read the full set here: Learning to Learn series by Paul Curzon, Queen Mary University of London.


The logo for the Tech Pathways London project