The Computational Metaphor of Mind • The Computational Metaphor: What Good is a Metaphor? • The Immediate Consequences of the Computational Metaphor: Levels of Description and Functionalism • Reexamining Classical Philosophical Problems • What is a “computer”, anyway? • What does it mean for a computational problem to be "hard"? • AI and Cognitive Science • The Turing test and Its Discontents Levels of description (for—say—a chess program) • Rough guidelines for playing chess (e.g., "protect the king", "hold the center", "don't let pawns become too scattered") • Higher-level program structure. (Do we have a program based on collections of local "experts"? What kind of search mechanism do we use?) • Program (written in, e.g., Lisp/Pascal; here, the details of the algorithm are specified: how do we represent the game board? What numerical measure do we use to determine, say, the worth of a given piece, or the "goodness" of a particular game configuration?). • Assembly code/Machine code • Code is translated into signals that cause input and output to collections of logical gates (packaged into "chips" in the computer) • Logical gates are implemented in terms of transistors, resistors, and similar "primitive" electronic elements • Transistors, resistors, etc. are implemented in "junctions" between two different material substances. Some points to think about First: there is no one "correct" level of description for something like our chess program. The chess player thinks of the program in terms of goals and rules-of-thumb; the Lisp programmer thinks of it in terms of search strategies and data structures (such as the representation of the pieces or game board); the hardware designer thinks of it in terms of digital logic elements. It would be mistaken to think of (say) the transistor level as the "true" level of the program; rather, each level conveys important information that the others suppress. Second: there is a certain deceptive quality to this hierarchy. Some levels "map" easily into the next lower level, as by translation. Some levels, though, are matters of interpretation. Third: this hierarchy is engineered. It is deliberate. We want to preserve this hierarchy of languages. There is no guarantee that nonengineered systems have the same properties. Re-Examining Some Classical Philosophical Problems • The Mind-Body Problem and Functionalism • “Knowing-as-Remembering” (the Meno) • Rationalism vs. Empiricism The Turing Machine: An Abstract Model for General Computation What does it mean for a problem to be "hard"? (the view from computer science) • Some problems may not have a solution, or may simply be illdefined. Examples: Write a computer program that will pass the Turing test. (Turing) Define (and/or teach) virtue. (Plato) • Some problems may be simply impossible given the resources. (Unlike the first class of problems, we at least know that these are both well-defined and unsolvable.) Example: Using a straightedge and compass, and given an angle theta, construct an angle of magnitude theta/3. Write a program which, given any computer program P and number N as input, determines whether P will ever halt when run on input N. (Turing) • Some problems may be impossible to solve with complete accuracy, but they can be approached by using approximations, guesswork, or heuristics. What this means is that perhaps all the "solutions" will be wrong (and we try to make most of the solutions as "right" as possible); or it might mean that some solutions, but not all, will be right. Examples: Given a two-dimensional scene projected on a retina or camera plane, deduce the three-dimensional scene (set of objects) that produced this two-dimensional projection. Given a finite set of sentences, determine the formal structure of a context-free grammar that generated those sentences. • Some problems may be defined in such a way that they can only (or best) be approached by techniques that incorporate some notion of uncertainty, probability, or vagueness: Examples: Was there life on Mars at some past time? If I have to place a bet on a future event (e.g., whether the Phillies will win the pennant), how should I bet? Is this object (person, animal) a threat? Is this shape: 0 an ellipse? Is it "close" to an ellipse? • Some problems may be completely solvable in principle; we could even write an algorithm to solve them. But this algorithm would take so long to run (or equivalently would require so much space) in most "standard" cases that we are forced to use more approximate (and hence unsure) means to approach the problem. Given a configuration of a chess board, find the best move for the player whose turn it is. Given a map of the U.S., and 100 cities (including Boulder), find the shortest "complete tour" of the cities, beginning and ending in Boulder, and visiting each of the other cities exactly once. • Some problems—fortunately—are "easy" in the sense that we can write a program to solve them, and the program will typically run in a reasonable time. Given a positive number, find its square root. Given a context-free grammar G, produce a sentence using that grammar. Given 100 linear equations in 100 variables, determine whether those equations have a solution, and if so, what it is.