Computing: A Human Activity -- Selected Writings From 1951 To 1990
ACM Press/Addison-Wesley, New York, 1992, 630 p. ISBN
0-201-58069-1
Foreword | |
Preface | |
1. | UNDERSTANDING THE HUMAN ACTIVITY OF COMPUTING |
1.1 | The Place of Programming in a World of Problems, Tools and People (1965) Introduction. Problems, Tools, and People. Programming Languages. Machine Characteristics. List Processing. COBOL. ALGOL and Common Programming Languages. |
1.2 | Data and Their Applications (1974) 1.2.1 Data and What They Represent. 1.2.2 Data Processes and Models. 1.2.3 Data Recognition and Context. 1.2.4 Data Representations. 1.2.5 Numbers and Numerals. 1.2.6 Data Conversions. 1.2.7 Data Processing. 1.2.8 A Basic Principle of Data Science. 1.2.9 Limitations of Data Processing. 1.2.10 Summary of the Chapter. 1.2.11 Exercises. |
1.3 | Programming Languages, Natural Languages, and Mathematics (1975) Abstract. 1.3.1 Introduction. 1.3.2 Pure and Applied Mathematics. 1.3.3 Programming Languages and Natural Languages. 1.3.4 Language Quality. 1.3.5 Artificial Auxiliary Languages. 1.3.6 FORTRAN and COBOL as Given Facts of Life. 1.3.7 Language and Literature. 1.3.8 Descriptive and Prescriptive Attitudes to Language. 1.3.9 Conclusion. |
1.4 | Programming As Theory Building (1985) Abstract. 1.4.1 Introduction. 1.4.2 Programming and the Programmers' Knowledge. 1.4.3 Ryle's Notion of Theory. 1.4.4 The Theory To Be Built by the Programmer. 1.4.5 Problems and Costs of Program Modifications. 1.4.6 Program Life, Death, and Revival. 1.4.7 Method and Theory Building. 1.4.8 Programmers' Status and the Theory Building View. 1.4.9 Conclusions. |
1.5 | Computing and the So-Called Foundations of the So-Called Sciences (1990) Abstract. 1.5.1 Introduction. 1.5.2 Words and Science. 1.5.3 So Called Foundations of the Sciences. 1.5.4 Scientific Aspects of Computing. 1.5.5 Some General Theorems About Computing. 1.5.6 Consequences for the Teaching of Computing. |
2. | ALGOL 60 AND PROGRAMMING LANGUAGES |
2.1 | Contributions to ALGOL 60 (1959-60) 2.1.1 From ALGOL Bulletin no. 3, 1959 June 8. 2.1.2 ALGOL 60. Draft report by Peter Naur, Regnecentralen, Copenhagen, 1960 Jan. 9. Description of the reference language. 2.1.3 Excerpts from Report on the Algorithmic Language ALGOL 60. 1960 March 2. |
2.2 | Successes and Failures of the ALGOL Effort (1968) Abstract. |
2.3 | Aad van Wijngaarden's Contributions to ALGOL 60 (1981) Abstract. |
2.4 | Programming Languages--Status and Trends (1972) Abstract. The Complexity of the Situation. Operating Systems. Research Efforts. Performance Studies--the Big Void. Conclusions. |
2.5 | Review of John Backus: Can Programming Be Liberated From the Von Neumann Style? A Functional Style and Its Algebra of Programs (1978) |
3. | COMPILER CONSTRUCTION AND DATA PROCESSING |
3.1 | The Design of the Gier ALGOL Compiler (1963) Abstract. 3.1.1 Introduction. 3.1.2 Background of the Project. 3.1.3 The Running System. 3.1.4 Multipass Translation. 3.1.5 Translator Methodology. 3.1.6 Size and Performance. |
3.2 | Checking of Operand Types in ALGOL Compilers (1965) Abstract. Introduction. The Problem. Pseudo Evaluation. Checking During Conversion. Checking Conditional Expressions. Handling of Errors. Classification and Representation of Operands. Example of Error Messages. |
3.3 | Certification of Algorithms (1963) Remarks on and Certification of Algorithm 50: Inverse of a Finite Segment of the Hilbert Matrix . Certification of Algorithms 120 and Matrix Inversion by Gauss Jordan, INVERSION II and gjr. Correction to Earlier Remarks on Algorithm 42 INVERT. 107 Gauss's Method. 120 INVERSION II, and gjr. |
3.4 | Organizing the Use of Multi Level Stores (1965) Background. The Systems Tape. Translation. Execution of Compiled Programs. Conclusions. |
3.5 | Program Translation Viewed As a General Data Processing Problem (1966) Abstract. Background. General Attitude. Logical Structure of Translators. Reliability of Translators. Data Processing Techniques of Translators. Background and New Convention Oriented Programs. Empty Options. Default Conventions. Structure Versus Reference. Richness and Power. Conclusions. |
4. | THE PHILOSOPHY OF HOW TO TEACH COMPUTING |
4.1 | Datalogy and Datamatics and Their Place in Education (1966) |
4.2 | Outline of a Course of Datalogy and Datamatics (1966) Preface. 4.2.1 Context and Form. 4.2.2 The Concepts of Datalogy and the Methodology of Datamatics. 4.2.3 Processing of Single Data Elements. 4.2.4 Intermediate Amounts of Data. 4.2.5 Communication Between Man and Datamaton. 4.2.6 Large Amounts of Data. 4.2.7 Designing Large Datamatic Programs. |
4.3 | The Science of Datalogy--Letter to the Editor (1966) |
4.4 | Datalogy, the Science of Data and Data Processes, and Its Place in Education (1968) 4.4.1 Computer Science and Datalogy . 4.4.2 The Concepts of Data and Data Processes . 4.4.3 Outline of a Course of Datalogy. 4.4.4 Critique of the ACM Curriculum . 4.4.5 Progress Report. |
4.5 | Project Activity in Computer Science Education (1970) Introduction. What Project Activity Is. Projects in Computer Science. Problem Solving. Design Techniques. Project Documentation and the Design Process. The Typewriter As a Tool in Documentation. Use of Check Lists. The Need For Group Work. Introducing Project Work in Higher Education. Guidance of Project Work Via the Evaluation Procedure. Students' Mutual Evaluation. Automatic Grading of Programs. Evaluation of Group Work. Conclusion. |
4.6 | Plans and Ideas for an Institute of Datalogy at Copenhagen University (1970) 4.6.1 Section Headings of Report on Institute. 4.6.2 Excerpts of Full Text. |
4.7 | Datalogy Zero--a Freshman Course of Computer Science (1974) Course Goals. Projects. Course Contents and Materials. Organization and Resources. Experience. |
4.8 | Writing Reports--a Guide (1976) 4.8.1 Aim and Justification. 4.8.2 The Contents of Reports. |
4.9 | Computer Science in High School--Letter to the Editor (1980) |
4.10 | Programming of a Well Understood Task (1981) 4.10.1 Introduction. 4.10.2 Problem Analysis. 4.10.3 Guide to the User. 4.10.4 Testing. 4.10.5 Program Description. 4.10.6 SIM8080 Program Text. |
4.11 | Blind Alleys in University Computing (1983) |
5. | RELIABLE AND ORDERLY PROGRAMMING |
5.1 | Go To Statements and Good ALGOL Style (1963) |
5.2 | Proof of Algorithms by General Snapshots (1966) Abstract. Introduction. The Meaning of Proof. Snapshots. General Snapshots. Exhaustive Enumeration of Entry and Exit Conditions. External Parameters of a Process. Construction of Algorithms. |
5.3 | Programming by Action Clusters (1969) Abstract. 5.3.1 Introduction. 5.3.2 Construction for Satisfying Global Requirements. 5.3.3 Example Part 1: Line Editing Problem. 5.3.4 Example Part 2: Forming the Action Clusters. 5.3.5 Example Part 3: Constructing the Final Program. 5.3.6 Relation to Proving by General Snapshots. 5.3.7 Relation to Programming Languages. |
5.4 | Problem Formulation--the Fertile Soil of the Software Development Project (1971) Problem Formulation--What It Is. Reporting of Reasons. Problems of Language. Problems--Tools--People. Weighing of Ideas. Periodic Revision of the Problem Formulation. What Must the Manager Know About Electronic Data Processing--and the Data Processing People About Management?. |
5.5 | Design and Development of Large Data Systems (1974) 5.5.1 Controversial Issues of Large Data Systems. 5.5.2 The Management View of the Large Data System Project. 5.5.3 Overall Design and the Experimental Attitude. 5.5.4 The Human Feedback. 5.5.5 Techniques of Problem Solving and Large System Design. 5.5.6 Documentation of Large Data Systems. 5.5.7 Documentation of Computer Operation. 5.5.8 Design Decisions of Large Data Systems. 5.5.9 Experiments as Part of the Design Process. 5.5.10 Design Check Points. 5.5.11 Summary of the Chapter. 5.5.12 Exercises. |
5.6 | Control Record Driven Processing (1977) Abstract. 5.6.1 Introduction. 5.6.2 Symbol Transliteration. 5.6.3 String Conversion Based on Finite State Transducer. 5.6.4 Conversion to Postfix Form in Compilers. 5.6.5 Applicability and Development of Design. 5.6.6 Problem and Solution Structure. 5.6.7 The Language of Control Records. 5.6.8 Representing the Control Records. 5.6.9 Execution Time Efficiency. 5.6.10 Proof and Testing of Control Record Driven Solutions. |
5.7 | Software Reliability (1977) Abstract. Introduction. Reliability Situation Cases. The Complexity of Software Reliability. Reliability and Human Expectations. Reliability and Correctness of Software. Reliability as Related to Systems Controlled by Software. Stochastic Elements of Software Systems. Quantification of Software Reliability. Stability of Software Systems. Reliable Software Design Policies. Conclusions. |
5.8 | Diminishing Returns of User Programming (1978) Abstract. Introduction. The Levels of Computers and Their Software. Problems of Levels in Application Programming. Programming Aspects of Human Enterprises. Benefits of Computerized Solutions. Conclusions. |
5.9 | Prospects for the Programming Methodologies (1981) Abstract. Introduction. Review of Programming Methodologies. Criticism of Current Methodologies. The Work Style of Journalists. The Making of Encyclopaedias. Problem Solving. Discussion. |
6. | PROGRAMMING STUDIED EMPIRICALLY |
6.1 | An Experiment on Program Development (1972) Abstract. 6.1.1 Introduction. 6.1.2 Eight Queens--Thinking at the Typewriter. 6.1.3 Discussion. 6.1.4 Conclusion. |
6.2 | An Empirical Approach to Program Analysis and Construction (1981) Abstract. 6.2.1 Introduction. 6.2.2 Implicit Notions of Quality. 6.2.3 The Choice of Simple Variables. 6.2.4 Program Skeleton as Analytic Tool . 6.2.5 Overall Revision of a Program. 6.2.6 Discussion. Conclusions. |
6.3 | Program Development Studies Based on Diaries (1983) 6.3.1 Introduction. 6.3.2 Programming of a Well Known Task. 6.3.3 Program Correctness. 6.3.4 Problem Analysis Work Mode. 6.3.5 Results of the Diary Analysis. |
7. | INTUITION AND FORMALIZATION IN PROGRAM DEVELOPMENT |
7.1 | Formalization in Program Development (1982) Abstract. 7.1.1 Introduction. 7.1.2 Specifications, Formalization, and Mathematics. 7.1.3 Correctness and Abstraction in Programming. 7.1.4 Notes on a Description of ALGOL 60. 7.1.5 Neglect of Informal Precision and Disdain of Intuition. 7.1.6 Neglect of Simple Formalizations. 7.1.7 Psychology of Formalization and Specification. 7.1.8 Specifications for Human Understanding. |
7.2 | Intuition in Software Development (1985) Abstract. 7.2.1 Introduction. 7.2.2 The Notion of Intuition. 7.2.3 Successes and Failures of Intuitive Insight. 7.2.4 Bounding the Failures of Intuition. 7.2.5 Intuition, Scales, Logic, and Correctness. 7.2.6 Intuition and Text. 7.2.7 Reasoning, Proof, and Intuition. 7.2.8 Data Models of Human Activity. 7.2.9 Software Development. 7.2.10 Software Development Methods and Intuition. 7.2.11 Conclusions. |
7.3 | Review of J.-R. Abrial: Specification or How to Give Reality to Abstraction (1986) |
7.4 | Review of R. L. Schwartz and P. M. Melliar-Smith: From State Machines to Temporal Logic: Specification Methods for Protocol Standards (1986) |
7.5 | The Place of Strictly Defined Notation in Human Insight (1989) Abstract. 7.5.1 Introduction. 7.5.2 Strictly Defined Notation. 7.5.3 Constructed Models Built From Symbols. 7.5.4 Programming Logic and Informal Issues. |
8. | COMPUTING AND HUMAN UNDERSTANDING |
8.1 | The Electronic Computer and the Brain (1954) |
8.2 | Thinking and Turing's Test (1986) Abstract. 8.2.1 Introduction. 8.2.2 Turing's Question as an Expression in Normal Language. 8.2.3 Thinking as a Basic Concept of Psychology. 8.2.4 Thinking as an Intellectual Activity. 8.2.5 Turing's Imitation Game. 8.2.6 Critique of Turing's Notion of Thinking. 8.2.7 Conclusion. |
8.3 | Review of D. Michie: Machine Intelligence and Related Topics (1985) |
8.4 | Programming Languages Are Not Languages--Why 'Programming Language' Is a Misleading Designation (1988) Language and Knowledge. What is Language?. Language and Speech. Homonyms. Sound and Meaning. Meaning and Imagination. How Far Do We Understand One Another?. Are Programming Languages Languages?. |
8.5 | Review of Y. Shoham: Reasoning About Change: Time and Causation From the Standpoint of Artificial Intelligence (1989) Author's Rebuttal to This Review. Reviewer's Response to the Rebuttal. |
8.6 | Causes and Human Expectations and Intents (1989) Abstract. |
8.7 | Human Knowing, Language, and Discrete Structures (1988) 8.7.1 Why a Computer Scientist Concerns Himself With Human Knowing and Language. 8.7.2 Knowing and Language. 8.7.3 Non verbal Knowing Versus Rules. 8.7.4 Metaphors for a Person's Knowing. 8.7.5 Formalization and Comprehension. 8.7.6 Consequences About Getting To Know. |
9. | COMPUTERS AND SOCIETY |
9.1 | Computers and Society (1967) 9.1.1 The History of Computers From Pascal Until Today. 9.1.2 Datalogy--the Science of Data. 9.1.3 The Structure and Manner of Operation of Computers. 9.1.4 Programming--the Key to the Flexibility of Computers. 9.1.5 The Applications of Computers Today. 9.1.6 Future Perspectives. |
9.2 | The State of Computing 1970 (1970) When the Computers Were Put Into Use, Too Many People Forgot That Innovation Depends on Changes of Established Modes. Man Sets the Tempo. Production of Computers. I/S Datacentralen. Taxation at the Source. Fundamental Howler. Lack of Insight. Institutions of Advanced Education. Entirely Illusory. Conviction Lacking. EDP in the Schools. The Role of the Government. Postscript. |
9.3 | Top Speed--Right Into the Abyss (1971) |
9.4 | The Impact on Society of Computers in Education (1975) Abstract. 9.4.1 Introduction. 9.4.2 Computers in Administration of Education. 9.4.3 The Computer as a Teaching Device. 9.4.4 The Computer Used As a Tool for Fields of Empirical Study. 9.4.5 Computers as Objects of Study in Their Own Right. 9.4.6 Overall Impact. |
9.5 | Man Is Not a Machine--and Vice Versa (1984) Abstract. |
10. | ROOTS |
10.1 | Autobiographical Notes (1990) |
10.2 | Computation of Special Perturbations by an Electronic Calculator (1951) Summary. Description of the Process. Accuracy. Circular Motion. Free Fall From Infinity. The Operation of the Machine. The Planet Tapes. The Speed of the Process. |
10.3 | Regnecentralen and ALGOL 60 (1976) |
10.4 | Niels Ivar Bech, the Man Who Created Regnecentralen (1971) |
10.5 | Obituary of Niels Ivar Bech, 1920 August 22 1975 July 25 (1975) |
Alphabetic Index |