第1章 计算与计算思维 1
1.1 计算需求与计算技术的演化 2
1.1.1 远古时代的原始计算方法 2
1.1.2 机械式计算技术 6
1.1.3 机电式计算技术 7
1.1.4 电子计算技术 8
1.1.5 并行与分布式计算 11
1.1.6 云计算与海计算 12
1.1.7 未来的计算 13
1.2 科学研究的三大方法——理论、实验与计算 14
1.3 计算(机)科学与计算学科 15
1.4 计算思维 18
1.4.1 什么是计算思维? 18
1.4.2 狭义计算思维与广义计算思维 19
1.4.3 计算思维之应用 21
阅读材料:计算机发展史大事记 24
第2章 充满智慧与挑战的计算理论(技术)基础 32
2.1 独辟蹊径的数据表示方法 32
2.1.1 数据的表示——弃“十”选“二”的神来之笔 32
2.1.2 有限的字长与大小不一的数据 39
2.1.3 符号的表示——编码 41
2.1.4 鸿沟与代价 42
2.2 从逻辑学到逻辑电路——思维可计算吗 47
2.2.1 生活中的“逻辑问题” 47
2.2.2 逻辑与思维 48
2.2.3 数理逻辑 52
2.2.4 逻辑推理与人工智能 55
2.2.5 逻辑门电路 57
2.3 “九九归一”的加法运算 58
2.3.1 加法运算及其加法器的设计 58
2.3.2 补码运算——把减法当加法做 61
2.4 计算的本质——图灵机及其计算能力 62
2.4.1 图灵机模型 62
2.4.2 图灵机的工作原理 64
2.4.3 图灵机的计算能力 67
2.5 计算机的构造——冯诺依曼机及其工作原理 72
2.5.1 冯诺依曼型计算机的组成和工作原理 73
2.5.2 思想与技术的演化 75
2.5.3 冯诺依曼型计算机的特点及其局限性 78
2.6 计算技术的开拓与发展 79
2.7 什么都能计算吗——难题及其可计算性 82
2.7.1 难题何其多 83
2.7.2 可计算性与计算复杂性 86
2.7.3 难题大挑战及其科学意义 88
【阅读材料】计算机系统(PC机)的硬件组成 92
第3章 计算思维之方法学 99
3.1 问题求解过程 99
3.1.1 人类解决客观世界问题的思维过程 99
3.1.2 借助于计算机的问题求解过程 101
3.1.3 两种问题求解过程的对比 104
3.2 数学模型——问题的抽象表示 104
3.3 数据存储结构 108
3.3.1 顺序存储结构 108
3.3.2 链式存储结构 109
3.3.3 索引存储结构 111
3.3.4 散列存储结构 111
3.4 客观世界到计算机世界的映射方法 112
3.4.1 面向过程的结构化设计方法学 112
3.4.2 面向对象程序设计方法学 116
3.5 时间与空间及其相互转换 122
3.6 抽象 124
3.6.1 什么是抽象(Abstraction) 124
3.6.2 计算学科中的抽象 128
3.6.3 抽象的层次性 128
3.6.4 程序中的抽象 131
3.6.5 抽象与模型 133
3.6.6 抽象与计算机语言 134
3.7 串行与并行 137
3.8 局部化与信息隐藏 139
3.8.1 局部化 139
3.8.2 信息隐藏(Information hiding) 140
3.9 精确、近似与模糊 141
3.10 折中与中庸之道 142
【阅读材料】计算机软件及其软件系统 144
第4章 计算思维之算法基础 149
4.1 算法 149
4.1.1 什么是算法 149
4.1.2 算法的性质 152
4.1.3 算法的种类 153
4.1.4 算法的表示(描述) 154
4.1.5 算法与程序 159
4.1.6 算法的比较与分析 161
4.2 算法设计的基本思想与方法 164
4.2.1 穷举法(也称为枚举法,Enumeration) 164
4.2.2 递推法(Recurrence) 166
4.2.3 递归法 168
4.2.4 回溯法(Backtracking)* 173
4.2.5 分治法(Divide and Conquer) 178
4.2.6 仿生法——蚁群算法(Ant colony optimization,ACO)* 181
4.2.7 并行算法* 184
4.2.8 算法设计与计算思维 186
4.3 几个常用的经典算法 186
4.3.1 累加和、连乘积与最大(小)值 187
4.3.2 查找 188
4.3.3 排序 191
4.3.4 逻辑分析与推理 201
阅读材料:MATLAB问题表示与计算 207
第5章 面向计算之问题求解思想与方法 213
5.1 大海捞针的搜索引擎 213
5.1.1 网页的自动下载与存储 214
5.1.2 网页索引与匹配 215
5.1.3 网页排序方法 218
5.2 瞒天过海的密码技术 225
5.2.1 有趣的对称加密技术 226
5.2.2 难解的非对称加密技术 229
5.2.3 数字签名及其应用 232
5.3 令人期待的人工智能 235
5.3.1 人工智能时代正在快步走来 235
5.3.2 人工智能方法论 237
5.3.3 人工智能应用 241
5.3.4 展望未来,人工智能会颠覆一切 242
5.4 不可思议的自纠错技术 243
5.4.1 面临的问题与挑战 243
5.4.2 重复传输 244
5.4.3 冗余编码 246
5.4.4 校验 247
5.4.5 错误定位 250
5.4.6 推广应用 252
5.5 柳暗花明的自然语言处理 254
5.5.1 美好愿景 254
5.5.2 原始的“逐词替换” 254
5.5.3 基于“规则”的方法 256
5.5.4 从“规则”到“统计” 259
5.5.5 基于统计的机器翻译 260
5.6 削尖脑袋的数据压缩技术 262
5.6.1 无损压缩及其方法 262
5.6.2 有损压缩之“thinking” 275
5.6.3 展望未来 276
阅读材料:计算机网络 277
第6章 计算思维之程序设计基础 280
6.1 数据的类型与本质 280
6.1.1 我们熟悉的数与数据 280
6.1.2 计算机世界中的数据 282
6.1.3 数据的类型与本质 283
6.2 变量的特定含义 285
6.2.1 “先定义,后使用” 286
6.2.2 变量得有自己“好听”的名字 287
6.2.3 变量是有类型的 287
6.2.4 变量的作用域 288
6.2.5 变量的生命周期 289
6.3 有穷与无穷 290
6.3.1 数据的有穷性 291
6.3.2 程序的有穷性 291
6.4 程序的基本控制结构 292
6.4.1 顺序结构 292
6.4.2 条件选择结构 293
6.4.3 循环结构 293
6.5 问题求解的本质过程 294
6.6 效率与可读性 295
6.7 程序的构造特性 297
6.8 上下文无关文法 298
6.9 二义性 298
6.10 严谨性 299
阅读材料:计算机语言概述 300
第7章 基于计算之问题求解的思想和方法 304
7.1 重复迭代,寻根问底——方程求根 304
7.1.1 二分法(Bisection Method) 304
7.1.2 简单迭代法 306
7.1.3 牛顿法 308
7.1.4 其他求根方法 310
7.2 有限划分,无限逼近——定积分的计算 312
7.2.1 问题求解的基本思路与方法 312
7.2.2 求解算法 315
7.3 千年求精,万年求真——求解圆周率π 316
7.3.1 关于圆周率的计算 316
7.3.2 圆周率的计算史 317
7.3.3 圆周率的计算方法 319
7.3.4 圆周率的计算永无止境 322
7.3.5 研究圆周率的意义 322
7.4 大事化小,小事化了——有限元计算 324
7.4.1 有限元方法的诞生 324
7.4.2 什么是有限元方法 324
7.4.3 有限元方法的基本思想 325
7.4.4 有限元法求解问题的步骤 326
7.4.5 有限元方法的应用 326
7.4.6 有限元方法中的计算思维 329
7.5 万事俱备,不欠东风——数值天气预报 330
7.5.1 天气预报的发展 331
7.5.2 现代数值天气预报原理 333
7.5.3 天气预报对计算技术永无止境的需求 336
7.6 赌城之名,绝妙之法——蒙特卡罗法 337
7.6.1 蒙特卡罗方法导引 337
7.6.2 蒙特卡罗方法的基本思想与过程 338
7.6.3 蒙特卡罗方法的应用与分析 339
7.7 精确制导,百步穿杨——巡航导弹制导系统 341
7.7.1 制导方法分类 342
7.7.2 “战斧”式巡航导弹 344
7.8 红楼遗梦,作者存疑——《红楼梦》作者是谁 345
阅读材料:Python语言 346
第8章 从“计算”到“文化” 354
8.1 文化与计算文化 354
8.2 计算文化的本质特征 355
8.3 计算文化与传统文化 357
阅读材料:一路走来的“云计算” 359
附录A ASCII码字符集 363
附录B 几种常用进位制数值对照表 365
参考文献 366
· · · · · · (
收起)