描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302511298丛书名: 21世纪高等学校计算机专业实用规划教材
本书可作为普通高等学校计算机科学与技术、网络工程、软件工程及相关专业的英语教材或计算机导论课程的双语教材,也可作为从事相关行业的科研与工程技术人员的参考用书。
1.1 History of Computer Science 1
1.2 Areas of Computer Science 4
1.2.1 Theoretical Computer Science 4
1.2.2 Applied Computer Science 6
1.3 Is Computer Science Science? 7
1.3.1 Common Understandings of Science 7
1.3.2 Internal Disagreement 10
1.3.3 Computer Science Thrives on Relationships 10
1.3.4 Validating Computer Science Claims 11
1.4 The Future of Computer Science 12
1.4.1 Introduction 12
1.4.2 Innovative Research Projects 14
1.4.3 Theoretical Foundation 17
1.4.4 An Interview 18
1.5 Key Terms and Review Questions 22
References 25
Chapter2 Computer Architecture and Networks 27
2.1 Introduction 27
2.1.1 Computer Architecture 27
2.1.2 Design Goals 28
2.2 Computer System 29
2.2.1 Hardware 29
2.2.2 Software 31
2.3 Computer Networking 33
2.3.1 Network Hardware 34
2.3.2 Network Protocols 35
2.3.3 Internet and TCP/IP 37
2.4 Wireless Network 40
2.4.1 Wireless LAN Networking Basics 40
2.4.2 Mobile Network 41
2.4.3 Wireless Sensor Network 42
2.5 Key Terms and Review Questions 46
References 51
Chapter3 Operating System 52
3.1 Definition and Function 52
3.1.1 What is Operating System? 52
3.1.2 Functions of Operating System 53
3.1.3 Types of Operating Systems 55
3.2 Tasks of an Operating System 57
3.2.1 Processor Management 57
3.2.2 Process Management 59
3.2.3 Memory and Storage Management 60
3.2.4 Device Management 61
3.2.5 Application Interface 62
3.2.6 User Interface 63
3.3 Examples of Popular Modern Operating Systems 65
3.3.1 UNIX and UNIX-like Operating Systems 65
3.3.2 Microsoft Windows 67
3.4 Comparison of Windows and UNIX Environments 69
3.5 Key Terms and Review Questions 82
References 84
Chapter4 Algorithms, Data Structures and Software Engineering 86
4.1 Algorithm 86
4.1.1 Introduction 86
4.1.2 Definition of Algorithms 87
4.1.3 Specifying Algorithms 89
4.1.4 Examples — Sorting Algorithms 90
4.1.5 Algorithm Analysis 98
4.2 Data Structures 100
4.2.1 Definition 100
4.2.2 Types of Data Structure 102
4.3 Programming 106
4.3.1 Evolution of Programming Language 106
4.3.2 Basic Components and Structure of a Program 107
4.3.3 Object-oriented Programming 112
4.4 Software Engineering 116
4.4.1 Life Cycle of Software 116
4.4.2 Software Development Models 118
4.4.3 Software Quality Characteristics 121
4.5 Key Terms and Review Questions 123
References 127
Chapter 5 Databases and Information Retrieval 129
5.1 Database System 129
5.1.1 Database 129
5.1.2 Relational Database 130
5.1.3 Database Management System 133
5.1.4 SQL 135
5.2 Information Retrieval 136
5.2.1 Introduction 136
5.2.2 An Example of Information Retrieval 138
5.2.3 Open Source IR System 143
5.2.4 Performance Measure 144
5.3 Web Search Basics 145
5.3.1 Background and History 145
5.3.2 Web Search Features 147
5.3.3 Web Crawling and Indexes 150
5.4 Key Terms and Review Questions 152
References 155
Chapter 6 Artificial Intelligence 156
6.1 Introduction 156
6.1.1 History of AI 156
6.1.2 Research Branches of AI 157
6.2 Turing Test 161
6.2.1 Introduction 161
6.2.2 Alan Turing 161
6.2.3 Inception of the Turing Test 162
6.2.4 Problems/Difficulties with the Turing Test 163
6.2.5 The Current State of the Turing Test 165
6.2.6 Artificial Intelligence Computer System Passes Visual Turing Test 166
6.3 Knowledge Representation and Reasoning 168
6.3.1 How to Represent Knowledge 168
6.3.2 Representation 169
6.3.3 Reasoning about Knowledge 170
6.3.4 KBS 170
6.3.5 MYCIN—A Case Study 172
6.4 Case-based Reasoning 173
6.4.1 Introduction 173
6.4.2 Fundamental of Case-based Reasoning 174
6.4.3 The CBR Process 175
6.4.4 Example-based Machine Translation 177
6.5 Robotics 180
6.5.1 Components of Robot 180
6.5.2 Control System 184
6.5.3 Environmental Interaction and Navigation 185
6.5.4 Top 10 Humanoid Robots 187
6.6 Computer Vision 192
6.6.1 Brief Introduction 192
6.6.2 Tasks of Computer Vision 194
6.6.3 An Example — Facial Recognition System 196
6.7 Existential Risk from Artificial General Intelligence 198
6.7.1 Overview 198
6.7.2 Risk Scenarios 199
6.7.3 Different Reactions on the Thesis 203
6.8 Key Terms and Review Questions 204
References 208
Chapter 7 Computer Graphics and Visualization 210
7.1 Computer Graphics 210
7.1.1 What Is Computer Graphics 210
7.1.2 Types of Graphics 211
7.1.3 Techniques Used in CG 214
7.1.4 Computer-aided Design 217
7.1.5 3D Modeling 219
7.2 Virtual Reality 221
7.2.1 What Is Virtual Reality? 222
7.2.2 Types of Virtual Reality 223
7.2.3 Equipment Used in Virtual Reality 225
7.2.4 Applications of Virtual Reality 227
7.2.5 Pros and Cons of Virtual Reality 228
7.3 Data Visualization 229
7.3.1 Characteristics of Effective Graphical Displays 230
7.3.2 Quantitative Messages 230
7.3.3 Visual Perception and Data Visualization 231
7.3.4 Examples of Diagrams Used for Data Visualization 232
7.4 Key Terms and Review Questions 237
References 240
Chapter 8 Human-Computer Interaction 241
8.1 Human-Computer Interaction 241
8.1.1 History of HCI 241
8.1.2 From Cabal to Community 242
8.1.3 Beyond the Desktop 243
8.1.4 The Task-artifact Cycle 245
8.1.5 A Caldron of Theory 246
8.1.6 Implications of HCI for Science, Practice, and Epistemology 247
8.2 User Interface Design Adaptation 248
8.2.1 Introduction 248
8.2.2 User Interface/Task/Platform Relations 251
8.2.3 Authoring Multi-Device Interactive Applications 251
8.2.4 Adaptation Rules 252
8.2.5 Model-based UI Design in Multi-Device Contexts 254
8.2.6 Vocal Interfaces 256
8.2.7 Multimodal User Interfaces 256
8.3 HRI 258
8.3.1 Introduction of HRI 258
8.3.2 HRI — About (not) Romanticizing Robots 260
8.3.3 HRI — There Is No Such Thing as “Natural Interaction” 261
8.3.4 HRI — There Is a Place For Non-humanoid Robots 263
8.4 Key Terms and Review Questions 265
References 267
Chapter 9 Computer Security 269
9.1 Computer Security Issues 269
9.1.1 Basic Security Concepts 269
9.1.2 Threats and Attacks 271
9.1.3 A Model for Network Security 275
9.2 Security Countermeasure 277
9.3 Cryptography 282
9.3.1 Basic Concepts 283
9.3.2 History of Cryptography 283
9.3.3 Modern Cryptography 287
9.4 Top 10 Cyber-security Issues in 2016 290
9.5 Cyberwar 292
9.5.1 A Cybersecurity Wargame Scenario 292
9.5.2 The First Casualty of Cyberwar Is The Web 293
9.5.3 Building Digital Armies 294
9.5.4 How Cyber Weapons Work 296
9.5.5 When Is a Cyberwar Not a Cyberwar? 297
9.5.6 The Targets in Cyberwar 298
9.5.7 Cyberwar: Coming to a Living Room Near You? 298
9.6 Key Terms and Review Questions 299
References 303
Chapter 10 Latest Progresses in Computer Science 304
10.1 Quantum Information Science 304
10.1.1 Quantum Computing 304
10.1.2 Quantum Cryptography 308
10.2 Deep Learning 311
10.2.1 Introduction 311
10.2.2 Historical Trends in Deep Learning 315
10.3 Cloud Computing 319
10.3.1 The Vision of Cloud Computing 320
10.3.2 Defining a Cloud 322
10.3.3 A Closer Look 323
10.3.4 The Cloud Computing Reference Model 325
10.4 Big Data 326
10.4.1 Let the Data Speak 326
10.4.2 Definition and Characteristic of Big Data 329
10.4.3 Value of Big Data 330
10.4.4 Risk of Big Data 332
10.5 Key Terms and Review Questions 333
References 337
基础性和趣味性原则:每一部分内容介绍计算机科学一个学科领域的科普性内容,避免出现较深奥和晦涩的概念及理论,易于读者阅读和理解。
广泛性和知识性原则:力求覆盖计算机科学相关领域内容,高度概括每个领域的发展历史、研究内容和发展情况,使不同层次的读者通过阅读和学习可以对该领域有全面、客观的了解。
可靠性和实效性原则:素材取自国内外最近几年计算机科学各个领域的最新教材、专著、论文、学者访谈、百科等可靠来源,使读者可以了解计算机科学与技术的最新进展。
本教材每章内容相对独立,教师可根据实际教学需要确定重点授课内容。本书第1章概括计算机科学的发展历史、学科分支及未来发展方向;第2章集合了计算机体系结构、 硬件、互联网、无线网方面的基础知识;第3章介绍操作系统的常识,包括操作系统的定义、任务及常用操作系统的案例及对比;第4章介绍算法、数据结构和软件工程方面的知识;第5章集合了关系数据库、查询语言、信息检索和网页检索的基础概念和常识;第6章为人工智能相关领域的知识,包括图灵测试、知识表达和推理、机器人、计算机视觉、人工智能可能存在的风险等;第7章为计算图形学领域的分支和应用,包括计算机辅助设计、3D建模、虚拟现实、数据可视化等;第8章为人机交互技术方面的相关知识,包含人机交互的发展、人机界面的设计原理和规则等;第9章为计算机安全相关知识,包括基本概念、安全措施、密码学及网络战争等内容;第10章介绍计算机科学与技术领域的一些最新进展,包括量子计算、深度学习、云计算和大数据方面的内容。本书不仅是一本计算机专业英语的教材,也是对计算机专业知识的一个概览,具有很强的科学性、知识性、趣味性。
本书的第1~4章主要由刘学副教授编写;第5章和第6章主要由李晓峰教授编写;第7、8、10章及附录词汇部分主要由戚文静教授编写和整理;第9章和第10章由李国文博士编写;最后由戚文静完成对本书的统稿;另外,刘宇祺、王亦佳等同学参与了本书稿的录入和校对工作,赵敬教授对本书的编写提出了很多宝贵意见。
另外,在清华大学出版社编辑的大力支持和协助下,本书得以在较短时间内出版和发行,在此对他们的工作表示诚挚的感谢。同时,感谢戚文静家人对我的理解、支持和关爱,使得本书稿能够顺利完成。
教材中难免有不足和疏漏之处,恳请广大读者提出宝贵意见和建议,以便进一步完善本教材。
戚文静
2018年夏于映雪湖
3.1 Definition and Function
When you turn on your computer, it’s nice to think that you’re in control. There’s the trusty computer mouse, which you can move anywhere on the screen, summoning up your music library or Internet browser at the slightest whim. Although it’s easy to feel like a director in front of your desktop or laptop, there’s a lot going on inside, and the real man behind the curtain handling the necessary tasks is the operating system.
3.1.1 What is Operating System?
The operating system (OS) is the most important program that runs on a computer. Every general-purpose computer must have an operating system to run other programs and applications. Computer operating systems perform basic tasks (see Fig.3-1), such as recognizing input from the keyboard, sending output to the display screen, keeping track of files and directories on the disk, and controlling peripheral devices such as printers. In short, an operating system enables user interaction with computer systems by acting as an interface between users or application programs and the computer hardware.
Fig.3-1 Basic tasks of operating system
Most desktop or laptop PCs come pre-loaded with Microsoft Windows. Macintosh computers come pre-loaded with Mac OS X. Many corporate servers use the Linux or UNIX operating systems. The operating system (OS) is the first thing loaded onto the computer — without the operating system, a computer is useless.
More recently, operating systems have started to pop up in smaller computers as well. If you like to tinker with electronic devices, you’re probably pleased that operating systems can now be found on many of the devices we use every day, from cell phones to wireless access points. The computers used in these little devices have gotten so powerful that they can now actually run an operating system and applications. The computer in a typical modern cell phone is now more powerful than a desktop computer from 20 years ago, so this progression makes sense and is a natural development.
The purpose of an operating system is to organize and control hardware and software so that the device it lives in behaves in a flexible but predictable way. In this article, we’ll tell you what a piece of software must do to be called an operating system, show you how the operating system in your desktop computer works and give you some examples of how to take control of the other operating systems around you.
It is vital to understand that an operating system (OS) is just a program—a very large, very complex program, but still just a program. The OS provides support for the loading and execution of other programs (which we will refer to below as “application programs”), and the OS will set things up so that it has some special privileges which user programs don’t have, but in the end, the OS is simply a program.
3.1.2 Functions of Operating System
At the simplest level, an operating system does two things:
(1) It manages the hardware and software resources of the system. In a desktop computer, these resources include such things as the processor, memory, disk space and more (on a cell phone, they include the keypad, the screen, the address book, the phone dialer, the battery and the network connection).
(2) It provides a stable, consistent way for applications to deal with the hardware without having to know all the details of the hardware.
(3-1) The first task, managing the hardware and software resources, is very important, as various programs and input methods compete for the attention of the central processing unit (CPU) and demand memory, storage and input/output (I/O) bandwidth for their own purposes. In this capacity, the operating system plays the role of the good parent, making sure that each application gets the necessary resources while playing nicely with all the other applications, as well as husbanding the limited capacity of the system to the greatest good of all the users and applications.
The second task, providing a consistent application interface, is especially important if there is to be more than one of a particular type of computer using the operating system, or if the hardware making up the computer is ever open to change. A consistent application program interface (API) allows a software developer to write an application on one computer and have a high level of confidence that it will run on another computer of the same type, even if the amount of memory or the quantity of storage is different on the two machines.
Even if a particular computer is unique, an operating system can ensure that applications continue to run when hardware upgrades and updates occur. This is because the operating system — not the application — is charged with managing the hardware and the distribution of its resources. One of the challenges facing developers is keeping their operating systems flexible enough to run hardware from the thousands of vendors manufacturing computer equipment. Today’s systems can accommodate thousands of different printers, disk drives and special peripherals in any possible combination.
What does it mean for a program to be “running” anyway? Recall that the CPU is constantly performing its fetch/execute/fetch/execute/… cycle. For each fetch, it fetches whatever instruction the Program Counter (PC) is pointing to. If the PC is currently pointing to an instruction in your program, then your program is running! Each time an instruction of your program executes, the circuitry in the CPU will update the PC, having it point to either the next instruction (the usual case) or an instruction located elsewhere in your program (in the case of jumps).
The point is that the only way your program can stop running is the PC changed to point to another program, say the OS. How might this happen? Other than cases involving bugs in your program, there are only two ways this can occur:
Your program can voluntarily relinquish the CPU to the OS. It does this via a system call, which is a call to some function in the operating system that provides some useful service.
For example, suppose the C source file from which a.out was compiled had a call to scanf(). The scanf() function is a C library function, which was linked into a.out during compilation of a.out. But scanf() itself calls read(), a function within the OS. So, when a.out reaches the scanf() call, that will result in a call to the OS, but after the OS does the read from the keyboard, the OS will return to a.out.
The other possibility is that a hardware interrupt occurs. This is a signal—a physical pulse of current along an interrupt-request line in the bus—from some input/output (I/O) device such as the keyboard to the CPU. The circuitry in the CPU is designed to then jump to a place in memory which we designated upon bootup of the machine. This will be a place in the OS, so the OS will now run. The OS will attend to the I/O device, e.g. record the keystroke in the case of the keyboard, and then return to the interrupted program.
Note in our keystroke example that the keystroke may not have been made by you. While your program is running, some other user of the machine may hit a key. The interrupt will cause your program to be suspended; the OS will run the device driver for whichever device caused the interrupt — the keyboard, if the person was sitting at the console of the machine, or the network interface card, if the person was logged in remotely, say via telnet — which will record the keystroke in the buffer belonging to that other user, and the OS will do IRET, causing your program to resume.
So, when your program is running, it is king. The OS has no power to stop it. The only ways your program can stop running is if it voluntarily does so or is forced to stop by action occurring at an I/O device.
3.1.3 Types of Operating Systems
Here is an overview of the different types of operating systems.
1. Real-time Operating System
It is a multitasking operating system that aims at executing real-time applications. Real-time operating systems often use specialized scheduling algorithms so that they can achieve a deterministic nature of behavior. The main object of real-time operating systems is their quick and predictable response to events. They either have an event-driven design or a time-sharing one. An event-driven system switches between tasks based of their priorities while time-sharing operating systems switch tasks based on clock interrupts. Windows CE, OS-9, Symbian and LynxOS are some of the commonly known real-time operating systems.
2. Multi-user and Single-user Operating Systems
Computer operating systems of this type allow multiple users to access a computer system simultaneously. Time-sharing systems can be classified as multi-user systems as they enable a multiple user access to a computer through time sharing. Single-user operating systems, as opposed to a multi-user operating system, are usable by only one user at a time. Being able to have multiple accounts on a Windows operating system does not make it a multi-user system. Rather, only the network administrator is the real user. But for a UNIX-like operating system, it is possible for two users to log in at a time and this capability of the OS makes it a multi-user operating system. Windows 95, Windows 2000, Mac OS and Palm OS are examples of single-user operating systems. UNIX and OpenVMS are examples of multi-user operating systems.
3. Multi-tasking and Single-tasking Operating Systems
When a single program is allowed to run at a time, the system is grouped under the single-tasking system category, while in case the operating system allows for execution of multiple tasks at a time, it is classified as a multi-tasking operating system. Multi-tasking can be of two types namely, pre-emptive or co-operative. In pre-emptive multitasking, the operating system slices the CPU time and dedicates one slot to each of the programs. UNIX-like operating systems such as Solaris and Linux support pre-emptive multitasking. If you are aware of the multi-threading terminology, you can consider this type of multi-tasking as similar to interleaved multi-threading. Cooperative multitasking is achieved by relying on each process to give time to the other processes in a defined manner. This kind of multi-tasking is similar to the idea of block multi-threading in which one thread runs till it is blocked by some other event. MS Windows prior to Windows 95 used to support cooperative multitasking. Palm OS for Palm handheld is a single-task operating system. Windows 9x support multi-tasking. DOS Plus is a relatively less-known multi-tasking operating system. It can support the multi-tasking of a maximum of four CP/M-86 programs.
4. Distributed Operating System
An operating system that manages a group of independent computers and makes them appear to be a single computer is known as a distributed operating system. The development of networked computers that could be linked and made to communicate with each other, gave rise to distributed computing. Distributed computations are carried out on more than one machine. When computers in a group work in cooperation, they make a distributed system. Amoeba, Plan9 and LOCUS (developed during the 1980s) are some examples of distributed operating systems.
5. Embedded System
The operating systems designed for being used in embedded computer systems are known as embedded operating systems. They are designed to operate on small machines like PDAs with less autonomy. They are able to operate with a limited number of resources. They are very compact and extremely efficient by design. Windows CE, FreeBSD and Minix 3 are some examples of embedded operating systems. The use of Linux in embedded computer systems is referred to as Embedded Linux.
6. Mobile Operating System
Though not a functionally distinct kind of operating system, mobile OS is definitely an important mention in the list of operating system types. A mobile OS controls a mobile device and its design supports wireless communication and mobile applications. It has built-in support for mobile multimedia formats. Tablet PCs and smartphones run on mobile operating systems. Blackberry OS, Google’s Android and Apple’s iOS are some of the most known names of mobile operating systems.
7. Batch Processing and Interactive Systems
Batch processing refers to execution of computer programs in “batches” without manual intervention. In batch processing systems, programs are collected, grouped and processed on a later date. There is no prompting the user for inputs as input data are collected in advance for future processing. Input data are collected and processed in batches, hence the name batch processing. IBM’s z/OS has batch processing capabilities. As against this, interactive operating requires user intervention. The process cannot be executed in the user’s absence.
8. Online and Offline Processing
In online processing of data, the user remains in contact with the computer and processes are executed under control of the computer’s central processing unit. When processes are not executed under direct control of the CPU, the processing is referred to as offline. Let’s take the example of batch processing. Here, the batching or grouping of data can be done without user and CPU intervention; it can be done offline. But the actual process execution may happen under direct control of the processor, that is online.
Operating systems contribute to simplifying human interaction with the computer hardware. They are responsible for linking application programs with the hardware, thus achieving easy user access to computers. Ever imagined a computer without an OS? It wouldn’t be so user-friendly then!
评论
还没有评论。