第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
· · · · · · (
收起)