Cover Images

Above is the cover image, and below, in roughly left-to-right, top-to-bottom order, are reprints of parts of the cover. You can get a really-big version of some of the images by clicking on them.

The Final Position from Game 6 of Kasparov vs. Deep Blue, 1997


Garry Kasparov, playing black, was forced to resign the decisive game 6, making this the first time a computer had beaten a world champion in a chess match. (Photo by Stan Honda/Getty Images.)

Honda Asimo Humanoid Robot

The Honda Asimo robot. (Photo by Shutterstock.)

Thomas Bayes

Thomas Bayes (1702--1761), whose ideas about probability as a measure of belief underlie much of modern AI technology. (Image from Library of Congress.)

Berkeley, California

A view from the Berkeley campus of the Campanile (Sather Tower) and the Golden Gate Bridge. Image by Ian Parker.

Mars Exploration Rover

The twin Mars Exploration Rovers, Spirit and Opportunity, are two of the most successful robots of all time. (Image courtesy of NASA.)


We make it a tradition to show a copy of the book on the cover of the book. Here is the original picture before the third edition cover was photoshopped in. (Photo by Peter Norvig. Model: Bella Norvig.)

Alan Turing (1912-1954)

Alan Turing, who described the Turing Test and did fundamental work in Artificial Intelligence and the theory of computation. (Photo from Time Life/Getty.)

Shakey the Robot (1969-1973)

Shakey with project leader Charles Rosen. (Photo from Time Life/Getty.)

Aristotle (384 BC - 322 BC) and a Planning Algorithm from his De Motu Animalium


Rough translation:

But how does it happen that thinking is sometimes accompanied by action and sometimes not, sometimes by motion, and sometimes not? It looks as if almost the same thing happens as in the case of reasoning and making inferences about unchanging objects. But in that case the end is a speculative proposition ... whereas here the conclusion which results from the two premises is an action. ... I need covering; a cloak is a covering. I need a cloak. What I need, I have to make; I need a cloak. I have to make a cloak. And the conclusion, the ``I have to make a cloak,'' is an action.

(Bust from National Museum of Rome.)

Part of the CPSC medical diagnostic expert system (1993)

Bayesian Logic model of the UN nuclear explosion detection system

type SeismicEvent ;

origin    R3Vector    EventLocation(SeismicEvent);
origin    Real        EventTime(SeismicEvent);

random    Real        EventMagnitude(SeismicEvent);
random    Boolean     EventNaturalOrigin(SeismicEvent)

type Detection ;
origin SeismicEvent Source(Detection);
origin Station      DetectedAt(Detection);

random    Real        DetectedAmplitude(Detection);
random    Real        DetectedAzimuth(Detection);
random    Real        DetectedSlowness(Detection);
random    Real        DetectedOnsetTime(Detection);

type Station;
guaranteed Station Station1, Station2, Station3, Station4;
nonrandom R2Vector    StationLocation(Station);

#SeismicEvent(EventLocation = xyz, EventTime = t) ~ EventPoissonLambda(xyz);

EventMagnitude(event) ~ GutenbergRichter(-1,Offset(EventLocation(event)));

#Detection(Source = event, DetectedAt = station)
 ~ EventDetectionDistrib(EventLocation(event), StationLocation(station),
                   EventMagnitude(event), station)

// False Alarms
#Detection(DetectedAt = station, DetectedOnsetTime = time)
 ~ FalseDetectionPoissonLambda(station)

DetectedOnsetTime(det) ~
 EventTime(Source(det)) + TravelTimeDistrib(EventLocation(Source(det)), StationLocation(DetectedAt(det)))

DetectedSlowness(det) ~
 SlownessDistrib(EventLocation(Source(det)), StationLocation(DetectedAt(det)))

DetectedAzimuth(det) ~
 AzimuthDistrib(EventLocation(Source(det)), StationLocation(DetectedAt(det)))

DetectedAmplitude(det) ~
 AmplitudeDecayDistrib(EventLocation(Source(det)), StationLocation(DetectedAt(det)),

//  observations :

guaranteed Detection det1, det2, ..., det138

obs DetectedTime(det1) = ..
obs DetectedSlowness(det1) = ..
obs DetectedAzimuth(det1) = ..
obs DetectedAmplitude(det1) = ..
obs DetectedTime(det2) = ..
obs DetectedAmplitude(det138) = ..