Computer Science
Total Page:16
File Type:pdf, Size:1020Kb
Computer Science Edward K. Blum l Alfred V. Aho Editors Computer Science The Hardware, Software and Heart of It Editors Edward K. Blum Alfred V. Aho Department of Mathematics Department of Computer Science University of Southern California Columbia University Los Angeles, CA, USA New York, NY, USA [email protected] [email protected] ISBN 978-1-4614-1167-3 e-ISBN 978-1-4614-1168-0 DOI 10.1007/978-1-4614-1168-0 Springer New York Dordrecht Heidelberg London Library of Congress Control Number: 2011941144 # Springer Science+Business Media, LLC 2011 All rights reserved. This work may not be translated or copied in whole or in part without the written permission of the publisher (Springer Science+Business Media, LLC, 233 Spring Street, New York, NY 10013, USA), except for brief excerpts in connection with reviews or scholarly analysis. Use in connection with any form of information storage and retrieval, electronic adaptation, computer software, or by similar or dissimilar methodology now known or hereafter developed is forbidden. The use in this publication of trade names, trademarks, service marks, and similar terms, even if they are not identified as such, is not to be taken as an expression of opinion as to whether or not they are subject to proprietary rights. Printed on acid-free paper Springer is part of Springer ScienceþBusiness Media (www.springer.com) Contents Part I 1 Introduction and Prologue............................................. 3 Edward K. Blum 2 Computation: Brief History Prior to the 1900s ...................... 11 Edward K. Blum 3 The Heart of Computer Science....................................... 17 Edward K. Blum 4 The Software Side of Computer Science – Computer Programming ................................... 53 Edward K. Blum and Walter Savitch Part II 5 The Hardware Side..................................................... 71 Edward K. Blum 6 Operating Systems (OS) ............................................... 97 Edward K. Blum 7 Computer Networks.................................................... 105 Fan Chung Graham and Edward K. Blum 8 High Performance Computing and Communication (HPCC).......................................... 139 James M. Pepin 9 Programming for Distributed Computing: From Physical to Logical Networks................................... 155 Christian Scheideler and Kalman Graffi v vi Contents 10 Databases................................................................ 169 Michael Benedikt and Pierre Senellart 11 Computer Security and Public Key Cryptography.................. 231 Wayne Raskind and Edward K. Blum 12 Complexity Theory ..................................................... 241 Alfred V. Aho 13 Multivariate Complexity Theory...................................... 269 Michael R. Fellows, Serge Gaspers, and Frances Rosamond 14 Quantum Computing................................................... 295 Todd A. Brun 15 Numerical Thinking in Algorithm Design and Analysis............. 349 Shang-Hua Teng 16 Fuzzy Logic in Computer Science..................................... 385 Radim Belohlavek, Rudolf Kruse, and Christian Moewes 17 Statistics of the Field ................................................... 421 Frances Rosamond Epilogue ...................................................................... 467 vii Contributors Alfred V. Aho Columbia University, New York, NY, USA Radim Belohlavek Palacky University, Olomouc, Czech Republic Michael Benedikt University of Oxford, Oxford, UK Pierre Senellart Te´le´com ParisTech, Paris, France Edward K. Blum Department of Mathematics, University of Southern California, Los Angeles, CA, USA Todd A. Brun University of Southern California, Los Angeles, CA, USA Fan Chung Graham University of California at San Diego, La Jolla, CA, USA Michael R. Fellows School of Engineering and Information Technology, Charles Darwin University, Casuarina, Australia Serge Gaspers Institute of Information Systems, Vienna University of Technology, Vienna, Austria Rudolf Kruse Otto-von-Guericke University, Magdeburg, Germany James M. Pepin Clemson University, South Carolina, USA Wayne Raskind Arizona State University, Tempe, AZ, USA Frances Rosamond School of Engineering and Information Technology, Charles Darwin University, Casuarina, Australia Shang-Hua Teng University of Southern California, Los Angeles, CA, USA Christian Scheideler Department of Computer Science, University of Paderborn, Paderborn, Germany Kalman Graffi Department of Computer Science, University of Paderborn, Paderborn, Germany Walter Savitch University of California, San Diego, La Jolla, CA, USA Christian Moewes Otto-von-Guericke University, Magdeburg, Germany ix Part I Chapter 1 Introduction and Prologue Edward K. Blum It is said that the past is prologue. This saying is borne out by most of the history of science, but it applies only loosely to computer science, since this “modern” science does not have that much of a past compared to the traditional sciences like physics and chemistry. In the latter, in any era the events of the past do presage the ongoing and future development of these sciences. The development of computer science proceeds at such a rapid and frenetic pace that the boundary between past events and the current state of the subject is somewhat blurred. In this book, with its advisedly provocative title referring to the heart of computer science, we take the position that its prologue is indeed rather brief and somewhat diffuse. To recount how the history of computer science interacts with its current state we adopt a simplifying assumption about its early history, the reasonableness of which we shall defend, to the effect that the early and defining history of computer science (the prologue) can be encapsulated in the work of one man, the British mathematician Alan Turing. Except for some very early and rather naı¨ve contributions by the outstanding mathematicians Pascal and Leibniz and some later more substantial ones by the polymath Babbage and the logician Godel, the subject which we now call computer science sprang largely from the brilliant and original researches of Turing, as we shall attempt to illustrate. Turing was undoubtedly a genius in both the mathematics of computing as embodied in his studies of what we now call software and in the engineering side of computing which we usually refer to as hardware. As this book will argue, these seemingly disparate sub-disciplines of computer science, software and hardware, are intrinsically related, although in many school curricula there is an explicit marked separation and the single subject is organized for pedagogical and research purposes into two subjects: computer science and computer engineering. E.K. Blum (*) Department of Mathematics, University of Southern California, Los Angeles, CA, USA e-mail: [email protected] E.K. Blum and A.V. Aho (eds.), Computer Science: The Hardware, 3 Software and Heart of It, DOI 10.1007/978-1-4614-1168-0_1, # Springer Science+Business Media, LLC 2011 4 E.K. Blum To stress this apparent dichotomy in the structure of computer science is not only unnecessary but misleading. It was not the way Turing viewed his research projects and it is counter to our view of the subject, which recognizes the intrinsic interrelationships of many aspects of software and hardware. We regard computer science as a Union (with a capital U) of its two major constit-uents, hardware and software. Admittedly, this Union is diverse and rapidly evolving and defies precise characterization. Nevertheless, in this book we endeavor to present a report on the state of this Union as of the year 2011. It is not feasible to cover all facets of this state in a relatively short book. So we shall cover a reasonably large number of its key elements which in our opinion are not only having the greatest impact on the further develop- ment of computer science itself but also a measurable impact on the surrounding world with which computer science is now so actively engaged. We alert the reader to our style of presentation whereby we report on the state of the Union on two coordinated levels of exposition: 1. An informal intuitive level which minimizes the mathematical and technical details and aims to be readable and comprehensible, for the most part, by any intelligent layperson reader and in its entirety by a layperson reader with say a college education but one that need not include much science; 2. A concomitant technical/mathematical level that aims to provide a deeper quantitative understanding for the scientific/engineering-trained reader. Although these two expositions could be quite disparate, in this book they are carefully coordinated so that they do not constitute two books but are united as one. We are well aware of the difficulties and hazards in such a two-level exposition; trying to produce both a “popular” book and a “technical” book between the same covers. To smooth the reader’s progress we have used various literary devices, such as separating the intuitive concrete ideas from the more abstract ones by packaging the latter into appendices. The appendices are included in the main text at points close to the intuitive discussions (see the Table of Contents) and we attempt to use the same linguistic constructs for related intuitive and abstract ideas. The choice of familiar colloquial non-quantitative language, ordinary words and phrases, for unfamiliar quantitative concepts is quite common in traditional science. For example, physicists speak and think freely of electromagnetic waves, interference of such waves,