Intro; Preface; Contents; Part I INTRODUCTION; Chapter 1: COMPUTER SCIENCE; 1.1 Machines; 1.2 Theoretical Computer Science; 1.3 Programs and Programming; 1.4 Computational Thinking; 1.5 The Discipline; Chapter 2: TOWARDS A PHILOSOPHY OF COMPUTER SCIENCE; 2.1 Semantics; 2.2 Ontology; 2.3 Methodology; 2.4 Epistemology; 2.5 Conclusion; Part II ONTOLOGY; Chapter 3: COMPUTATIONAL ARTIFACTS; 3.1 Function and Structure; 3.2 Design and Manufacture; 3.3 Theories of Function; 3.4 Computational Artifacts; Chapter 4: LOGIC MACHINES AS TECHNICAL ARTIFACTS; 4.1 Function; 4.2 Structure; 4.3 Design
Text of Note
10.4 Definitional Priority10.5 Game-Theoretic Semantics; 10.6 Programming Languages as Mathematical Theories; Chapter 11: SEMANTICS AND IMPLEMENTATION; 11.1 Compilers, Interpreters, and Virtual Machines; 11.2 Compilation and Semantic Interpretation; 11.3 Semantics and Interpretation; 11.4 Programming Languages as Technical Artifacts; Chapter 12: SPECIFICATION LANGUAGES; 12.1 Typed Predicate Logic; 12.2 The Logic of TPL; 12.3 Definitions; 12.4 Z and Set Theory; 12.5 VDM and Three-Valued Logic; 12.6 Types, Not Sets; 12.7 Expressive Power; Part IV METHODOLOGY
Text of Note
4.4 Correctness4.5 Implementation; 4.6 Logic Machines as Technical Artifacts; 4.7 The Abstract-Concrete Interface; 4.8 The von Neumann Computer as Artifact; 4.9 High-Level Functional Notation; 4.10 Conclusion; Chapter 5: THE ONTOLOGY OF PROGRAMS; 5.1 The Functional Specification of Programs; 5.2 Structure; 5.3 Implementation; 5.4 The Symbolic and the Physical; 5.6 Programs as Technical Artifacts; Chapter 6: SOFTWARE SYSTEMS AS TECHNICAL ARTIFACTS; 6.1 Requirements; 6.2 Structure and Design; 6.3 Implementation; 6.4 Software Systems as Artifacts; 6.5 Verification, Validation, and Malfunction
Text of Note
6.6 ConclusionPart III SEMANTICS; Chapter 7: THE LANGUAGES OF COMPUTER SCIENCE; 7.1 Varieties of Languages; 7.2 Formal Languages; Chapter 8: PROGRAMMING LANGUAGES; 8.1 Imperative Languages; 8.2 Functional Languages; 8.3 Logical Languages; 8.4 Object Orientation; 8.5 Concurrency and Nondeterminism; 8.6 Theories of Representation and Computation; Chapter 9: SEMANTIC THEORIES; 9.1 The Roles of Semantics; 9.2 Normativity; 9.3 Compositionality; 9.4 Rigor; 9.5 Conclusion; Chapter 10: FORMAL SEMANTICS; 10.1 Vernacular Semantics; 10.2 Operational Semantics; 10.3 Denotational Semantics
Text of Note
Chapter 13: SOFTWARE SYSTEM METHODOLOGY13.1 The Waterfall Method; 13.2 The Spiral Method; 13.3 The Agile Method; 13.4 Methodology; Chapter 14: SPECIFICATION; 14.1 Requirements Analysis as Modeling; 14.2 Definition; 14.3 Intention; 14.4 Intentional Stance; 14.5 Precision and Information; Chapter 15: THE PHILOSOPHY OF DESIGN; 15.1 Correctness; 15.2 Simplicity; 15.3 Modularity; 15.4 Formal Methods; Chapter 16: SIMPLICITY; 16.1 Elegance; 16.2 Parsimony; 16.3 Justification; Chapter 17: MODULARITY; 17.1 Encapsulation; 17.2 Bundling; 17.3 Information Hiding; 17.4 Independence; 17.5 Single Function
0
8
8
8
8
SUMMARY OR ABSTRACT
Text of Note
The philosophy of computer science is concerned with issues that arise from reflection upon the nature and practice of the discipline of computer science. This book presents an approach to the subject that is centered upon the notion of computational artefact. It provides an analysis of the things of computer science as technical artefacts. Seeing them in this way enables the application of the analytical tools and concepts from the philosophy of technology to the technical artefacts of computer science. With this conceptual framework the author examines some of the central philosophical concerns of computer science including the foundations of semantics, the logical role of specification, the nature of correctness, computational ontology and abstraction, formal methods, computational epistemology and explanation, the methodology of computer science, and the nature of computation. The book will be of value to philosophers and computer scientists.