本书采用大量最新素材,全面介绍计算机科学领域的基础知识。本书由当今该领域备受赞誉且经验丰富的教育家Nell Dale和John Lewis共同编写。就整体而言,全书内容翔实、覆盖面广,旨在向读者展示计算机科学的全貌;从细节上看,本书层次清晰、描述生动,从信息讲起,分别介绍了关于硬件、编程、操作系统、应用以及通信方面的内容,涉及计算机科学的各个层面。 本书内容严谨、深入浅出,是计算机科学专业学生理想的入门教材。本书的主要特点 ●采用一般语言对编程概念进行了描述,关于Java、C++语言对该问题的描述在本书的配套网站 (http://csilluminated.jbpub.com)中提供。 ●增加了名人传记、历史事件以及技术发展的前沿知识;并在每章中就科技发展对人类社会伦理道德的影响进行了探讨。 ●包含大量习题和思考题,方便教学。 ●本书的配套网站集学术性及趣味性于一体,提供了大量教学资源:Flash幻灯片、在线术语表、互动学习、填字游戏、HTML帮助信息等,以更灵活的方式多方位加深读者对本书知识的理解。同时,与网站的互动更加强了读者实际应用英文的能力。
Laying the Groundwork
Chapter 1 The Big Picture
The Information Layer
Chapter 2 Binary Values and Number Systems
Chapter 3 Data Representation
The Hardware Layer
Chapter 4 Gates and Circuits
Chapter 5 Computing Components
The Programming Layer
Chapter 6 Problem Solving and Algorithm Design
Chapter 7 Low-Level Programming Languages
Chapter 8 High-Level Programming Languages
Chapter 9 Abstract Data Types and Algorithms
The Operating Systems Layer
Chapter 10 Operating Systems
Chapter 11 File Systems and Directories
The Applications Layer
Chapter 12 Information Systems
Chapter 13 Artificial Intelligence
Chapter 14 Simulation and Other Applications
The Communications Layer
Chapter 15 Networks
Chapter 16 The World Wide Web
In Conclusion
Chapter 17 Limitations of Computing
NellDale计算机科学领域广受推崇的教育家. 在得克萨斯大学奥斯丁分校执教的25年中, 她编写了20多本计算机科学方面的本科生教材. 她于得克萨斯大学奥斯丁分校获得了数学硕士学位以及计算机科学博士学位. 由于对计算机科学教学领域的突出贡献, 1996年她获得了ACMSIGCSE计算机科学教育杰出贡献奖.
John Lewis计算机科学领域著名的教育家和作家. 他编写的Java软件及程序设计教材非常畅销. 他于弗吉尼亚理工大学获得硕士及博士学位, 并任教于维拉诺瓦大学计算机科学系. 执教期间他获奖无数, 研究方向包括面向对象技术. 多媒体以及软件工程.
Choice of Topics
In putting together the outline of topics for this CS0 text, we used many sources. We looked at course catalogue descriptions, book outlines, and administered an email questionnaire designed to find what you, our colleagues, thought should be included in such a course. We asked you and ourselves to make the following three lists.
· Please list four topics that you feel students should master in a CSO course if this is the only computer science course they will take during their college experience.
· Please list four topics that you would like students entering your CS1 course to have mastered.
· Please list four additional topics that you wouJd like your CS1 students to be familiar with.
The strong consensus that emerged from the intersections of these sources formed the working outline for this book. Students who master this material before taking CS1 have a strong foundation upon which to continue in computer science. Although our intention was to write a CS0 text, our reviewers have pointed out that the material also forms a strong breadth-first background that can serve as a companion to a programming-language introduction to computer science.
Rationale for Organization
In Chapter 1, we present the history of hardware and software, showing how a computer system is like an onion. The computer with its machine language forms the heart of the onion, and layers of software and more sophisticated hardware have been added around this heart layer by layer. First came machine language. Higher level languages such as FORTRAN, Lisp, Pascal, C, C++, and Java, followed in parallel with the ever-increasing understanding of the programming process using such tools as top-down design and object-oriented design. Our understanding of the role of abstract
data types and their implementations matured. The operating system with its resource-management techniques, including files on ever larger, faster secondary storage media, developed to surround and manage these programs. The next layer is composed of sophisticated general-purpose and special-purpose software systems that overlay the operating system. These powerful programs were stimulated by the parallel theoretical work in computer science, which made such programs possible. The final layer is made up of networks and network software--all the tools needed for computers to communicate with one another. The Internet and the World Wide Web put the finishing touches to this layer.
As these layers have grown over time, the user has become more and more insulated from the computer system's hardware. Each of these layers provides an abstraction of the computing system beneath it. As each layer has evolved, users of the new layer have joined with users of inner layers to create a very large work force in the high-tech sector of our economy. This book is designed to provide an overview of the layers, introducing the underlying hardware and software technologies, in order to give the students an appreciation and understanding of all aspects of computing systems.
Having used history to describe the formation of the onion from the inside out, we were faced with a design choice: We could look at each layer in depth from the inside out or the outside in. The outside-in approach is very tempting. We could peel the layers off one at a time, moving from the most abstract layer to the concrete machine. However, research has shown that students understand concrete examples more easily than abstract ones even when the students themselves are abstract thinkers. Thus, we have chosen to begin with the concrete machine and examine the layers in the order in which they were created, trusting that a thorough understanding of one layer makes the transition to the next abstraction easier for the students.
Changes in the Second Edition
The first edition of a completely new book is lille a shake down cruise of a new ship. If the design is good, only minor problems occur that need tweaking. As a book--or ship--gets older, future editions may call for a major overhaul. Fortunately our readers have declared the design of this book to be stable, requiring only a few changes in this revision.
We have updated some of the biographies, replaced "old" tidbits with new ones, and made the Ethical Issues sections current. We will point out the content changes in the Chapter Synopsis.
In addition to content changes, we have made a major change in the Exercises, where we have broken the questions into two types: subjective and objective. Many educators have felt that objective exercises--multiple choice, true/false, and fill in the blank--are a copout. However, according to the Division of Measurement and Evaluation of the University of Illinois, subjective and objective test items'can measure similar content or learning objectives. According to two research studies made forty-two years apart, students respond almost identically to essay and objective test items covering the same content.
Thus, we have decided to include a mix of subjective and objective questions. Each chapter will have a selection of multiple choice and true/false questions, as well as short answer questions and problems to solve. For large classes, this allows the instructor to quickly create quizzes that can be graded on scantron sheets.
Synopsis
Chapter 1 lays the groundwork as described in the previous section. Chapters 2 and 3 step back and examine a layer that is embodied in the physical hardware. We call the layer the information layer, and it reflects how information is represented in the computer. Chapter 2 covers the binary number system and its relationship to other number systems such as decimal, the one we humans use on a daily basis. Chapter 3 investigates how we take the myriad types of information we manage--numbers, text, images, audio, and video-and represent them in a binary format. Converting the decimal part of a number to binary, and a slightly expanded discussion of the MP3 audio format, have been added in this edition.
Chapters 4 and 5 represent the hardware layer. Computer hardware includes devices such as transistors, gates, and circuits, all of which control the flow of electricity in fundamental ways. This core electronic circuitry gives rise to specialized hardware components such as the computer's Central Processing Unit (CPU) and memory. Chapter 4 covers gates and electronic circuits; Chapter 5 covers the hardware components of a computer and how they interact within a yon Neumann architecture. Chapter 5 has been changed in the following ways: the ad used in the lead has been updated, a distinction has been made between using powers of 10 when referring to speed, and powers of 2 when referring to memory size, and finally a section on touch screens has been added.
Chapters 6 through 9 cover aspects of the programming layer. Chapter 6 examines the problem-solving process, both human and computer related. George Polya's human problem-solving strategies guide the discussion. Examples of both top-down design and object-oriented design are presented. Chapter 7 covers the concepts of both machine language and assembly language using Pep/7, a simulated computer. Simple problems are translated into both machine code and assembly language. This chapter has been changed considerably. You, our readers, have suggested that the architecture be simplified and branching be introduced. Thus, only one register is used and two branching statements are presented. Chapter 8 covers the concepts of high-level programming languages. The concepts are illustrated in brief examples from four programming languages: Ada, VB.NET (Visual Basic 7), C++, and Java. Chapter 9 emphasizes the role of abstract data types and data structures in the programming process.
Chapters 10 and 11 cover the operating systems layer. Chapter 10 discusses the resource-management responsibilities of the operating system and presents some of the basic algorithms used to implement these tasks. Chapter 11 covers file systems, including what they are and how they are managed by the operating system. A discussion of device drivers has been added to Chapter 10.
Chapters 12 through 14 cover the applications layer. This layer is made up of the general-purpose and specialized application programs that are available for the public to use to solve problems. We divide this layer into the sub-disciplines of computer science upon which these programs are based. Chapter 12 examines information systems, Chapter 13 examines artificial intelligence, and Chapter 14 examines simulation, computer-aided design, and embedded systems.
Chapters 15 and 16 cover the communications layer. Chapter 15 presents the theoretical and practical aspects of computers communicating with each other. Chapter 16 covers the World Wide Web and its influence on life today. Sections on Search Engines and Instant Messaging have been added to Chapter 16, as well as a detailed discussion of cookies.
Chapters 2 through 16 are about what a computer can do, and how it does it. Chapter 17 concludes with adiscussion of the inherent limitations of computer hardware and software, and the problems that can and cannot be solved using a computer. Big-O notation is presented as a way to talk about the efficiency of algorithms so that the categories of algorithms can be discussed, and the Halting problem is presented to show that some problems are unsolvable.
The first and last chapters form bookends: Chapter I describes what a computing system is and Chapter 17 cautions what computing systems cannot do. The chapters in between look in depth at the layers that make up a computing system.
Why Net a Language?
The original outline for this book included an Introduction to Java chapter. Some of our reviewers were ambivalent about including a language at all; others wondered why Java was included and not C++. We decided to leave the choice to the user. Introductory chapters, formatted in a manner consistent with the design of this book, are available for Java, C++, and Pascal on the book's website and in hard-copy through Jones and Bartlett.
If the background of the students is such that they can master the introductory syntax and semantics of a language in addition to the background material in this book, just have the students download the appropriate chapter. As an alternative, one or both of these chapters can be used as enrichment for those students who have a stronger background.
Special Features
We have included three special features in this text in order to emphasize the history and breadth of computing as well as the moral obligations that come with new technology. Each chapter includes a short biography of someone who has made a significant contribution to computing as we know it. The people honored in these sections range from those who contributed to the information layer, such as George Boole and Ada Lovelace, to those who have contributed to the communications layer such as Doug Engelbart and Tim Berners-Lee. These biographies are designed to give the students a glimpse of history and of the men and women who contributed, and are contributing today, to the world of computing.
Our second feature, which we call callouts for lack of a better word, are side-bar sections that include interesting tidbits of information from the past, the present, and the future. They are garnered fromhistory, from today's newspapers, and from the experiences of the authors. These little vignettes are designed to amuse, to inspire, to intrigue, and, of course, to educate.
Our third feature is a section on Ethical Issues included in each chapter. These sections are designed to illustrate that along with the advantages of computing come responsibilities for the consequences of its use. Privacy, hacking, viruses, and free speech are among the topics discussed. At the end of each chapter's exercises, we include a selection of Thought Questions that cover these ethical issues as well as chapter content.
Color and Typography are Signposts
The layers into which the book is divided are color coded within the text. The chapter openers show the onion with the outside color showing the layer. That color is repeated in bars across the top of the pages of the layer. For each chapter, there is a slide on the side of the chapter opener, which shows where the chapter is within the layer. We have said that the first and last chapter form bookends. Although they are not 16art of the layers of the computing onion, we have given each a color, which shows up in the onion, the slide, and the color bar. Open the book anywhere and you can immediately tell where you are within the layers of computing.
To visually separate the abstract from the concrete in the programming layer, we use different fonts for algorithms (including identifiers in running text) and program code. You know at a glance whether the discussion is at the logical (algorithmic) level or at the programming language level. In order to clarify visually the distinction between an address and the contents of an address, we color addresses in red.
Color is especially useful in Chapter 7, Low-level Programming Languages. Instructions are color coded to differentiate the parts of an instruction. The operatign code is green, the register designation is clear, and the addressing mode specifier is blue. Operands are shaded gray. As in other chapters, addresses are in red.
Website
A website has been established for this text that includes a wealth of additional information. Additional biographies, more information about some of the callouts, and updates that relate to ethical issues are all available on the text's website.
Available for download are introductory chapters on Java, C++, and Pascal and the Pep/7 virtual machine.
Answers to approximately one third of the exercises are included in the text. The balance of the answers are on the website. A wide selection of other exercises using new and innovative formats is also available.
Acknowledgments
In addition to the reviewers provided by our publisher, several individuals reviewed special sections of the manuscript for us: Mary Dee Harris, Chris Edmondson-Yurkanan, and Ben Kuipers of the UT Department of Computer Science, Dave Stauffer at Penn State, John McCormick at the University of Northern Iowa, and Mike McMillan at Pulaski Technical College. Thanks friends and colleagues. Your comments and suggestions were invaluable.
We would also like to thank three of our users who have made such helpful suggestions while teaching from the first edition: Michael Goldwasse and Andrew Harrington at Loyola University, Chicago, and Daniel R. Collins at MassBay Community College, Wellesley, Massachusetts.
I must also thank my tennis buddies for keeping me fit, my bridge buddies for keeping my mind alert, and my family for keeping me grounded. ND