It has been asserted, only partly in jest, that artificial intelligence is whatever we don't know how to program yet: Numerous techniques pioneered by artificial intelligence programmers have been accepted into mainstream programming practice, but none of them are today considered to have much to do with intelligence.
Sherlock Holmes used to complain on occasion that his deductions were respected only until explained; Magicians and holyfolk have known for centuries that the magic goes away as soon as the trick is revealed.
The closest thing I am aware of to an attempted encyclopedia of artificial intelligence programming techniques is the multivolume Handbook of Artificial Intelligence by Barr and Feigenbaum: HeurisTech Press 1981, ISBN 0-86576-004-7.
At the least, it provides a good overview of the scope and accomplishments of classical (lisp-based) artificial intelligence programming.
To my mind, probably the farthest advance yet along in the direction of classical artificial intelligence programming is marked by the SOAR project, which is written up in Universal Subgoaling and Chunking: The Automatic Generation and Learning of Goal Hierarchies, by Laird, Rosenbloom and Newell: Kluwer Academic Publishers 1986, ISBN 0-89838-213-0. SOAR's strengths and weaknesses serve as a good summary of the strengths and weaknesses of the classical artificial intelligence approach as a whole, at least based on experience to date.
A persistent problem of classical artificial intelligence appears to me to be that it works predominantly with complex structures which are boolean in the sense that they occupy a discrete space of possibilities, rather than a continuum, making it very difficult to apply simple learning algorithms based on hill-climbing: varying tunable parameters bit by bit and converging slowly towards the goal. Neural nets, by contrast, consist of almost nothing but continuously tunable parameters, making learning much simpler: This may explain what I percieve to be a certain tiredness with the classical artificial intelligence paradigm, and a resurgence of interest in neural nets.
The flip side of that is that it is much less clear how one expresses complex and abstract ideas in neural net form: I expect we'll see a return to more classical approaches in due course, probably armed with new insights gained from the neural net paradigm. Playing two paradigms off against each other rarely fails to enrich both.
The accepted classic introduction to classical artificial intelligence programming techniques is:
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp, by Peter Norvig. Morgan Kaufman 1992, ISBN 1-55860-191-0
A thousand pages of practical introduction to Lisp programming techniques and algorithms. These days, they look more like just sensible, useful programming than anything to do with intelligence, but that's the way it goes...
I borrowed this book some time ago, and it has been sitting by my elbow ever since, getting alternately skimmed, read and consulted. Best of breed.
Code in the book is available via ftp from unix.sri.com:/pub/norvig.
One more book simply must be mentioned:
Vision: A Computational Investigation into the Human Representation and Processing of Visual Information, by David Marr: W H Freeman and Company 1982, ISBN 0-7167-1284-9.
Artificial intelligence has never suffered from an excess of promising ideas and people, so it is especially tragic that David died at the age of thirty-five, just as he began to hit his stride: This book was published posthumously. (The preface comments that "In December 1977, certain events occurred that forced me to write this book a few years earlier than I had planned..."; The preface is dated "Summer 1979"; He died in 1980.) This is an original and enjoyable book on the very difficult problem of artificial vision, which has had a lasting effect on the field.
(Recent progress has hinged on the re-integration of visual processing steps which David isolates: The process of analysis followed by resynthesis is old and fruitful.)
Go to the first, previous, next, last section, table of contents.