diff options
author | elioat <elioat@tilde.institute> | 2023-08-23 07:52:19 -0400 |
---|---|---|
committer | elioat <elioat@tilde.institute> | 2023-08-23 07:52:19 -0400 |
commit | 562a9a52d599d9a05f871404050968a5fd282640 (patch) | |
tree | 7d3305c1252c043bfe246ccc7deff0056aa6b5ab /js/games/nluqo.github.io/~bh/v3ch7/biblio.html | |
parent | 5d012c6c011a9dedf7d0a098e456206244eb5a0f (diff) | |
download | tour-562a9a52d599d9a05f871404050968a5fd282640.tar.gz |
*
Diffstat (limited to 'js/games/nluqo.github.io/~bh/v3ch7/biblio.html')
-rw-r--r-- | js/games/nluqo.github.io/~bh/v3ch7/biblio.html | 341 |
1 files changed, 341 insertions, 0 deletions
diff --git a/js/games/nluqo.github.io/~bh/v3ch7/biblio.html b/js/games/nluqo.github.io/~bh/v3ch7/biblio.html new file mode 100644 index 0000000..190fe18 --- /dev/null +++ b/js/games/nluqo.github.io/~bh/v3ch7/biblio.html @@ -0,0 +1,341 @@ +<HTML> +<HEAD> +<TITLE>Computer Science Logo Style vol 3: Bibliography</TITLE> +</HEAD> +<BODY> +<CITE>Computer Science Logo Style</CITE> volume 3: +<CITE>Beyond Programming</CITE> 2/e Copyright (C) 1997 MIT +<H1>Bibliography</H1> + +<TABLE width="100%"><TR><TD> +<IMG SRC="../csls3.jpg" ALT="cover photo"> +<TD><TABLE> +<TR><TD align="right"><CITE><A HREF="http://www.cs.berkeley.edu/~bh/">Brian +Harvey</A><BR>University of California, Berkeley</CITE> +<TR><TD align="right"><BR> +<TR><TD align="right"><A HREF="../pdf/v3ch07.pdf">Download PDF version</A> +<TR><TD align="right"><A HREF="../v3-toc2.html">Back to Table of Contents</A> +<TR><TD align="right"><A HREF="../v3ch6/v3ch6.html"><STRONG>BACK</STRONG></A> +chapter thread <A HREF="permissions.html"><STRONG>NEXT</STRONG></A> +<TR><TD align="right"><A HREF="https://mitpress.mit.edu/books/computer-science-logo-style-second-edition-volume-3">MIT +Press web page for <CITE>Computer Science Logo Style</CITE></A> +</TABLE></TABLE> + +<HR> + + +<P>This book is a little like the previews of coming attractions at the movies; +it's meant to whet your appetite in several directions, without giving you +the complete story about anything. To find out more, you'll have to consult +more specialized books on each topic. + +<P>There are a lot of books on computer programming and computer science, +and whichever I chose to list here would be out of date by the time +you read this. Instead of trying to give current references in every +area, in this edition I'm listing only the few most important and +timeless books, plus an indication of the sources I used for each +chapter. + +<P>Computer science is a fast-changing field; if you want to know what the +current hot issues are, you have to read the journals. The way to start is +to join the Association for Computing Machinery, 1515 Broadway, New +York, NY 10036. If you are a full-time student you are eligible for a +special rate for dues, which as I write this is 25 per year. (But you +should write for a membership application with the current rates.) The +Association publishes about 20 monthly or quarterly periodicals, plus the +newsletters of about 40 Special Interest Groups in particular fields. + +<P><H2>Read These!</H2> + +<P> +If you read no other books about computer science, you must read these two. +One is an introductory text for college computer science students; the other +is intended for a nonspecialist audience. + +<P>Abelson, Harold, and Gerald Jay Sussman with +Julie Sussman, +<EM>Structure and Interpretation of Computer Programs,</EM> MIT Press, +Second Edition, 1996. + +<P><BLOCKQUOTE> +The introductory computer science text at MIT, this book uses Lisp as the +vehicle for an intense study of everything from data structures to machine +architecture. Although it's not a book about artificial intelligence as +such, this is the definitive presentation of the artificial intelligence +view of what computer science in general is about, and the best computer +science book ever written. + +<P></BLOCKQUOTE> + +<P>Hofstadter, Douglas R., <EM>Godel, Escher, Bach: an Eternal +Golden Braid,</EM> Basic Books, 1979. + +<P><BLOCKQUOTE> +This book won the Pulitzer Prize for its success in explaining to readers +who aren't computer scientists some of the deepest ideas of computer +science, and it makes a strong case for the view that those ideas also have +a lot to teach us about human intelligence. + +<P></BLOCKQUOTE> + +<P><H2>Chapter 1: Automata Theory</H2> + +<P>The reference I used in thinking about this chapter was + +<P>Minsky, Marvin, <EM>Computation: Finite and Infinite +Machines,</EM> Prentice-Hall, 1967. + +<P><BLOCKQUOTE> +Part of the interest of this particular text is that its author is a leading +figure in artificial intelligence research, and so the question of whether +the insights of automata theory apply also to human intelligence is always +visible as a motivating force in the presentation of the theory. Minsky's +bibliography will refer you to the original papers by Turing, Kleene, +Church, and so on as well as some left-field references to biological +information processing from people like Lettvin and McCulloch. + +<P></BLOCKQUOTE> + +<P> + +<P><H2>Chapter 2: Discrete Mathematics</H2> + +<P>This chapter touches on several topics. An overall introduction for +computer scientists is + +<P>Liu, Chung Laung, <EM>Elements of Discrete Mathematics,</EM> +McGraw-Hill, Second Edition, 1985. + +<P><BLOCKQUOTE> +This book requires no advanced mathematical background, but it does require +that the reader feel comfortable with mathematical notation and the notion +of formal proof. The topics include both purely mathematical ones, like set +theory, combinatorics, and modern algebra, and related computer science ones +like computability, formal languages, automata theory, analysis of +algorithms, and recursion. This list is not unlike the one in the book +you're reading now, and in fact Professor Liu expresses a goal similar to +mine: to show computer science undergraduates the relevance of mathematics +to their work. The difference is that I use actual programs to illustrate +the ideas whenever possible, whereas his is a "straight" math book. (Of +course another difference is that he treats all these topics in much more +depth. But don't be scared away; he starts simply.) + +<P></BLOCKQUOTE> + +<P>On the topic of mathematical logic, there is a range of books that vary in +accessibility. Among the most pleasant are + +<P> +<P>Smullyan, Raymond, <EM>What Is the Name of This Book?</EM> Prentice-Hall, 1978 +<P>--, <EM>The Lady or the Tiger?</EM> Knopf, 1982 +<P>--, <EM>5000 B.C. and Other Philosophical Fantasies,</EM> St. Martin's, 1984 +<P>--, <EM>Alice in Puzzle-Land,</EM> Penguin, 1984. +<P> + +<P><BLOCKQUOTE> +These are books of puzzles based on logic, but they go beyond the simple +propositional inference puzzles like the one in the text. Smullyan starts +with some of the classic puzzle categories, like the Liars and Truth-Tellers +puzzle, and builds up to an exposition in puzzle form of topics like +self-reference, modal logic, and Godel's Theorem. + +<P></BLOCKQUOTE> + +<P>"Logic programming" is the use of mathematical logic formalisms as a +programming language. It is also called "declarative programming" because +instead of issuing commands to the computer, the programmer makes statements +about things known to be true. The algorithm by which the programming +system makes inferences from these statements is not explicitly provided by +the programmer, but is built into the language. The most widely known +logic programming language, although not the only one, is Prolog. An +accessible introductory text is + +<P>Ennals, Richard, <EM>Beginning Micro-Prolog,</EM> Harper & Row, +Second Edition, 1984. + +<P><BLOCKQUOTE> +I list this book here because it's a Prolog text and therefore relevant +to mathematical logic, but for me the main interest of the book is that +it argues for the use of Prolog in teaching kids, as an alternative to Logo. +The book gives examples of logic programming at work in various curriculum +areas. + +<P></BLOCKQUOTE> + +<P><H2>Chapter 3: Algorithms and Data Structures</H2> + +<P>To a software engineer, the issues in this chapter are among the central ones in +computer science. That's not my own way of thinking, so it's possible that +my presentation doesn't give the field all the pizazz that an enthusiast +would manage. To compensate for that, you should read + +<P>Bentley, Jon, <EM>Programming Pearls,</EM> Addison-Wesley, 1986. + +<P><BLOCKQUOTE> +This is a collection of monthly articles written by Bentley for the +<EM>Communications</EM> of the Association for Computing Machinery. It +requires virtually no formal mathematics and is extremely readable. +If the book has a moral, it's "Think first, program later." It makes +its case with a number of true-to-life examples of projects in which orders +of magnitude were saved in the execution time of a program by rethinking its +fundamental structure. + +<P></BLOCKQUOTE> + +<P> + +<P><H2>Chapter 4: Programming Language Design</H2> + +<P>There are textbooks in "comparative programming languages," but I'm going +to stick to the strategy of the chapter by using Pascal as the example. +<EM>Structure and Interpretation of Computer Programs,</EM> one of my +must-reads, will be useful as a contrast here, giving the Lisp point of view. + +<P>Jensen, Kathleen, and Niklaus Wirth, <EM> +Pascal User Manual and Report,</EM> Springer-Verlag, Third Edition, 1985. + +<P><BLOCKQUOTE> +This is the official report of the international committee responsible for +the design of the language. The book has two parts, a reference manual and +the committee report itself. The latter includes some explicit discussion +of the design decisions in the language. + +<P></BLOCKQUOTE> + +<P><H2>Chapter 5: Programming Language Implementation</H2> + +<P>I really didn't have a reference for this chapter; I just sort of +forged ahead on my own! But here's the book I <EM>should</EM> have +read first: + +<P>Friedman, Daniel P., Mitchell Wand, and +Christopher T. Haynes, <EM>Essentials of Programming Languages,</EM> +MIT Press, 1992. + +<P><BLOCKQUOTE> +This book uses the Scheme dialect of Lisp as the basis for a +study of programming language interpreters. It's harder reading +than most of the books in this bibliography, but it encourages the +reader to think very deeply about how programming languages work. + +<P></BLOCKQUOTE> + +<P><H2>Chapter 6: Artificial Intelligence</H2> + +<P>I'll list two references here; one on language understanding in +general and one that contains a paper about the Student program +specifically. + +<P>Winograd, Terry, <EM>Language as a Cognitive Process, Volume 1: +Syntax,</EM> Addison-Wesley, 1983. + +<P><BLOCKQUOTE> +A planned second volume on semantics was not published. This is a +technically meaty book, but considering its depth it is quite readable. +The book strikes a good balance among technical programming issues, +psychological issues, and the ideas of mainstream linguistics. It includes +an extensive bibliography. When I attended Terry's course at Stanford in +which he first presented the material that became this book, it was the +first time I experienced a course that ended with a standing ovation for the +instructor. The book shows the same clarity of explanation and the same +enthusiasm. + +<P></BLOCKQUOTE> + +<P>Minsky, Marvin L., <EM>Semantic Information Processing,</EM> MIT +Press, 1969. + +<P><BLOCKQUOTE> +This is a collection of early research reports. I include it here because +one of its chapters is a paper by Bobrow on STUDENT, and you won't be able +to find the more complete description in Bobrow's unpublished thesis. +Other chapters describe similar microworld-strategy projects of the same +vintage. + +<P></BLOCKQUOTE> + +<P><H2>Computers and People</H2> + +<P>Last but far from least, some of the most fascinating reading connected with +computer science is found outside of the technical literature, in the +reactions of psychologists, philosophers, and sociologists to the computer +as a social force. You owe it to yourself to understand the human context +of your work; you owe it to everyone else to be strongly aware of the +social implications of what you do. + +<P>Turkle, Sherry, <EM>The Second Self: Computers and the Human +Spirit,</EM> Simon and Schuster, 1984. + +<P><BLOCKQUOTE> +A sociologist's view of the computer culture, this book explores both the +psychology of computer experts and the ways in which a computer-rich +environment has changed the thinking of non-experts not only about +technology but about what it means to be human. + +<P></BLOCKQUOTE> + +<P>Weizenbaum, Joseph, <EM>Computer Power and Human Reason: From +Judgment to Calculation,</EM> W. H. Freeman, 1976. + +<P><BLOCKQUOTE> +Weizenbaum is a computer scientist, and this book is in part a technical +argument about the limitations of what computers can do. But it is more +importantly a call to computer scientists to take responsibility for the +uses to which their inventions are put. Weizenbaum argues that there are +things we <EM>shouldn't</EM> do with computers, even if we <EM>can</EM> learn +how to overcome the technical obstacles. Computer-based weapons of war are +an obvious example, but Weizenbaum is also worried about things like +automated psychotherapy, which was just a daydream when the book appeared +but has since become a reality to a limited extent. Many computer +scientists find this book offensive, and it is certainly possible to find +flaws in the details. But the critics rarely present an alternative with +an equally strong social conscience. + +<P></BLOCKQUOTE> + +<P>Dreyfus, Hubert L., <EM>What Computers Still Can't Do: A +Critique of Artificial Reason,</EM> MIT Press, 1992. + +<P><BLOCKQUOTE> +Dreyfus is a philosopher who uses the phenomenological ideas of Heidegger +and others to suggest a fundamental flaw in the assumptions AI researchers +make about human intelligence. To try to sum it up in one sentence, the +sort of thinking that people do in solving a puzzle is very different from +the much more profound intelligence we use in carrying out our more customary +activities. AI programs mimic the former but not the latter. This is a +revision of an earlier book, taking into account more recent developments +in AI research. + +<P></BLOCKQUOTE> + +<P>Weinberg, Gerald M., <EM>The Psychology of Computer +Programming,</EM> +Van Nostrand Reinholt, 1971. + +<P><BLOCKQUOTE> +This book studies programming as a social activity, programming as an +individual activity, and the programming environment. In my opinion, its +main contribution is the idea of "egoless programming," which means more +or less that when your friend finds that impossible bug in your program for +you, you should feel happy rather than threatened. Weinberg offers several +good ideas for how to act as part of a programming community. On the other +hand, I'm less enthusiastic about his manager's-eye view of the programmer +as a cog in the machine, rather than as a creative artist. But overall I +think this book is well worth reading; it's also entertainingly written. + +<P></BLOCKQUOTE> + +<P> + + +<P><A HREF="../v3-toc2.html">(back to Table of Contents)</A> +<P><A HREF="../v3ch6/v3ch6.html"><STRONG>BACK</STRONG></A> +chapter thread <A HREF="permissions.html"><STRONG>NEXT</STRONG></A> + +<P> +<ADDRESS> +<A HREF="../index.html">Brian Harvey</A>, +<CODE>bh@cs.berkeley.edu</CODE> +</ADDRESS> +</BODY> +</HTML> |