Symbolic Computation and AI: Introduction

AI has traditionally had two aims:

  1. To construct programs that are able to perform tasks, which when performed by humans are considered to require intelligence.
  2. To construct programs that model the way in which human intelligence works.

The problem with the first of these definitions is that it prescribes a moving target. For each time a program is written that performs an allegedly intelligent task, the reaction is to deny that the task requires intelligence. No one considers payroll programs intelligent and yet payroll clerks before computers were certainly considered intelligent. In the case of the second definition the objection is often made that the task is inherently impossible, human intelligence is not mechanizable.

In fact as we shall see both goals have met with a measure of success, much of it very early in the history of AI. It is worth listing some of these here.

  1. Samuelson's checkers program
  2. The blocks world
  3. Translation of weather forecasts from English into French
  4. Configuration of VAX computer systems
  5. HEARSAY, a ship detection system

What characterizes most successful AI applications is the restriction to a limited domain. AI has a history of hubristic claims that such and such a problem will be solved in ten years and when the ten years are up it is apparent that no real progress has been made. However if one steps back from all the hype and expects less of AI than a solution to the big problems it turns out that much has been done. For the purposes of this course I will take a narrower view of the goals of AI than either of the definitions given above.

AI is the branch of computer science that seeks to build artefacts that enhance the intelligence of the user by encoding existing expertise and by considering multiple alternatives.

This is a very conservative definition of AI. However it leaves intact most of the areas of success (and failure for that matter), while providing a basis for organizing the material. The emphasis of the course is on the construction of "intelligent agents", depending on the task these will have varying amounts of autonomy (independence).

I find it helpful to use natural language as an example of an AI application which embodies many of the aspects of AI. Consider the following dialogue

A: What is the complement of the John F. Kennedy?
B:  2500
A: The New Jersey?
B: 2200

In order to answer the first question B must know that the John F. Kennedy is a navy ship and that in this context complement refers to the crew, and thus A probably wants to know how large the crew is. To answer the second B needs to know first that it is a question and second that it is basically the same question as the first with a different subject. Thus even a short conversation requires considerable knowledge to understand.

At this point it is necessary to admit that there are tow schools of thought about how one should do AI.

  1. The symbolic computation approach
  2. The neural approach
In fact most AI researchers admit that both are really necessary. In this course I concentrate on the first. In this approach the world is modelled by symbols that are manipulated to arrive at conclusions. In the second approach networks modelled on the nervous system are used.

The basic techniques required for the symbolic approach are

As we progress through the course you will see how these are used.

Programming for AI

One can write intelligent programs in any language. Most commercial applications are written in C or C++, whereas much AI research is done in LISP or Prolog. One of the reasons for choosing the book by Russell and Norvig is that it is language independent. I have chosen to use Prolog for several reasons.
  1. I like the language. I like LISP too but the choice between them is always primarily subjective;
  2. Prolog is itself an AI application in that it embodies a specific reasoner;
  3. One can write programs that do quite impressive things in few lines.
Intellectual honesty compels me to point out that Prolog is not the best choice for implementing certain of the more procedural algorithms that we shall meet.

  • Return to UG AI home page

    Last Changed: 2 September 1995