*How To Solve It*, 2nd ed., G. Polya. (1957)

A classic book on how to solve mathematics (and other) problems. The techniques can be generalized to all kinds of problems, including computer science problems. Some problem solving techniques discussed include: analogy, checking your result, generalization, symmetry, working backwards. A must read for anyone serious about solving problems.

*The Cartoon Guide to Computers*, Larry Gonick. (reprinted from a book called*The Cartoon Guide to Computer Science*, 1983)

An irreverent, but useful guide to the fundamentals of computing. From counting on fingers to vacuum tubes to the modern digital computer, this book talks about the concepts that form the basis of computers. Topics include: hardware, Turing machines, algorithms. It's a little dated now, but the discussion on hardware is pretty good.

*Godel, Escher, Bach: An Eternal Golden Braid*, Douglas Hofstadter. (1999, not sure what edition it is, but it's the 20th anniversary edition (first edition was 1979))

It's hard to give any kind of a description of an amazingly deep book such as GEB. Hofstadter discusses a wide collection of topics related to philosophy, metaphysics, computers, and the mind. The subtitle of the book is "A Metaphorical Fugue on Minds and Machines in the Spirit of Lewis Carroll." Hofstadter uses "normal" prose to explain his ideas, but his innovation is the use of dialogs between the ficticious characters of Lewis Carroll's*Alice in Wonderland*(and other characters as well).

Anyone interested in the mind or the limits of computers, or just curious about what the universe is all about should read this book.

*Engines of Logic: Mathematicians and the Origin of the Computer*, Martin Davis. (2001, originally called*The Universal Computer: The Road from Leibniz to Turing,*published in 2000)

A discussion of the mathematical and theoretical ideas that led to the invention of the modern computer. Mathematical ideas in the area of logic and set theory led to interesting debates. It all culminated with Godel when he proved his completeness and incompleteness theorems. Alan Turing took those ideas and created a formal model of computation, now called the Turing machine. John von Neumann took Turing's ideas even further and created one of the first working electronic computers.

Davis, a fixture in the theory of computing, complements the mathematical ideas with details about the mathematicians' lives. He also knew several of the people that he discusses, so his book is very personal.

*Surreal Numbers*, Donald E. Knuth. (1974)

Two people are stranded on a deserted island and invent mathematics from first principles, with a few hints from some relics left behind by people who had been on the island before. This is a wonderfully innovative approach to explaining things. As Knuth says:

I have prepared*Surreal Numbers*as a mathematical dialogue of the 1970's, emphasizing the nature of creative mathematical explorations. Of course, I wrote this mostly for fun, and I hope it will transmit the same pleasure to its readers, but I must admit that I also had a serious purpose in the back of my mind. Namely, I wanted to provide some material which would help to overcome one of the most serious shortcomings in our present educational system, the lack of training for research work; there is comparatively little opportunity for students to experience how new mathematics is invented, until they reach graduate school.

I decided that creativity can't be taught using a textbook, but that an "anti-text" such as this novel might be useful. I therefore tried to write the exact opposite of Landau's*Grundlagen der Mathematik*; my aim was to show how mathematics can be "taken out of the classroom and into life," and to urge the reader to try his or her own hand at exploring abstract mathematics.