Do you mean the thing or the container for the thing?

In this article I want to discuss a **key distinction** which crops up again and again throughout **Computer Science GCSE and A Level.** It is a distinction which might sound trivial or obvious, but many years of teaching have shown me that getting ultra-clear about it is **key** for students’ understanding.

I first noticed myself emphasizing this distinction repeatedly when I was teaching GCSE Maths, in particular the notorious **nᵗʰ term**. I found that if I reminded students to always be very clear about the distinction between the **“slot number” (n)** and the **value in the slot with that number**, that confusion quickly gave way to understanding.

So how does this apply to **Computer Science GCSE and A Level?**

Well, one very common and important example of where the above distinction applies is with **arrays and indices**. Or lists and indices if we are talking about Python.

## List Values and List Indices in Python

Consider the list `my_list = [1, 2, 3, 4, 5]`

What is the **value** at the `0ᵗʰ`

position?

`1`

right? (Remember in most programming languages we start counting things at `0`

.)

And what **value** is found at the **position** with index 5?

That was a trick question – the indices for the list range from `0`

to `4`

inclusive.

It’s not rocket science, but you might be surprised at what a difference continually emphasizing this key distinction between **index** and **value** can make.

Where else does this distinction crop up?

## Searching and Sorting Algorithms

This is really just a variation on the theme of array/list indices vs values. However, it is worth emphasizing that many algorithms from Computer Science GCSE and A Level become much easier to understand if we remember to always ask ourselves **value** or **index/position**?

For example this applies to:

- Linear Search
- Binary Search
- Bubble Sort
- Insertion Sort
- Merge Sort
- Etc.

## Binary and Hexadecimal

Well, consider binary numbers. We all know there are place value headings such as `16 8 4 2 1`

in binary, but my experience tells me that students’ minds are apt to jump between the heading and the values (`0`

or `1`

in this case) which are contained in the column with a particular heading. This is even more the case with **hexadecimal** where there are 16 possible values for each place value heading.

So a very important key to understanding how **binary** and **hexadecimal** work is to revisit **place value** from primary school maths and make sure we are really clear at any given time – **the value** or **the container** (the place value heading).

## Low level programming

**Little Man Computer** and similar **low-level programming languages** also become much easier when we consider the same key distinction that we have been discussing. If we always make sure students are aware whether they are referring to an **address** or **the value stored at an address** then a great deal of confusion can be avoided.

You can buy my new Little Man Computer Programming Teaching Pack for Computer Science GCSE and A Level here if you need some help delivering this topic.

Is the key distinction discussed here something you have given much thought to? Are there any other key distinctions which you find helpful in Computer Science GCSE and A Level?

Happy computing.

Robin Andrews.