John McCarthy, one of the Founders of AI,
who coined the name "Artificial Intelligence",
died in October 2011, aged 84.
For him, AI was primarily science, not engineering.
Image source http://www-formal.stanford.edu/jmc/personal.html
A personal memoir.
THIS IS NOT AN OFFICIAL DOCUMENT OF THE UNIVERSITY OF BIRMINGHAM OR THE SCHOOL OF COMPUTER SCIENCE.
NEITHER THE UNIVERSITY NOR THE SCHOOL HAS ENDORSED THE OPINIONS EXPRESSED HERE.
Programming is much more than composing collections of instructions. It includes design, implementation, testing, debugging, analysis, criticism, comparison, and extension of working programs. This broad and deep collection of competences should be included in school curricula not just because industry needs programmers, but also because many of the major SCIENTIFIC advances of future decades will depend on researchers and practitioners of many kinds including scientists, educators, philosophers and law-makers, knowing how to investigate, think about, model, and explain complex natural information-processing systems, and being able to devise useful ways of helping, repairing or supporting them when things go wrong.
In particular, there is also a need to contribute to scientific and philosophical education so that some young learners, especially future scientists, learn how construction of working programs can increase our scientific understanding of some complex natural systems, by offering models or explanations of various aspects of information processing in humans and other animals (not only individual animals but also swarms, flocks, social and economic systems). For example, learning about software virtual machines running in computers can provide new ideas about how minds might be related to brains.
We could update the ancient Greek maxim "Know thyself" to:
"Learn programming and begin to model yourself".AI research on learning, seeing, planning, controlling actions, understanding and generating natural language, modelling reasoning processes, modelling mathematical discovery, modelling creative painting or musical composition (among others) can provide new ideas about how human and animal minds work, and can inspire kinds of research on what brains do.
The CAS-AI group provides
"Thinky" programming is concerned with trying to get machines to perceive, reason, plan, develop motives and preferences, understand language, communicate in language, use diagrams for reasoning, make mathematical discoveries, develop theories, play various games, experience various feelings, and in some cases control physical behaviours on the basis of understanding the possibilities and constraints in a physical situation ... and more.
The emphasis is not on simply producing observable behaviours, as in many programming exercises, but in producing analogues to mental processes in humans and other animals. Of course some of these mental processes can lead to behaviours, including use of language, playing games, and achievement of complex goals.
AI researchers working on these topics have found it useful to develop programming languages with special support for the mechanisms required for "thinky" programming and the CAS-AI sub-group provides an introduction to such programming.
This web site emphasises Programming in Pop11, which is part of the Poplog system, (http://en.wikipedia.org/wiki/POP-11), since that is the AI language best known to the maintainer, and it includes many teaching resources, at various levels, from absolute beginner programmers upwards.
Other AI languages and AI teaching resources can be added (Please send links and accompanying text). Prolog and Common Lisp are included in the Poplog system mentioned below http://en.wikipedia.org/wiki/Poplog.
The CAS-AI email list and the resources listed below are intended to serve the goals of introducing AI as science in schools, mainly by helping teachers gain some experience of AI programming. It is hoped that teachers who are interested can then go on to contribute to development of new versions of the teaching materials suited to their own pupils, using other programming languages if appropriate.
Membership of the list is not restricted to CAS members: others who wish to join can follow instructions below (including submitting the form). However, joining CAS is highly recommended if you wish either to make a contribution to improving and broadening the quality of computing education, or to find out what others are doing about this.
A list of available tutorials, which will be reorganised when more
videos are available is
The originals, created using 'recordmydesktop' running on
linux (Fedora 15/16),
are in this directory
The .ogv originals have better quality than the YouTube versions -- and should be playable using 'VLC' and some other media players.
Some of the teaching examples that make use of the graphical facilities in Pop11, and require use of linux locally, or used remotely, or in a virtual linux, are listed below.
For a more detailed overview of Pop11 syntax see the Primer, below
Including a sample of a complete pop11 program, written as a project by
an MSc Student (Neil Massey) in 1999, with many explanatory comments.
This may be useful for CAS-AI members with a lot of programming experience.
The program plays othello with a graphical interface:
After gaining experience, some may wish to install the system
locally either on a local linux system or using VirtualBox on a Windows
PC or Mac, as described in
However, there are many programming teach files that do not require the
graphical facilities and those can be read in a plain text window, e.g.
an 'xterm' window if you are using linux and have logged in remotely, or
in a PuTTY window on MSWindows, if you have used PutTTY to log in
remotely. A list of example tutorials requiring only a plain text
interface will be added shortly.
You can download PuTTY or some alternatives, here.
For people who don't wish to access the remote Amazon VM, or do not have adequate bandwidth for remote use, can use all the tools and teaching materials locally in linux or windows, the latter with the aid of VirtualBox.
Although not strictly necessary at the beginning, people who wish to run all the examples and explore the programming environment will need to learn at least some basic unix commands. Information about the main features of Unix/Linux for novice users can be accessed below.
Please suggest additions (to A.Sloman).