内容简介
计算机科学的全景式展现。
首屈一指的导论性教材。
经典传承,新知荟萃。
被哈佛大学、加州大学等多所大学采用为教材。
本书多年来一直深受世界各国高校师生的欢迎,是哈佛大学、麻省理工学院、普林斯顿大学、加州大学伯克利分校等著名大学对应课程的首选教材,对我国的高校相关教学也产生了广泛的影响。本书以历史的眼光,从发展的角度、当前的技术水平以及现阶段的研究方向等几个方面,全景式描述了计算机科学各个子学科的主要研究领域。在内容编排上,本书用算法、数据抽象等核心思想贯穿各个主题,合理地兼顾了学科广度和主题深度,并且充分体现了各个主题的历史背景、发展历程和新的技术趋势,培养读者的大局观,为今后深入学习其他计算机专业课程打下坚实的基础。
◎编辑推荐
本书深入浅出,图文并茂,内容由具体到抽象逐步推进。各章自然连贯又各自独立,可根据教学需要调整学习顺序。此外,本书习题丰富,并且每一章后都附有与本章内容相关的社会问题供读者思考和讨论,这些都很好地体现了作者强调培养学生分析问题能力的教学理念。第13版的主要特点是补充了Python语言的相关内容,比先前版本更注重编程。此外,几乎每一章都能看到对前一版对应章节的修订、更新和扩展。
本书非常适合作为高等院校计算机及相关专业本科生教材,也适合有意在计算机方面发展的非计算机专业读者作为入门参考书。
◎内容简介:
本书是计算机科学概论课程的经典教材,全书对计算机科学做了百科全书式的精彩阐述,充分展现了计算机科学的历史背景、发展历程和新的技术趋势。书中首先介绍信息编码及计算机体系结构的基本原理,进而介绍操作系统和组网以及因特网的相关内容,接着探讨算法、程序设计语言及软件工程,然后讨论数据抽象和数据库方面的问题,讲述图形学的主要应用以及人工智能,最后以计算理论的介绍结束全书。本书在内容编排上由具体到抽象逐步推进,便于教学安排,每一个主题自然而然地引导出下一个主题。此外,书中还包含大量的图、表和示例,有助于读者对知识的了解与把握。第13版对前一版进行了全面的修正和更新,还新增了Python相关的内容,并且继续使用第12版引入的Python代码示例和类Python伪代码。
本书非常适合作为高等院校计算机以及相关专业本科生教材,也适合有意在计算机方面发展的非计算机专业读者作为入门参考书。
作者简介
J.GlennBrookshear世界知名的计算机科学教育家。他在1975年获得新墨西哥州立大学博士后,创办了Marquette大学的计算机科学学位项目,并在该校任教至今。他的主要研究方向是计算理论。除了本书之外,他还著有《Theory of Computationr:Formal Languages, Automata, and Complexity》。
目录
目 录第0章 绪论1
0.1算法的作用2
0.2计算的历史3
0.3学习大纲7
0.4计算机科学的首要主题8
0.4.1算法8
0.4.2抽象9
0.4.3创新10
0.4.4数据10
0.4.5程序设计10
0.4.6因特网11
0.4.7影响11
社会问题12
课外阅读13
第1章 数据存储14
1.1位和位存储15
1.1.1布尔运算15
1.1.2门和触发器16
1.1.3十六进制记数法19
1.2主存储器20
1.2.1存储器结构20
1.2.2存储器容量的度量21
1.3海量存储器22
1.3.1磁系统22
1.3.2光系统24
1.3.3闪存驱动器25
1.4用位模式表示信息26
1.4.1文本的表示26
1.4.2数值的表示27
1.4.3图像的表示28
1.4.4声音的表示29
*1.5二进制系统31
1.5.1二进制记数法31
1.5.2二进制加法32
1.5.3二进制中的分数33
*1.6整数的存储34
1.6.1二进制补码记数法35
1.6.2二进制补码记数法中的加法36
1.6.3溢出问题37
1.6.4余码记数法37
*1.7分数的存储39
1.7.1浮点记数法39
1.7.2截断误差40
*1.8数据与程序设计43
1.8.1Python入门43
1.8.2你好,Python43
1.8.3变量44
1.8.4运算符和表达式45
1.8.5货币转换46
1.8.6调试47
*1.9数据压缩48
1.9.1通用的数据压缩技术48
1.9.2图像压缩50
1.9.3音频和视频压缩51
*1.10通信差错52
1.10.1奇偶校验位52
1.10.2纠错码53
复习题55
社会问题58
课外阅读59
第2章 数据操控60
2.1计算机体系结构61
2.1.1CPU基础知识61
2.1.2存储程序概念62
2.2机器语言63
2.2.1指令系统63
2.2.2数据传输类64
2.2.3算术/逻辑类64
2.2.4控制类64
2.2.5Vole:一种演示用的机器语言65
2.3程序执行68
2.3.1程序执行的一个例子69
2.3.2程序与数据71
*2.4算术/逻辑指令73
2.4.1逻辑运算73
2.4.2循环移位运算及移位运算74
2.4.3算术运算75
*2.5与其他设备通信76
2.5.1控制器的作用76
2.5.2直接存储器存取77
2.5.3握手78
2.5.4流行的通信媒介78
2.5.5通信速率79
*2.6数据操控编程80
2.6.1逻辑运算和移位运算80
2.6.2控制结构81
2.6.3函数82
2.6.4输入和输出83
2.6.5马拉松训练助手85
*2.7其他体系结构87
2.7.1流水线87
2.7.2多处理器机器87
复习题88
社会问题93
课外阅读94
第3章 操作系统95
3.1操作系统的历史96
3.2操作系统的体系结构99
3.2.1软件概述99
3.2.2操作系统组件100
3.2.3系统启动102
3.3协调机器的活动104
3.3.1进程的概念104
3.3.2进程管理104
*3.4处理进程间的竞争106
3.4.1信号量106
3.4.2死锁108
3.5安全性110
3.5.1来自外部的攻击110
3.5.2来自内部的攻击111
复习题113
社会问题115
课外阅读116
第4章 组网及因特网117
4.1网络基础118
4.1.1网络分类118
4.1.2协议119
4.1.3组合网络121
4.1.4进程间通信的方法122
4.1.5分布式系统124
4.2因特网124
4.2.1因特网体系结构125
4.2.2因特网编址127
4.2.3因特网应用129
4.3万维网132
4.3.1万维网实现133
4.3.2HTML134
4.3.3XML136
4.3.4客户端活动和服务器端活动137
*4.4因特网协议138
4.4.1因特网软件的分层方法138
4.4.2TCP/IP协议簇141
*4.5简单的客户机服务器143
4.6网络安全146
4.6.1攻击的形式146
4.6.2防护和对策148
4.6.3密码学149
4.6.4网络安全的法律途径151
复习题153
社会问题155
课外阅读156
第5章 算法158
5.1算法的概念159
5.1.1非正式的回顾159
5.1.2算法的正式定义159
5.1.3算法的抽象本质160
5.2算法的表示161
5.2.1原语161
5.2.2伪代码163
5.3算法的发现167
5.3.1问题求解的艺术167
5.3.2迈出第一步169
5.4迭代结构172
5.4.1顺序搜索算法172
5.4.2循环控制173
5.4.3插入排序算法177
5.5递归结构180
5.5.1二分搜索算法181
5.5.2递归控制185
5.6效率和正确性187
5.6.1算法效率187
5.6.2软件验证190
复习题194
社会问题198
课外阅读199
第6章 程序设计语言200
6.1历史回顾201
6.1.1早期程序设计语言201
6.1.2机器无关和超越机器无关203
6.1.3程序设计范型204
6.2传统的程序设计概念208
6.2.1变量和数据类型209
6.2.2数据结构210
6.2.3常量和字面量211
6.2.4赋值语句212
6.2.5控制语句213
6.2.6注释216
6.3过程单元218
6.3.1函数218
6.3.2参数219
6.3.3有返回值的函数222
6.4语言实现224
6.4.1翻译过程224
6.4.2软件开发包230
6.5面向对象程序设计231
6.5.1类和对象231
6.5.2构造器233
6.5.3附加特性234
*6.6程序设计并发活动236
*6.7说明性程序设计238
6.7.1逻辑推演238
6.7.2Prolog240
复习题242
社会问题245
课外阅读246
第7章 软件工程247
7.1 软件工程学科248
7.2 软件生命周期250
7.2.1 周期是个整体250
7.2.2 传统的开发阶段251
7.3 软件工程方法学253
7.4 模块化254
7.4.1 模块式实现255
7.4.2 耦合257
7.4.3 内聚258
7.4.4 信息隐藏258
7.4.5 组件259
7.5 行业工具260
7.5.1 较老的工具261
7.5.2 统一建模语言261
7.5.3 设计模式265
7.6 质量保证266
7.6.1 质量保证的范围266
7.6.2 软件测试267
7.7 文档268
7.8 人机界面269
7.9 软件所有权和责任271
复习题273
社会问题275
课外阅读276
第8章 数据抽象277
8.1基本数据结构278
8.1.1 数组和聚合278
8.1.2 列表、栈和队列278
8.1.3 树280
8.2 相关概念281
8.2.1 再谈抽象281
8.2.2 静态结构与动态结构282
8.2.3 指针282
8.3 数据结构的实现283
8.3.1存储数组283
8.3.2存储聚合285
8.3.3 存储列表286
8.3.4 存储栈和队列289
8.3.5 存储二叉树291
8.3.6 操控数据结构293
8.4 一个简短的案例研究294
8.5 定制的数据类型298
8.5.1 用户定义的数据类型298
8.5.2 抽象数据类型299
8.6 类和对象301
*8.7 机器语言中的指针302
复习题304
社会问题308
课外阅读309
第9章 数据库系统310
9.1 数据库基础311
9.1.1 数据库系统的重要性311
9.1.2 模式的作用313
9.1.3 数据库管理系统313
9.1.4 数据库模型314
9.2 关系模型315
9.2.1 关系设计中的问题315
9.2.2 关系运算318
9.2.3 SQL321
*9.3 面向对象数据库323
*9.4 维护数据库的完整性325
9.4.1 提交/回滚协议326
9.4.2 锁定326
*9.5 传统的文件结构328
9.5.1 顺序文件328
9.5.2 索引文件330
9.5.3 散列文件331
9.6 数据挖掘334
9.7 数据库技术的社会影响335
复习题337
社会问题340
课外阅读341
第10章 计算机图形学342
10.1 计算机图形学的范围343
10.2 3D图形学概述344
10.3 建模346
10.3.1 单个物体的建模346
10.3.2 整个场景的建模350
10.4 渲染351
10.4.1 光-表面相互作用351
10.4.2 裁剪、扫描转换和隐藏面消除353
10.4.3 着色356
10.4.4 渲染-流水线硬件357
*10.5 处理全局光照359
10.5.1 光线跟踪359
10.5.2 辐射度360
10.6 动画361
10.6.1 动画基础361
10.6.2 运动学和动力学362
10.6.3 动画制作过程363
复习题364
社会问题366
课外阅读366
第11章 人工智能367
11.1智能与机器368
11.1.1智能体368
11.1.2研究方法369
11.1.3图灵测试370
11.2感知371
11.2.1理解图像371
11.2.2语言处理373
11.3推理376
11.3.1产生式系统376
11.3.2搜索树378
11.3.3启发式379
11.4其他研究领域384
11.4.1知识的表达和处理384
11.4.2学习386
11.4.3遗传算法387
11.5人工神经网络388
11.5.1基本特性388
11.5.2训练人工神经网络390
11.6机器人学392
11.7后果的思考395
复习题396
社会问题399
课外阅读401
第12章 计算理论402
12.1函数及其计算403
12.2图灵机404
12.2.1图灵机的原理405
12.2.2丘奇-图灵论题407
12.3通用程序设计语言407
12.3.1BareBones语言408
12.3.2用BareBones语言编程409
12.3.3BareBones的通用性410
12.4一个不可计算的函数411
12.4.1停机问题411
12.4.2停机问题的不可解性413
12.5问题的复杂性415
12.5.1问题复杂性的度量416
12.5.2多项式问题与非多项式问题419
12.5.3NP问题420
*12.6公钥密码学423
12.6.1模表示法424
12.6.2RSA公钥密码学424
复习题426
社会问题429
课外阅读429
附录A ASCII码431
附录B 用于处理二进制补码表示的电路432
附录C Vole:一种简单的机器语言434
附录D 高级程序设计语言436
附录E 迭代结构与递归结构的等价性438
索引440
······