School of Computer Science THE UNIVERSITY OF BIRMINGHAM CoSy project CogX project

Teaching About Architectures, Not Just Coding
(DRAFT: Liable to change)

Aaron Sloman
School of Computer Science, University of Birmingham.
(Philosopher in a Computer Science department)

Installed: 5 Dec 2011
Last updated: 5 Dec 2011
This paper is
A PDF version may be added later.

A partial index of discussion notes is in

Related presentations (mostly PDF) can be found in

Background: Betsy Masiello's Blog

On 4th December, 2011, Betsy Masiello posted some thoughts in reaction to online discussions of the importance of teaching programming in schools -- with an emphasis on "coding".

She claimed it was also important to teach young learners to think about architectures.

Some thoughts on teaching Internet architecture with the same import that we teach civics:
While agreeing with her about the importance of teaching young learners to think about architectures, I posted a comment on 5 Dec 2011 (which may or may not pass the 'moderation' process, so I repeat it below), suggesting that it's not only the architectures of artifacts, like the internet, that young learners need to think about, but also the architectures of natural information processing systems, produced by biological evolution, for example.

Comment on Betsy's blog

Dear Betsy,

I completely agree with you -- and Dave Clark and I met at a DARPA workshop in 2002 where we agreed also, having reached related conclusions independently. My PDF presentation on architectures at that event is (though some of the links to other documents are now defunct).

I go further than you because it's not just the architecture of the internet that youngsters need to learn to think about. Minds have architectures, and in the case of humans those architectures develop over time. There are different information processing architectures in different organisms and we need to understand those differences in order to understand the problems and achievements of biological evolution. My first attempt to explain all this was in my 1978 book "The computer revolution in philosophy" especially chapter 6, available on-line

Later chapters (also on-line now) develop the importance of architectures in specific contexts, e.g. a child learning about numbers, the functions of a visual system.

When teaching programming to absolute beginners, I used to introduce a toy chatbot (a simple Eliza) and emphasised the need to think about architectures from that early stage:

For more sophisticated students and researchers, my colleagues and I developed a toolkit for exploring alternative agent architectures (the SimAgent toolkit).

I don't think I have been able to persuade other teachers about the importance of this. So I was delighted to find that you had reached similar conclusions about the dangers of emphasising coding, as so many others have been doing recently. Of course coding is important -- without it one cannot develop and test an architectural idea, but it's only one of several important aspects of a computing education -- others include analysis of problems, comparison of designs, testing, evaluation and comparison of implementations of the same design, etc. And it's also important to emphasise the importance of a computing education as preparation for studying natural information processing systems, not just products of human engineering. (The influence can go in both directions.)

One of the most important points that not everyone grasps, but is essential for understanding the internet as well as minds, is the difference between layered architectures, e.g. where virtual machinery at one layer is implemented in machinery in another layer, and vertically divided architectures where coexisting components interact.

Causal routes between different parts of the architecture and an independently existing environment are also important -- that's one of the main drivers of both biological evolution and system design.

Best wishes.

Maintained by Aaron Sloman
School of Computer Science
The University of Birmingham