第一部分 基础篇第1章 全景图 1
1.1 计算系统 1
1.1.1 计算系统的分层 2
1.1.2 抽象 3
1.2 计算的历史 5
1.2.1 计算硬件的简史 5
1.2.2 计算软件的简史 11
1.2.3 预言 15
1.3 计算工具和计算学科 15
小结 16
道德问题:数字化分裂 17
练习 17
思考题 18
第二部分 信息层第2章 二进制数值和记数系统 21
2.1 数字和计算 21
2.2 位置记数法 22
2.2.1 二进制、八进制和十六进制 25
2.2.2 其他记数系统中的运算 26
2.2.3 以2的幂为基数的记数系统 26
2.2.4 把十进制数转换成其他数制的数 28
2.2.5 二进制数值和计算机 29
小结 30
道德问题:计算机和国家安全 30
练习 31
思考题 32
第3章 数据表示法 34
3.1 数据和计算机 34
3.1.1 模拟数据和数字数据 35
3.1.2 二进制表示法 36
3.2 数字数据的表示法 38
3.2.1 负数表示法 38
3.2.2 实数表示法 40
3.3 文本表示法 42
3.3.1 ASCII字符集 43
3.3.2 Unicode字符集 44
3.3.3 文本压缩 44
3.4 音频信息表示法 47
3.4.1 音频格式 49
3.4.2 MP3音频格式 49
3.5 图像和图形的表示法 49
3.5.1 颜色表示法 49
3.5.2 数字化图像和图形 50
3.5.3 图形的矢量表示法 52
3.6 视频表示法 53
小结 53
道德问题:MGM Studios公司和Grokster有限公司 54
练习 55
思考题 57
第三部分 硬件层第4章 门和电路 59
4.1 计算机和电学 59
4.2 门 61
4.2.1 非门 61
4.2.2 与门 62
4.2.3 或门 62
4.2.4 异或门 63
4.2.5 与非门和或非门 63
4.2.6 门处理回顾 64
4.2.7 具有更多输入的门 64
4.3 门的构造 65
4.4 电路 66
4.4.1 组合电路 67
4.4.2 加法器 69
4.4.3 多路复用器 71
4.5 存储器电路 71
4.6 集成电路 72
4.7 CPU芯片 73
小结 73
道德问题:电子邮件隐私权 73
练习 74
思考题 76
第5章 计算部件 77
5.1 独立的计算机部件 77
5.2 存储程序的概念 79
5.2.1 冯·诺伊曼体系结构 80
5.2.2 读取-执行周期 84
5.2.3 RAM和ROM 85
5.2.4 二级存储设备 86
5.2.5 触摸屏 89
5.3 非冯·诺伊曼体系结构 90
小结 91
道德问题:生物信息学研究和deCODE Genetics公司的案例 92
练习 93
思考题 94
第四部分 程序设计层第6章 问题求解和算法设计 95
6.1 问题求解 95
6.1.1 如何解决问题 96
6.1.2 应用Polya的问题求解策略 99
6.2 算法 99
6.2.1 计算机问题求解 99
6.2.2 执行算法 101
6.2.3 开发算法 102
6.3 伪代码 102
6.3.1 执行一个伪代码算法 103
6.3.2 伪代码的功能 104
6.3.3 伪代码示例 106
6.4 自顶向下设计方法 108
6.4.1 一个通用的实例 109
6.4.2 一个计算机实例 111
6.4.3 方法总结 113
6.4.4 测试算法 114
6.5 面向对象方法 114
6.5.1 面向对象 114
6.5.2 设计方法 115
6.5.3 一个通用的实例 117
6.5.4 一个计算机实例 118
6.6 几个重要思想 120
6.6.1 信息隐蔽 120
6.6.2 抽象 121
6.6.3 事物命名 122
6.6.4 程序设计语言 122
6.6.5 测试 123
小结 123
道德问题:计算机专业人员许可 124
练习 124
思考题 126
第7章 低级程序设计语言 127
7.1 计算机操作 127
7.2 抽象的分层 128
7.3 机器语言 128
7.4 一个程序实例 133
7.4.1 问题和算法 133
7.4.2 程序 134
7.5 汇编语言 137
7.5.1 Pep/7汇编语言 138
7.5.2 伪代码操作 138
7.5.3 “Hello”程序的汇编语言版本 139
7.5.4 一个新程序 140
7.5.5 具有分支的程序 142
7.5.6 具有循环的程序 144
7.6 其他重要思想 145
7.6.1 抽象 145
7.6.2 测试 146
7.6.3 测试计划实现 146
小结 147
道德问题:软件盗版和版权 148
练习 148
思考题 150
第8章 高级程序设计语言 151
8.1 翻译过程 151
8.1.1 编译器 151
8.1.2 解释器 152
8.2 程序设计语言的范型 154
8.3 命令式语言的功能性 155
8.3.1 布尔表达式 155
8.3.2 强类型化 156
8.3.3 输入/输出结构 159
8.3.4 控制结构 160
8.3.5 复合数据类型 172
8.4 面向对象语言的功能性 175
8.4.1 封装 175
8.4.2 继承 176
8.4.3 多态性 176
小结 177
道德问题:开源软件的发展 178
练习 179
思考题 180
第9章 抽象数据类型和算法 181
9.1 抽象数据类型 181
9.2 实现 182
9.2.1 基于数组的实现 182
9.2.2 链式实现 183
9.3 列表 185
9.3.1 列表的基本操作 185
9.3.2 其他列表操作 188
9.4 排序 188
9.4.1 选择排序 189
9.4.2 冒泡排序 190
9.4.3 快速排序 191
9.5 二分检索法 195
9.6 栈和队列 196
9.6.1 栈 197
9.6.2 队列 198
9.6.3 实现 198
9.7 树 199
9.7.1 二叉树 199
9.7.2 二叉检索树 200
9.7.3 其他操作 203
9.7.4 图 204
9.8 程序设计库 204
小结 205
道德问题:使用计算机的恶作剧和欺诈行为 205
练习 206
思考题 208
第五部分 操作系统层第10章 操作系统 209
10.1 操作系统的角色 209
10.1.1 内存、进程和CPU管理 211
10.1.2 批处理 211
10.1.3 分时操作 212
10.1.4 其他OS要素 213
10.2 内存管理 213
10.2.1 单块内存管理 214
10.2.2 分区内存管理 215
10.2.3 页式内存管理 216
10.3 进程管理 218
10.3.1 进程状态 218
10.3.2 进程控制块 219
10.4 CPU调度 219
10.4.1 先到先服务 220
10.4.2 最短作业优先 220
10.4.3 循环调度法 221
小结 222
道德问题:数字版权管理和关于Sony公司的根目录案件的争论 223
练习 223
思考题 226
第11章 文件系统和目录 227
11.1 文件系统 227
11.1.1 文本文件和二进制文件 228
11.1.2 文件类型 228
11.1.3 文件操作 229
11.1.4 文件访问 230
11.1.5 文件保护 231
11.2 目录 232
11.2.1 目录树 232
11.2.2 路径名 234
11.3 磁盘调度 236
11.3.1 先到先服务磁盘调度法 237
11.3.2 最短寻道时间优先磁盘调度法 237
11.3.3 SCAN磁盘调度法 238
小结 238
道德问题:垃圾邮件 239
练习 240
思考题 241
第六部分 应用程序层第12章 信息系统 243
12.1 信息管理 243
12.2 电子制表软件 244
12.2.1 电子数据表公式 246
12.2.2 循环引用 249
12.2.3 电子数据表分析 249
12.3 数据库管理系统 250
12.3.1 关系模型 251
12.3.2 关系 253
12.3.3 结构化查询语言 254
12.3.4 数据库设计 255
12.4 信息安全 256
12.4.1 机密性、完整性和可用性 256
12.4.2 密码学 257
小结 259
道德问题:加密 260
练习 261
思考题 262
第13章 人工智能 263
13.1 思维机 263
13.1.1 图灵测试 264
13.1.2 AI问题的各个方面 265
13.2 知识表示 265
13.2.1 语义网 266
13.2.2 检索树 268
13.3 专家系统 270
13.4 神经网络 272
13.4.1 生物神经网络 272
13.4.2 人工神经网络 273
13.5 自然语言处理 274
13.5.1 语音合成 275
13.5.2 语音识别 276
13.5.3 自然语言理解 276
13.6 机器人学 277
13.6.1 感知-规划-执行范型 277
13.6.2 包孕体系结构 280
13.6.3 物理部件 281
小结 281
道德问题:HIPAA(健康保险携带和责任法案) 282
练习 283
思考题 284
第14章 模拟、图形学和其他应用程序 285
14.1 什么是模拟 285
14.1.1 复杂系统 286
14.1.2 模型 286
14.1.3 构造模型 286
14.1.4 排队系统 287
14.1.5 气象模型 290
14.1.6 其他模型 293
14.1.7 必要的计算能力 293
14.2 计算机图形学 294
14.2.1 光的工作原理 295
14.2.2 物体形状 296
14.2.3 光模拟 296
14.2.4 复杂对象的建模 297
14.2.5 让物体动起来 302
14.3 嵌入式系统 303
14.4 电子商务 303
14.5 计算机安全 304
14.5.1 恶意代码 305
14.5.2 安全攻击 305
小结 307
道德问题:入侵大学的计算机系统,查询录取程序中某人的录取状态 307
练习 308
思考题 309
第七部分 通信层第15章 网络 311
15.1 连网 311
15.1.1 网络的类型 312
15.1.2 Internet连接 314
15.1.3 包交换 316
15.2 开放式系统和协议 317
15.2.1 开放式系统 317
15.2.2 网络协议 318
15.2.3 TCP/IP 318
15.2.4 高层协议 319
15.2.5 MIME类型 320
15.2.6 防火墙 320
15.3 网络地址 321
小结 323
道德问题:无所不在的计算 324
练习 325
思考题 326
第16章 万维网 327
16.1 Web简介 327
16.1.1 搜索引擎 329
16.1.2 即时消息 329
16.1.3 博客 329
16.1.4 cookie 330
16.2 HTML 330
16.2.1 基本的HTML格式 333
16.2.2 图像和链接 333
16.3 交互式Web页 335
16.3.1 Java小程序 335
16.3.2 Java服务器页 336
16.4 XML 337
小结 339
道德问题:写博客 340
练习 341
思考题 342
第八部分 总结 345
第17章 计算的限制 345
17.1 硬件 345
17.1.1 算术运算的限制 345
17.1.2 部件的限制 350
17.1.3 通信的限制 350
17.2 软件 351
17.2.1 软件的复杂度 352
17.2.2 当前提高软件质量的方法 352
17.2.3 臭名昭著的软件错误 355
17.3 问题 357
17.3.1 算法比较 357
17.3.2 图灵机 362
17.3.3 停机问题 364
17.3.4 算法分类 365
小结 367
道德问题:深度链接 367
练习 368
思考题 369
参考文献 370