计算机科学的全景式展现。
首屈一指的导论性教材。
经典传承,新知荟萃。
被哈佛大学、加州大学等多所大学采用为教材。
本书多年来一直深受世界各国高校师生的欢迎,是哈佛大学、麻省理工学院、普林斯顿大学、加州大学伯克利分校等著名大学对应课程的首选教材,对我国的高校相关教学也产生了广泛的影响。本书以历史的眼光,从发展的角度、当前的技术水平以及现阶段的研究方向等几个方面,全景式描述了计算机科学各个子学科的主要研究领域。在内容编排上,本书用算法、数据抽象等核心思想贯穿各个主题,合理地兼顾了学科广度和主题深度,并且充分体现了各个主题的历史背景、发展历程和新的技术趋势,培养读者的大局观,为今后深入学习其他计算机专业课程打下坚实的基础。
◎编辑推荐
本书深入浅出,图文并茂,内容由具体到抽象逐步推进。各章自然连贯又各自独立,可根据教学需要调整学习顺序。此外,本书习题丰富,并且每一章后都附有与本章内容相关的社会问题供读者思考和讨论,这些都很好地体现了作者强调培养学生分析问题能力的教学理念。第 13 版的主要特点是补充了 Python 语言的相关内容,比先前版本更注重编程。此外,几乎每一章都能看到对前一版对应章节的修订、更新和扩展。
本书非常适合作为高等院校计算机及相关专业本科生教材,也适合有意在计算机方面发展的非计算机专业读者作为入门参考书。
◎内容简介:
本书是计算机科学概论课程的经典教材,全书对计算机科学做了百科全书式的精彩阐述,充分展现了计算机科学的历史背景、发展历程和新的技术趋势。书中首先介绍信息编码及计算机体系结构的基本原理,进而介绍操作系统和组网以及因特网的相关内容,接着探讨算法、程序设计语言及软件工程,然后讨论数据抽象和数据库方面的问题,讲述图形学的主要应用以及人工智能,最后以计算理论的介绍结束全书。本书在内容编排上由具体到抽象逐步推进,便于教学安排,每一个主题自然而然地引导出下一个主题。此外,书中还包含大量的图、表和示例,有助于读者对知识的了解与把握。第13版对前一版进行了全面的修正和更新,还新增了Python相关的内容,并且继续使用第12版引入的Python代码示例和类Python伪代码。
本书非常适合作为高等院校计算机以及相关专业本科生教材,也适合有意在计算机方面发展的非计算机专业读者作为入门参考书。
......(更多)
J. Glenn Brookshear 世界知名的计算机科学教育家。他在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.1 Python入门 43
1.8.2 你好,Python 43
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.1 CPU基础知识 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.5 Vole:一种演示用的机器语言 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.2 HTML 134
4.3.3 XML 136
4.3.4 客户端活动和服务器端活动 137
*4.4 因特网协议 138
4.4.1 因特网软件的分层方法 138
4.4.2 TCP/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.2 Prolog 240
复习题 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 SQL 321
*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.1 Bare Bones语言 408
12.3.2 用Bare Bones语言编程 409
12.3.3 Bare Bones的通用性 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.3 NP问题 420
*12.6 公钥密码学 423
12.6.1 模表示法 424
12.6.2 RSA公钥密码学 424
复习题 426
社会问题 429
课外阅读 429
附录A ASCII码 431
附录B 用于处理二进制补码表示的电路 432
附录C Vole:一种简单的机器语言 434
附录D 高级程序设计语言 436
附录E 迭代结构与递归结构的等价性 438
索引 440
......(更多)
关于算法能力的研究,开创了今天计算机科学这门学科。
......(更多)