Artificial Intelligence – is coding like teaching? It depends…


In a former life I was a software developer. I designed algorithms and wrote computer code for a living. I had to learn to use the language that was most appropriate to tell the computer how to do the task I wanted it to do. I had to think like a computer, even when the solution might seem counter-intuitive. I had to be creative, and literal, for the computer does not know what you are trying to make it do. I had to ensure that information was stored correctly in the computer’s memory, and that it could be accessed when needed. I had to be careful to ensure that any problems the computer encountered while processing my code, were handled in the most appropriate way. I had to correctly link to functions that other developers had written to achieve the outcome I wanted from my program.

This morning I posed myself a question:

What makes programming a computer and teaching a child different?

I realise the answer can be simply reduced to the words: many things. I’m really not suggesting that programming a computer and teaching a child are the same, however the paragraph above has so many analogies bursting out of it, that I felt that comparing the two disciplines might be a useful angle to follow as I develop my teaching.

Analogy 1. Code Dependencies

On Saturday 18th January, I attended Laura McInerney’s Touchpaper party at the Institute of Education. Michael Slavinsky led the group discussing problem 4 which asked the question: What determines the complexity of a concept?

Knowing I would be joining this group, my initial thoughts were added to the post above as the following comment:

I think an appropriate way to establish how complex a concept is would be to analyse the network of dependencies the concept has. The more dependencies, the more complex the concept is as it relies on a greater number of previous concepts.

We must be careful not to conflate complexity with complication (i.e difficulty in understanding). They are different things: A student might find a simple concept complicated (difficult) where as his peer finds a more complex concept uncomplicated (easy). I expect how complicated a student finds a complex concept will likely depend on how clear their understanding is of the dependencies.

A dependency in computing helps describe how different parts of a computer program are related and how the different parts of code should be processed by the computer and when. It is important for a programmer to understand the dependencies in order to effectively achieve their goal, but it is also vital for a computer to be able to process these dependencies effectively if it is to carry out the instructions given in an effective and productive way. There is clearly a link to this and the way we teach concepts to children. We scaffold, we build on prior knowledge, we link ideas. So our Touchpaper group concentrated on the idea that it might be possible to define a concept’s complexity in a similar manner. We also explored whether this may also help teachers develop their understanding of the order that topics should be taught (Michael has written about this in his reflection already.)

Here is a very simplistic first draft of the idea that I shared on the day, a basic concept map looking at Newton’s 3 Laws of motion.

Newton's 3 Laws of Motion

Not only are these concepts connected but they are also connected in different ways.

  • Linguistic dependencies – concepts might be described in different ways.
  • Numeric dependencies –  concepts that rely on a mathematical relationship.
  • Intuitive dependencies – concepts that have a link that might be counter-intuitive (or vice-versa blindingly obvious).
  • Multiple theories – concepts that are described by different competing theories, both valid or invalid.
  • Logical dependencies – concepts that require a logical step.
  • Domain dependencies – concepts that are taught in another subject perhaps (e.g.  Biology and P.E.).
  • etc

It seemed plausible to us that these links can be analysed and processed in such a way as for a teacher to be able to arrive at a value that describes how complex the topic is and to be able to use the map to help them plan an effective scheme of learning that will cause the concept to be less complicated for students to learn (and teachers to teach).

We are still working on much of the detail in the group and will have more to share in the coming months. But I wanted to blog the initial thoughts and hope to read some insightful (or indeed inciteful) comments and suggestions.

Other analogies

My intention is to use this idea of the computer coding model to explore other areas of my teaching and I will explore these in future posts including:

  • memory
  • logic
  • scope of variables
  • language of instruction