Colburn (computer science, U. of Minnesota-Duluth) has a doctorate in philosophy and an advanced degree in computer science; he's worked as a philosophy professor, a computer programmer, and a research scientist in artificial intelligence. Here he discusses the philosophical foundations of artificial intelligence; the new encounter of science and philosophy (logic, models of the mind and of reasoning, epistemology); and the philosophy of computer science (touching on math, abstraction, software, and ontology).
We characterize abstraction in computer science by first comparing the fundamental nature of computer science with that of its cousin mathematics. We consider their primary products, use of formalism, and abstraction objectives, and find that the two disciplines are sharply distinguished. Mathematics, being primarily concerned with developing inference structures, has information neglect as its abstraction objective. Computer science, being primarily concerned with developing interaction patterns, has information hiding as its abstraction objective. We show that abstraction through information hiding is a (...) primary factor in computer science progress and success through an examination of the ubiquitous role of information hiding in programming languages, operating systems, network architecture, and design patterns. (shrink)
This paper analyzes both philosophical and practical assumptions underlying claims for the dual nature of software, including software as a machine made of text, and software as a concrete abstraction. A related view of computer science as a branch of pure mathematics is analyzed through a comparative examination of the nature of abstraction in mathematics and computer science. The relationship between the concrete and the abstract in computer programs is then described by exploring a taxonomy of approaches borrowed from philosophy (...) of mind. (shrink)
Computer science is an engineering science whose objective is to determine how to best control interactions among computational objects. We argue that it is a fundamental computer science value to design computational objects so that the dependencies required by their interactions do not result in couplings, since coupling inhibits change. The nature of knowledge in any science is revealed by how concepts in that science change through paradigm shifts, so we analyze classic paradigm shifts in both natural and computer science (...) in terms of decoupling. We show that decoupling pervades computer science both at its core and in the wider context of computing at large, and lies at the very heart of computer science’s value system. (shrink)
In this paper I attempt to cast the current program verification debate within a more general perspective on the methodologies and goals of computer science. I show, first, how any method involved in demonstrating the correctness of a physically executing computer program, whether by testing or formal verification, involves reasoning that is defeasible in nature. Then, through a delineation of the senses in which programs can be run as tests, I show that the activities of testing and formal verification do (...) not necessarily share the same goals and thus do not always constitute alternatives. The testing of a program is not always intended to demonstrate a program's correctness. Testing may seek to accept or reject nonprograms including algorithms, specifications, and hypotheses regarding phenomena. The relationship between these kinds of testing and formal verification is couched in a more fundamental relationship between two views of computer science, one properly containing the other. (shrink)
Abstract: Laws of computer science are prescriptive in nature but can have descriptive analogs in the physical sciences. Here, we describe a law of conservation of information in network programming, and various laws of computational motion (invariants) for programming in general, along with their pedagogical utility. Invariants specify constraints on objects in abstract computational worlds, so we describe language and data abstraction employed by software developers and compare them to Floridi's concept of levels of abstraction. We also consider Floridi's structural (...) account of reality and its fit for describing abstract computational worlds. Being abstract, such worlds are products of programmers' creative imaginations, so any "laws" in these worlds are easily broken. The worlds of computational objects need laws in the form of self-prescribed invariants, but the suspension of these laws might be creative acts. Bending the rules of abstract reality facilitates algorithm design, as we demonstrate through the example of search trees. (shrink)
This chapter contains sections titled: Introduction Computer Science as the Master of Its Domain The Concept of Law in Computer Science Computer Science Laws as Invariants The Interplay of Freedom and Constraint Conclusion References.
The general conditions of epistemic defeat are naturally represented through the interplay of two distinct kinds of entailment, deductive and defeasible. Many of the current approaches to modeling defeasible reasoning seek to define defeasible entailment via model-theoretic notions like truth and satisfiability, which, I argue, fails to capture this fundamental distinction between truthpreserving and justification-preserving entailments. I present an alternative account of defeasible entailment and show how logic programming offers a paradigm in which the distinction can be captured, allowing for (...) the modeling of a larger range of types of defeat. This is possible through a natural extension of the declarative and procedural semantics of Horn clauses. (shrink)
Heuristics can be regarded as justifying the actions and beliefs of problem-solving agents. I use an analysis of heuristics to argue that a symbiotic relationship exists between traditional epistemology and contemporary artificial intelligence. On one hand, the study of models of problem-solving agents usingquantitative heuristics, for example computer programs, can reveal insight into the understanding of human patterns of epistemic justification by evaluating these models'' performance against human problem-solving. On the other hand,qualitative heuristics embody the justifying ability of defeasible rules, (...) the understanding of which is provided by traditional epistemology. (shrink)
The distinction between the modeling of information and the modeling of data in the creation of automated systems has historically been important because the development tools available to programmers have been wedded to machine oriented data types and processes. However, advances in software engineering, particularly the move toward data abstraction in software design, allow activities reasonably described as information modeling to be performed in the software creation process. An examination of the evolution of programming languages and development of general programming (...) paradigms, including object-oriented design and implementation, suggests that while data modeling will necessarily continue to be a programmer's concern, more and more of the programming process itself is coming to be characterized by information modeling activities. (shrink)
The duality of computer programs is characterized, on the one hand, by their physical implementations on physical devices, and, on the other, by the conceptual implementations in programmers’ minds of the objects making up the computational processes they conceive. We contend that central to programmers’ conceptual implementations are (i) the concept of type, at both the programming and the design level, and (ii) metaphors created to facilitate these implementations.