My mind does not simply receive impressions. It talks back to the authors, even the wisest of them, a response I’m sure they would warmly welcome. It is not possible, after all, to accept passively everything even the greatest minds have pro- posed. One naturally has profound respect for Socrates, Plato, Pascal, Augustine, Descartes, Newton, Locke, Voltaire, Paine, and other heroes of the pantheon of Western culture; but each made statements flatly contradicted by views of the oth- ers. So I see the literary and philosophical tradition of our culture not so much as a storehouse of facts and ideas but rather as a hopefully endless Great Debate at which one may be not only a privileged listener but even a modest participant. —Steve Allen (1989, p. 2), as cited in Madigan 2014, p. 46.
As [the logician] Harvey Friedman has suggested, every morning one should wake up and reflect on the conceptual and foundational significance of one’s work. —Robert Soare (1999, p. 25, my bracketed interpolation)1
This book looks at some of the central issues in the philosophy of computer science. It is not designed to answer all (or even any) of the philosophical questions that can be raised about the nature of computing, computers, and computer science. Rather, it is designed to “bring you up to speed” on a conversation about these issues—to give you some background knowledge—so that you can read the literature for yourself and perhaps become part of the conversation by contributing your own views.
This book is intended for readers who might know some philosophy but no com- puter science, readers who might know some computer science but no philosophy, and readers who know little or nothing about both! So, although most of the book will be concerned with whatcomputer scienceis, we will begin by asking: What is philos- ophy? And, in particular: What is “the philosophy ofX?” (where X = things like: science, psychology, history, etc., and, of course, computer science).
Then we will begin our inquiry into the philosophy of computer science by asking:
What is computer science? To answer this, we will need to consider a series of questions, each of which leads to another: Is computer science a science, a branch of engineering, some combination of them, or something else altogether? And to answer those questions, we will need to askwhat science isandwhat engineering is.
Whether science or engineering, computer science is surely2scientific, so we next ask:What is computer science a (scientific) studyof?Computers?If so, thenwhat is a computer? Or is computer science a study ofcomputation? If so, thenwhat is computation? Computations are said to bealgorithms, sowhat is an algorithm?
Algorithms are said to be procedures, or recipes, sowhat is a procedure? What is a recipe? What is the Church-Turing Computability Thesis? This is the proposal that our intuitive notion of computation is completely captured by the formal notion of
1Elaborations or comments added to a direct quotation are standardly indicated by placing them in brack-
ets. So all such bracketed interpolations are mine, as are any bracketed footnotes within quotations. But passages by the original author that I have put into bracketed interpolations are surrounded by quotation marks.
Turing Machine computation. And what is a Turing Machine? What is “hypercom- putation”(i.e., the claim that the intuitive notion of computation goes beyond Turing Machine computation)?
Computations are expressed in computer programs, which are executed by com- puters, sowhat is a computer program? Are computer programs “implementations” of algorithms? If so, thenwhat is an implementation?Programs typically have real- world effects, sohow are programs and computation related to the world? Some programs, especially in the sciences, are designed to model or simulate or explain some real-world phenomenon, socan programs be considered to be (scientific) theories?
Programs are usually considered to be “software”, and computers are usually consid- ered to be “hardware”, butwhat is the difference between software and hardware?
Programs are texts written in a (programming) language, and linguistic texts are legally copyrightable. But some programs are engraved on CDs and, when installed in a com- puter, turn the computer into a (special-purpose) machine, which is legally patentable. Yet, legally, nothing can be both copyrightableandpatentable, soare programs copy- rightable texts, or are they patentable machines?Computer programs are notorious for having “bugs”, which are often only found after the program has been tested, but
can computer programs be logically verifiedbefore testing?
Next, we turn to some of the issues in the philosophy of artificial intelligence
What is artificial intelligence (AI)? What is the relation of computation to cognition? Can computers think? What are the Turing Test and the Chinese Room Argument? Very briefly: The Turing Test is a test proposed by one of the creators of the field of computation to determine whether a computer can think. The Chinese Room Argument is a thought experiment devised by a philosopher, which is designed to show that the Turing Test won’t work.
Finally, we consider two questions incomputer ethics, which, at the turn of the century, were not much discussed, but are now at the forefront of computational ethical debates: (1) Should we trust decisions made by computers? (Moor, 1979)—a question made urgent by the advent of automated vehicles and by “deep learning” algorithms that might be biased. And (2) should we build “intelligent” computers? Do we have moral obligations towards robots? Can or should they have moral obligations towards us?
Along the way, we will look at how philosophers reason and evaluate logical argu- ments, and there will be some suggested writing assignments designed to help focus your thinking about these issues.
Computer science students take note:
Computer Science Curricula 2013 covers precisely these sorts of argument-analysis techniques under the headings of Discrete Structures [DS]/Basic Logic, DS/Proof Techniques, Social Issues and Professional Practice [SP] (in general), and SP/Analytical Tools (in particular). Many other CS2013 topics also overlap those in the philosophy of computer science. See http://ai.stanford. edu/users/sahami/CS2013/