第0章 导引 1
0.1 算法的作用 1
0.2 计算机器的由来 3
0.3 算法的科学 7
0.4 抽象 8
0.5 学习纲要 9
0.6 社会影响 11
社会议题 11
课外阅读 13
第1章 数据存储 14
1.1 位和它们的存储 14
1.1.1 布尔运算 14
1.1.2 门和触发器 16
1.1.3 其他存储技术 19
1.1.4 十六进制记数法 19
1.2 主存储器 22
1.2.1 存储器结构 22
1.2.2 存储器容量的度量 23
1.3 大容量存储器 24
1.3.1 磁盘 25
1.3.2 光盘 26
1.3.3 磁带 27
1.3.4 文件存储和检索 28
1.4 用位模式表示信息 30
1.4.1 文本的表示 30
1.4.2 数值的表示 31
1.4.3 图像的表示 32
1.4.4 声音的表示 33
*1.5 二进制系统 35
1.5.1 二进制记数法 35
1.5.2 二进制加法 37
1.5.3 二进制中的小数 38
*1.6 整数的储存 40
1.6.1 二进制补码记数法 40
1.6.2 二进制余码记数法 43
*1.7 小数的储存 45
1.7.1 浮点记数法 46
1.7.2 截断误差 48
*1.8 数据压缩 50
1.8.1 通用数据压缩技术 50
1.8.2 图像的压缩 53
*1.9 通信差错 54
1.9.1 奇偶校验位 55
1.9.2 差错纠正码 56
本章复习题 58
社会议题 64
课外阅读 65
第2章 数据操作 66
2.1 计算机体系结构 66
2.2 机器语言 69
2.2.1 指令系统 69
2.2.2 示例性的机器语言 71
2.3 程序的执行 74
2.3.1 程序执行的一个例子 75
2.3.2 程序与数据 78
*2.4 算术/逻辑指令 81
2.4.1 逻辑运算 81
2.4.2 循环移位和移位运算 82
2.4.3 算术运算 84
2.5 与其他设备的通信 85
2.5.1 通信与控制器 85
2.5.2 数据通信速率 88
*2.6 其他体系结构 90
2.6.1 流水线 90
2.6.2 多处理器计算机 91
本章复习题 92
社会议题 99
课外阅读 100
第3章 操作系统 101
3.1 操作系统的发展 101
3.2 操作系统的体系结构 104
3.2.1 软件综述 105
3.2.2 操作系统的组件 106
3.2.3 系统启动 109
3.3 协调机器的活动 110
3.3.1 进程的概念 110
3.3.2 进程管理 111
*3.4 处理进程间的竞争 113
3.4.1 信标 113
3.4.2 死锁 115
*3.5 安全性 117
本章复习题 119
社会议题 122
课外阅读 123
第4章 组网和因特网 124
4.1 网络基础 124
4.1.1 网络分类 124
4.1.2 客户/服务器模式 126
4.1.3 分布式系统 129
4.2 因特网 130
4.2.1 因特网体系结构 130
4.2.2 因特网编址 131
4.2.3 电子邮件 133
4.2.4 文件传输协议 134
4.2.5 远程登录 134
4.3 万维网 135
4.3.1 万维网实现 136
4.3.2 HTML. 138
4.3.3 XML. 140
4.3.4 动态网页 142
*4.4 网络协议 144
4.4.1 传输权的控制 144
4.4.2 因特网软件分层方法 146
4.4.3 TCP/IP协议组 150
4.5 安全性 151
本章复习题 154
社会议题 156
课外阅读 158
第5章 算法 159
5.1 算法的概念 159
5.1.1 简单的回顾 159
5.1.2 算法的形式定义 160
5.1.3 算法的抽象本质 161
5.2 算法的表示 162
5.2.1 原语 162
5.2.2 伪代码 164
5.3 算法的发现 169
5.3.1 问题求解的艺术 169
5.3.2 跨入门槛 171
5.4 循环结构 175
5.4.1 顺序查找算法 176
5.4.2 循环控制 177
5.4.3 插入排序算法 180
5.5 递归结构 185
5.5.1 二分查找算法 185
5.5.2 递归控制 190
5.6 有效性和正确性 191
5.6.1 算法的有效性 192
5.6.2 软件检验 195
本章复习题 200
社会议题 207
课外阅读 208
第6章 程序设计语言 209
6.1 历史回顾 209
6.1.1 早几代语言 209
6.1.2 独立于机器, 超越机器 212
6.1.3 程序设计范型 213
6.2 传统的程序设计概念 217
6.2.1 变量和数据类型 218
6.2.2 数据结构 220
6.2.3 常量和直接量 222
6.2.4 赋值语句 223
6.2.5 控制语句 224
6.2.6 注解 226
6.3 过程单元 227
6.3.1 过程 227
6.3.2 参数 229
6.3.3 函数 232
6.4 语言实现 234
6.4.1 翻译过程 234
6.4.2 连接和装入 240
6.4.3 软件开发包 241
*6.5 面向对象程序设计 243
6.5.1 类和对象 243
6.5.2 构造函数 245
6.5.3 其他特色 246
*6.6 并发活动的程序设计 248
*6.7 说明型程序设计 251
6.7.1 逻辑演绎 251
6.7.2 Prolog. 254
本章复习题 256
社会议题 262
课外阅读 263
第7章 软件工程 265
7.1 软件工程学科 265
7.2 软件生命周期 267
7.2.1 周期是个整体 267
7.2.2 传统的开发阶段 268
7.2.3 当今趋势 270
7.3 模块化 271
7.3.1 模块实现 271
7.3.2 耦合 273
7.3.3 内聚性 275
7.4 设计方法论 277
7.4.1 自顶向下和自底向上 277
7.4.2 设计模式 277
7.4.3 开放源开发技术 278
7.5 行业工具 280
7.6 测试 283
7.7 文档编制 284
7.8 软件所有权和责任 286
本章复习题 288
社会议题 291
课外阅读 292
第8章 数据抽象 293
8.1 数据结构基础 293
8.1.1 基本数据结构 293
8.1.2 抽象 294
8.1.3 静态结构和动态结构 295
8.1.4 指针 296
8.2 数据结构的实现 297
8.2.1 同构型数组的存储 297
8.2.2 列表的存储 299
8.2.3 堆栈和队列的存储 301
8.2.4 二叉树的存储 304
8.2.5 数据结构的操作 306
8.3 一个简短案例的研究 308
8.4 定制的数据类型 313
8.4.1 用户自定义数据类型 313
8.4.2 抽象数据类型 314
*8.5 类和对象 316
*8.6 机器语言中的指针 318
本章复习题 320
社会议题 327
课外阅读 328
第9章 数据库系统 329
9.1 数据库原理 329
9.1.1 模式的作用 329
9.1.2 数据库管理系统 331
9.1.3 数据库模型 332
9.2 关系模型 333
9.2.1 关系设计的问题 333
9.2.2 关系运算 337
9.2.3 SQL. 341
*9.3 面向对象数据库 343
*9.4 维护数据库的完整性 345
9.4.1 提交/转返协议 346
9.4.2 锁定 347
*9.5 传统的文件结构 348
9.5.1 顺序文件 348
9.5.2 索引文件 351
9.5.3 散列文件 352
9.6 数据挖掘 355
9.7 数据库技术的社会影响 357
本章复习题 359
社会议题 365
课外阅读 366
第10章 人工智能 367
10.1 智能与机器 367
10.1.1 智能动原体 367
10.1.2 性能还是模拟 369
10.1.3 图灵测试 370
10.2 理解图像 371
10.3 推理 374
10.3.1 产生式系统 374
10.3.2 搜索树 376
10.3.3 试探法 378
10.4 人工神经网络 383
10.4.1 基本特性 384
10.4.2 一个特定应用 386
10.4.3 联想记忆 389
10.5 遗传算法 393
10.6 其他研究领域 396
10.6.1 语言处理 396
10.6.2 机器人学 399
10.6.3 数据库系统 399
10.6.4 专家系统 402
10.7 后果的思考 403
本章复习题 405
社会议题 411
课外阅读 412
第11章 计算理论 413
11.1 函数及其计算 413
11.2 图灵机 415
11.2.1 图灵机原理 415
11.2.2 丘奇-图灵论题 417
11.3 万用程序设计语言 418
11.3.1 Bare Bones(基本要素)语言 419
11.3.2 用Bare Bones语言编程 421
11.3.3 Bare Bones的万用性 422
11.4 一个不可计算的函数 424
11.4.1 停机问题 424
11.4.2 停机问题的不可解性 426
11.5 问题的复杂性 429
11.5.1 问题复杂性的度量 429
11.5.2 多项式问题与非多项式问题 432
11.5.3 不确定多项式问题 435
*11.6 公钥密码学 437
11.6.1 模表示法 438
11.6.2 RSA公钥密码学 439
本章复习题 441
社会议题 446
课外阅读 447
附录A ASCII代码 448
附录B 处理补码的电路 449
附录C 一个简单的机器语言 452
附录D 高级语言程序示例 454
附录E 迭代结构与递归结构的等价 461
附录F 问题与练习答案 463