Installed: 18 Jan 2011
Exploring concepts and techniques in school to do with Artificial Intelligence (AI) and cognitive science, can inspire students to explore "thinky" as opposed to "bumpy" behaviour, or the even older types of programs that produce "numbery" behaviour (performing operations on one or more numbers).
This should be part of a general 21st Century education for potential high fliers of all sorts, because it is relevant to so many important research problems (e.g. about biological evolution, the nature of mind including consciousness, how humans and other animals learn, the nature of language and linguistic communication, understanding and supporting people with various kinds of cognitive abnormality or deficiency, providing deep new theories about forms of education, understanding social and economic processes as involving the creation and processing of information, and many more.
Politicians and managers whose education has included some first-hand experience of designing, building, testing, debugging, analysing, explaining and comparing working systems, especially systems that process information of different kinds, may be able to think more deeply about policies they hope will achieve their goals, and understand much better the need for cautious experiment and much debugging.
Issue 4: Spring 2011
This is a slightly revised version of a brief report published in
"Switched on: The Computing at School Newsletter",
Winter Spring 2011 pages 4 and 5, prepared with the help of the Editor,
Queen Elizabeth School, Kirkby Lonsdale, LA6 2HJ, UK.
The whole newsletter, along with previous issues, is available in PDF format from the Computing at School (CAS) website:
The newsletter PDF file was designed for printing with facing pages. To allow items split across two pages to be read more easily a 2-up version is available here:
Issue 4: Spring 2011
A growing number also know that developing programming languages, algorithms, and software tools and applications can be enormous fun, and intellectually challenging. Those are all good reasons for expanding teaching of programming at all educational levels.
An even smaller subset of the population knows that there are deep and interesting theoretical and practical research questions associated with the science of computation that link up with problems in mathematics, physics, materials science, electronic engineering, and energy uses and costs.
However, not everyone knows there is another profoundly important aspect of computing that is not well understood: in addition to matter and energy, the universe includes information.
Not all information processing systems use bit patterns implemented in transistors. Long before humans developed information-processing machines, biological evolution was developing natural information processing systems, in enormously varied and powerful ways, most of which we do not yet understand. Micro-organisms process immediately available information in controlling their behaviour. More complex animals (and plants) have more varied ways of acquiring and using information to select options e.g. about which way to move, what to eat, how to avoid being eaten etc.
Some animals use information collected and transformed over a period of time and stored for future use, e.g. where things are, which actions have which consequences, what things are unpleasant to eat, and how other animals behave.
Some even use information about their own information processing and help their offspring to do the same.
Understanding such things is of great importance in philosophy, psychology, neuroscience, education, social science, linguistics, biology, and many other fields.
We still have much to learn about how the competences work, how they develop in individuals, how they evolved, and which species have which competences. The research, and the teaching, are both hard to do well, but not impossible!
We don't do this as well as we should. We need to educate far more people so that they can think about the workings of information-processing systems, on the basis of first-hand practical experience of designing, building, testing, debugging and explaining (initially simple) examples. Unfortunately this topic tends to be ignored by people discussing reform of computing education in schools, or producing educational tools and web sites.
A notable exception is the 'CS4FN' web site, which includes many pointers to scientific applications of computing (and not just packages for analysing measurements collected by scientists). SeeOur understanding is enriched by trying to model processes, often best done with programming languages and tools specially developed for the purpose. AI languages, (such as Lisp, Pop-11 and Prolog -- among others) help us produce systems that, in addition to their visible behaviours also have 'thinky' abilities: they can perceive, learn, reason, formulate questions, generate desires & feelings, make plans, build theories, and communicate.
Another exception is the AITopics web site developed by AAAI the Association for the Advancement of Artificial Intelligence:
It even has a section on the relevance of AI and Philosophy to each other:
Also relevant is this web site by Steve Burbeck, a software systems engineer who has been thinking deeply about information processing systems in biology and what we can learn from them.
Instead of always teaching programming because of its practical applications, we can also teach some learners to use computing ideas and programming experiments to illuminate other disciplines including modelling natural phenomena. For example, many learners like creating programs that manipulate fragments of natural language, initially in textual form and initially in very simple ways (as in "toy" chatbots or poem generators), then gradually adding deeper models of uses of language to talk about something.
The enjoyment and learning that comes from getting a machine to manipulate language does not depend on producing a perfect conversationalist or poet. Analysing and reducing the imperfections of a flawed program can provide deeper learning than simply producing a bug-free program.
There are now powerful tools enabling learners to program simulated agents moving around in a simulated world where they sense other things in the world and react accordingly, e.g. by producing simulated physical changes in their behaviour.
A quite different sort of task is to develop simulated agents that acquire store, use, share, and later modify information obtained from the environment. Examples of varying sophistication, using an AI language are available at http://www.cs.bham.ac.uk/research/projects/poplog/examples/#contents
A simplified version of his model, implemented in Pop-11 at Sussex
is shown in this online video (GBLOCKS):
Students can be given the package used and invited to modify the grammar, and/or the lexicon, to allow more varied forms of interaction, or to enrich the initial environment.
Some snapshots of the program running are below.
Snapshot 1: A simulated robot hand above a table on which there are six blocks, of two sizes and three colours.
The `help' command gives instructions, as shown.
Snapshot 2: Analysing the question
The parse tree for "is the small red block on a blue one" is shown both as a textual representation of a list-structure (list of lists of lists...), on the left, and also as a picture.
Snapshot 3: From the parse tree to a "semantic interpretation"
It works out out which entities in the known world (represented as a simple database of facts) might be referred to in the sentence, then answers the question if it is unambiguous:
It interprets the question "is the small red block on a blue one" as being about what is in the set of blocks that are on blue blocks, and decides that the block known as SmallRed is a member of the set of blocks that are on blue blocks.
Snapshot 4: The result of parsing "Put the big green block on the little red one".
From the parse tree it derives an interpretation of the sentence as a command to achieve a new state of the world: the goal state, then finds a plan to achieve the state, by moving blocks around.
This requires understanding the difference between a question, requiring as response a verbal answer, and a command requiring as response an action to rearrange the world.
Snapshot 5: The result of carrying out the plan to achieve the goal.
For examples of a 'thinky' simulated sheepdog which herds 'thinky' simulated sheep, and other examples of student projects, see http://www.cs.bham.ac.uk/research/projects/poplog/figs/simagent
For an example of a mini-project involving giving arithmetical competence to a computer that does not know about numbers but can manipulate lists of symbols see http://www.cs.bham.ac.uk/research/projects/poplog/teach/teachnums
TO BE EXTENDED -- WITH MORE EXAMPLES
How can a machine see a figure as ambiguous?
How would machines that can see these two ambiguities differ?
How would you describe the differences in each case?
What differences in descriptive competences would machines able to experience the ambiguities need?
At what age could a child experience the ambiguities?
Can any other animals do so?
Why should biological evolution produce brains with these capabilities?
There are more examples of "thinky" programming here:
A tiny sample of relevant links (to be extended): http://sodarace.net/ http://www.cs.bham.ac.uk/research/projects/cogaff/talks/#talk78 Computing: The Science of Nearly Everything http://empslocal.ex.ac.uk/people/staff/itm/ University of Exeter Web site: "Inside the Machine"
School of Computer Science
The University of Birmingham
Updated: 8 Feb 2011