第一部分 基础篇 2
第1章 全景图 2
1.1 计算系统 2
1.1.1 计算系统的分层 3
1.1.2 抽象 4
1.2 计算的历史 5
1.2.1 计算硬件简史 5
1.2.2 计算软件简史 12
1.2.3 预言 16
1.3 计算工具与计算学科 16
小结 18
道德问题:the Tenth Strand 18
练习 19
思考题 20
第二部分 信息层 22
第2章 二进制数值与记数系统 22
2.1 数字与计算 22
2.2 位置记数法 23
2.2.1 二进制、八进制和十六进制 26
2.2.2 其他记数系统中的运算 27
2.2.3 以2的幂为基数的记数系统 27
2.2.4 把十进制数转换成其他数制的数 29
2.2.5 二进制数值与计算机 29
小结 31
道德问题:the Tenth Strand的知识单元 31
练习 31
思考题 34
第3章 数据表示法 35
3.1 数据与计算机 35
3.1.1 模拟数据与数字数据 36
3.1.2 二进制表示法 38
3.2 数字数据表示法 39
3.2.1 负数表示法 39
3.2.2 实数表示法 42
3.3 文本表示法 44
3.3.1 ASCII字符集 45
3.3.2 Unicode字符集 45
3.3.3 文本压缩 46
3.4 音频数据表示法 49
3.4.1 音频格式 50
3.4.2 MP3音频格式 50
3.5 图像与图形表示法 51
3.5.1 颜色表示法 51
3.5.2 数字化图像与图形 52
3.5.3 图形的矢量表示法 53
3.6 视频表示法 53
小结 55
道德问题:道德准则 55
练习 56
思考题 58
第三部分 硬件层 60
第4章 门和电路 60
4.1 计算机和电学 60
4.2 门 62
4.2.1 非门 62
4.2.2 与门 63
4.2.3 或门 63
4.2.4 异或门 64
4.2.5 与非门和或非门 64
4.2.6 门处理回顾 65
4.2.7 具有更多输入的门 66
4.3 门的构造 66
4.4 电路 67
4.4.1 组合电路 68
4.4.2 加法器 70
4.4.3 多路复用器 71
4.5 存储器电路 72
4.6 集成电路 73
4.7 CPU芯片 73
小结 74
道德问题:这些违反道德规范吗? 74
练习 75
思考题 77
第5章 计算部件 78
5.1 独立的计算机部件 78
5.2 存储程序的概念 82
5.2.1 冯·诺伊曼体系结构 82
5.2.2 读取-执行周期 87
5.2.3 RAM和ROM 88
5.2.4 二级存储设备 89
5.2.5 触摸屏 92
5.3 嵌入式系统 93
5.4 并行体系结构 94
5.4.1 并行计算 94
5.4.2 并行硬件分类 95
小结 96
道德问题:数字鸿沟 96
练习 97
思考题 98
第四部分 程序设计层 102
第6章 低级程序设计语言与伪代码 102
6.1 计算机操作 102
6.2 机器语言 103
6.3 一个程序实例 108
6.3.1 手工模拟 109
6.3.2 Pep/8模拟程序 109
6.4 汇编语言 111
6.4.1 Pep/8汇编语言 112
6.4.2 汇编器指令 112
6.4.3 Hello程序的汇编语言版本 113
6.4.4 一个新程序 113
6.4.5 具有分支的程序 115
6.4.6 具有循环的程序 116
6.5 表达算法 118
6.5.1 伪代码的功能 118
6.5.2 执行伪代码算法 121
6.5.3 写伪代码算法 123
6.5.4 翻译伪代码算法 124
6.6 测试 125
小结 126
道德问题:版权与软件盗版 127
练习 127
思考题 129
第7章 问题求解与算法设计 130
7.1 如何解决问题 130
7.1.1 提出问题 130
7.1.2 寻找熟悉的情况 132
7.1.3 分治法 132
7.1.4 算法 133
7.1.5 计算机问题求解过程 133
7.1.6 方法总结 134
7.1.7 测试算法 135
7.2 有简单参数的算法 135
7.2.1 带有选择的算法 135
7.2.2 带有循环的算法 136
7.3 复杂变量 139
7.3.1 数组 139
7.3.2 记录 140
7.4 搜索算法 141
7.4.1 顺序搜索 141
7.4.2 有序数组中的顺序搜索 141
7.4.3 二分检索 142
7.5 排序 144
7.5.1 选择排序 144
7.5.2 冒泡排序 145
7.5.3 插入排序 147
7.6 递归算法 147
7.6.1 子程序语句 148
7.6.2 递归阶乘 149
7.6.3 递归二分检索 149
7.6.4 快速排序 150
7.7 几个重要思想 153
7.7.1 信息隐蔽 153
7.7.2 抽象 154
7.7.3 事物命名 155
7.7.4 测试 155
小结 155
道德问题:开源软件 156
练习 157
思考题 159
第8章 抽象数据类型与子程序 160
8.1 抽象数据类型 160
8.2 栈 161
8.3 队列 161
8.4 列表 162
8.5 树 164
8.5.1 二叉树 164
8.5.2 二叉检索树 165
8.5.3 其他操作 169
8.6 图 169
8.6.1 创建图 171
8.6.2 图算法 171
8.7 子程序 176
8.7.1 参数传递 177
8.7.2 值参与引用参数 178
小结 180
道德问题:工作场所监视 180
练习 181
思考题 183
第9章 面向对象设计与高级程序设计语言 184
9.1 面向对象方法 184
9.1.1 面向对象 185
9.1.2 设计方法 185
9.1.3 一个计算机示例 187
9.2 翻译过程 189
9.2.1 编译器 190
9.2.2 解释器 190
9.3 程序设计语言的范型 192
9.3.1 命令式范型 192
9.3.2 声明式范型 193
9.4 高级程序设计语言的功能性 194
9.4.1 布尔表达式 194
9.4.2 数据归类 196
9.4.3 输入/输出结构 199
9.4.4 控制结构 200
9.5 面向对象语言的功能性 204
9.5.1 封装 204
9.5.2 类 205
9.5.3 继承 206
9.5.4 多态 207
9.6 过程设计与面向对象设计的区别 207
小结 208
道德问题:恶作剧与诈骗 209
练习 210
思考题 212
第五部分 操作系统层 214
第10章 操作系统 214
10.1 操作系统的角色 214
10.1.1 内存、进程与CPU管理 216
10.1.2 批处理 216
10.1.3 分时 217
10.1.4 其他OS要素 218
10.2 内存管理 218
10.2.1 单块内存管理 219
10.2.2 分区内存管理 220
10.2.3 页式内存管理 221
10.3 进程管理 223
10.3.1 进程状态 223
10.3.2 进程控制块 224
10.4 CPU调度 224
10.4.1 先到先服务 225
10.4.2 最短作业优先 226
10.4.3 轮询法 226
小结 227
道德问题:医疗隐私——健康保险携带与责任法案 228
练习 229
思考题 231
第11章 文件系统和目录 232
11.1 文件系统 232
11.1.1 文本文件和二进制文件 233
11.1.2 文件类型 233
11.1.3 文件操作 234
11.1.4 文件访问 235
11.1.5 文件保护 236
11.2 目录 237
11.2.1 目录树 237
11.2.2 路径名 239
11.3 磁盘调度 241
11.3.1 先到先服务磁盘调度法 242
11.3.2 最短寻道时间优先磁盘调度法 242
11.3.3 SCAN磁盘调度法 242
小结 243
道德问题:选择加入和选择退出 243
练习 244
思考题 246
第六部分 应用程序层 248
第12章 信息系统 248
12.1 信息管理 248
12.2 电子制表软件 249
12.2.1 电子数据表公式 250
12.2.2 循环引用 254
12.2.3 电子数据表分析 254
12.3 数据库管理系统 255
12.3.1 关系模型 256
12.3.2 关系 257
12.3.3 结构化查询语言 258
12.3.4 数据库设计 260
12.4 电子商务 261
小结 262
道德问题:从竞选来看政治与网络 262
练习 263
思考题 265
第13章 人工智能 266
13.1 思维机 266
13.1.1 图灵测试 267
13.1.2 AI问题的各个方面 268
13.2 知识表示 268
13.2.1 语义网 268
13.2.2 检索树 271
13.3 专家系统 273
13.4 神经网络 275
13.4.1 生物神经网络 275
13.4.2 人工神经网络 276
13.5 自然语言处理 277
13.5.1 语音合成 277
13.5.2 语音识别 278
13.5.3 自然语言理解 279
13.6 机器人学 280
13.6.1 感知-规划-执行范型 280
13.6.2 包孕体系结构 282
13.6.3 物理部件 283
小结 283
道德问题:从民众来看政治与网络 284
练习 284
思考题 286
第14章 模拟、图形学、游戏和其他应用 287
14.1 什么是模拟 287
14.1.1 复杂系统 287
14.1.2 模型 288
14.1.3 构造模型 288
14.2 特殊模型 289
14.2.1 排队系统 289
14.2.2 气象模型 292
14.2.3 计算生物学 295
14.2.4 其他模型 295
14.2.5 必要的计算能力 296
14.3 计算机图形学 296
14.3.1 光的工作原理 297
14.3.2 物体形状 298
14.3.3 光模拟 298
14.3.4 复杂对象的建模 299
14.3.5 让物体动起来 303
14.4 游戏 304
14.4.1 游戏的历史 304
14.4.2 创建虚拟世界 305
14.4.3 游戏设计与开发 305
14.4.4 游戏编程 306
小结 307
道德问题:游戏成瘾 307
练习 308
思考题 309
第七部分 通信层 312
第15章 网络 312
15.1 连网 312
15.1.1 网络的类型 313
15.1.2 Internet连接 315
15.1.3 包交换 317
15.2 开放式系统与协议 318
15.2.1 开放式系统 318
15.2.2 网络协议 319
15.2.3 TCP/IP 319
15.2.4 高层协议 320
15.2.5 MIME类型 321
15.2.6 防火墙 321
15.3 网络地址 322
15.4 云计算 324
小结 325
道德问题:社交网络的影响 326
练习 327
思考题 328
第16章 万维网 329
16.1 Web简介 329
16.1.1 搜索引擎 331
16.1.2 即时消息 331
16.1.3 博客 331
16.1.4 cookie 332
16.2 HTML 333
16.2.1 基本的HTML格式 335
16.2.2 图像与链接 335
16.2.3 HTML5 337
16.3 交互式网页 337
16.3.1 Java小程序 337
16.3.2 Java服务器页 338
16.4 XML 339
16.5 社交网络 341
小结 342
道德问题:赌博与互联网 344
练习 344
思考题 346
第17章 计算机安全 347
17.1 各级安全 347
17.2 阻止未授权访问 349
17.2.1 密码 349
17.2.2 验证码 351
17.2.3 指纹分析 352
17.3 恶意代码 352
17.3.1 杀毒软件 353
17.3.2 安全攻击 353
17.4 密码学 355
17.5 保护你的在线信息 357
17.5.1 安全与可移动设备 359
17.5.2 维基解密 359
小结 360
道德问题:博客 361
练习 362
思考题 363
第八部分 总结 366
第18章 计算的限制 366
18.1 硬件 366
18.1.1 算术运算的限制 366
18.1.2 部件的限制 370
18.1.3 通信的限制 371
18.2 软件 372
18.2.1 软件的复杂度 372
18.2.2 当前提高软件质量的方法 373
18.2.3 臭名昭著的软件错误 376
18.3 问题 377
18.3.1 算法比较 377
18.3.2 图灵机 382
18.3.3 停机问题 384
18.3.4 算法分类 386
小结 387
道德问题:Therac-25灾难剖析 387
练习 388
思考题 389
参考文献 390
索引 396