
內容簡介
計算機科學的全景式展現。
首屈一指的導論性教材。
經典傳承,新知薈萃。
被哈佛大學、加州大學等多所大學采用為教材。
本書多年來一直深受世界各國高校師生的歡迎,是哈佛大學、麻省理工學院、普林斯頓大學、加州大學伯克利分校等著名大學對應課程的首選教材,對我國的高校相關教學也產生了廣泛的影響。本書以歷史的眼光,從發展的角度、當前的技術水平以及現階段的研究方向等幾個方麵,全景式描述了計算機科學各個子學科的主要研究領域。在內容編排上,本書用算法、數據抽象等核心思想貫穿各個主題,合理地兼顧了學科廣度和主題深度,並且充分體現了各個主題的歷史背景、發展歷程和新的技術趨勢,培養讀者的大局觀,為今後深入學習其他計算機專業課程打下堅實的基礎。
◎編輯推薦
本書深入淺出,圖文並茂,內容由具體到抽象逐步推進。各章自然連貫又各自獨立,可根據教學需要調整學習順序。此外,本書習題豐富,並且每一章後都附有與本章內容相關的社會問題供讀者思考和討論,這些都很好地體現了作者強調培養學生分析問題能力的教學理念。第13版的主要特點是補充了Python語言的相關內容,比先前版本更注重編程。此外,幾乎每一章都能看到對前一版對應章節的修訂、更新和擴展。
本書非常適合作為高等院校計算機及相關專業本科生教材,也適合有意在計算機方麵發展的非計算機專業讀者作為入門參考書。
◎內容簡介:
本書是計算機科學概論課程的經典教材,全書對計算機科學做了百科全書式的精彩闡述,充分展現了計算機科學的歷史背景、發展歷程和新的技術趨勢。書中首先介紹信息編碼及計算機體係結構的基本原理,進而介紹操作係統和組網以及因特網的相關內容,接著探討算法、程序設計語言及軟件工程,然後討論數據抽象和數據庫方麵的問題,講述圖形學的主要應用以及人工智能,最後以計算理論的介紹結束全書。本書在內容編排上由具體到抽象逐步推進,便於教學安排,每一個主題自然而然地引導出下一個主題。此外,書中還包含大量的圖、表和示例,有助於讀者對知識的了解與把握。第13版對前一版進行了全麵的修正和更新,還新增了Python相關的內容,並且繼續使用第12版引入的Python代碼示例和類Python偽代碼。
本書非常適合作為高等院校計算機以及相關專業本科生教材,也適合有意在計算機方麵發展的非計算機專業讀者作為入門參考書。
作者簡介
J.GlennBrookshear世界知名的計算機科學教育家。他在1975年獲得新墨西哥州立大學博士後,創辦了Marquette大學的計算機科學學位項目,並在該校任教至今。他的主要研究方向是計算理論。除了本書之外,他還著有《Theory of Computationr:Formal Languages, Automata, and Complexity》。
目錄
目 錄第0章 緒論1
0.1算法的作用2
0.2計算的歷史3
0.3學習大綱7
0.4計算機科學的首要主題8
0.4.1算法8
0.4.2抽象9
0.4.3創新10
0.4.4數據10
0.4.5程序設計10
0.4.6因特網11
0.4.7影響11
社會問題12
課外閱讀13
第1章 數據存儲14
1.1位和位存儲15
1.1.1布爾運算15
1.1.2門和觸發器16
1.1.3十六進製記數法19
1.2主存儲器20
1.2.1存儲器結構20
1.2.2存儲器容量的度量21
1.3海量存儲器22
1.3.1磁係統22
1.3.2光係統24
1.3.3閃存驅動器25
1.4用位模式表示信息26
1.4.1文本的表示26
1.4.2數值的表示27
1.4.3圖像的表示28
1.4.4聲音的表示29
*1.5二進製係統31
1.5.1二進製記數法31
1.5.2二進製加法32
1.5.3二進製中的分數33
*1.6整數的存儲34
1.6.1二進製補碼記數法35
1.6.2二進製補碼記數法中的加法36
1.6.3溢出問題37
1.6.4餘碼記數法37
*1.7分數的存儲39
1.7.1浮點記數法39
1.7.2截斷誤差40
*1.8數據與程序設計43
1.8.1Python入門43
1.8.2你好,Python43
1.8.3變量44
1.8.4運算符和表達式45
1.8.5貨幣轉換46
1.8.6調試47
*1.9數據壓縮48
1.9.1通用的數據壓縮技術48
1.9.2圖像壓縮50
1.9.3音頻和視頻壓縮51
*1.10通信差錯52
1.10.1奇偶校驗位52
1.10.2糾錯碼53
複習題55
社會問題58
課外閱讀59
第2章 數據操控60
2.1計算機體係結構61
2.1.1CPU基礎知識61
2.1.2存儲程序概念62
2.2機器語言63
2.2.1指令係統63
2.2.2數據傳輸類64
2.2.3算術/邏輯類64
2.2.4控製類64
2.2.5Vole:一種演示用的機器語言65
2.3程序執行68
2.3.1程序執行的一個例子69
2.3.2程序與數據71
*2.4算術/邏輯指令73
2.4.1邏輯運算73
2.4.2循環移位運算及移位運算74
2.4.3算術運算75
*2.5與其他設備通信76
2.5.1控製器的作用76
2.5.2直接存儲器存取77
2.5.3握手78
2.5.4流行的通信媒介78
2.5.5通信速率79
*2.6數據操控編程80
2.6.1邏輯運算和移位運算80
2.6.2控製結構81
2.6.3函數82
2.6.4輸入和輸出83
2.6.5馬拉鬆訓練助手85
*2.7其他體係結構87
2.7.1流水線87
2.7.2多處理器機器87
複習題88
社會問題93
課外閱讀94
第3章 操作係統95
3.1操作係統的歷史96
3.2操作係統的體係結構99
3.2.1軟件概述99
3.2.2操作係統組件100
3.2.3係統啟動102
3.3協調機器的活動104
3.3.1進程的概念104
3.3.2進程管理104
*3.4處理進程間的競爭106
3.4.1信號量106
3.4.2死鎖108
3.5安全性110
3.5.1來自外部的攻擊110
3.5.2來自內部的攻擊111
複習題113
社會問題115
課外閱讀116
第4章 組網及因特網117
4.1網絡基礎118
4.1.1網絡分類118
4.1.2協議119
4.1.3組合網絡121
4.1.4進程間通信的方法122
4.1.5分布式係統124
4.2因特網124
4.2.1因特網體係結構125
4.2.2因特網編址127
4.2.3因特網應用129
4.3萬維網132
4.3.1萬維網實現133
4.3.2HTML134
4.3.3XML136
4.3.4客戶端活動和服務器端活動137
*4.4因特網協議138
4.4.1因特網軟件的分層方法138
4.4.2TCP/IP協議簇141
*4.5簡單的客戶機服務器143
4.6網絡安全146
4.6.1攻擊的形式146
4.6.2防護和對策148
4.6.3密碼學149
4.6.4網絡安全的法律途徑151
複習題153
社會問題155
課外閱讀156
第5章 算法158
5.1算法的概念159
5.1.1非正式的回顧159
5.1.2算法的正式定義159
5.1.3算法的抽象本質160
5.2算法的表示161
5.2.1原語161
5.2.2偽代碼163
5.3算法的發現167
5.3.1問題求解的藝術167
5.3.2邁出第一步169
5.4迭代結構172
5.4.1順序搜索算法172
5.4.2循環控製173
5.4.3插入排序算法177
5.5遞歸結構180
5.5.1二分搜索算法181
5.5.2遞歸控製185
5.6效率和正確性187
5.6.1算法效率187
5.6.2軟件驗證190
複習題194
社會問題198
課外閱讀199
第6章 程序設計語言200
6.1歷史回顧201
6.1.1早期程序設計語言201
6.1.2機器無關和超越機器無關203
6.1.3程序設計範型204
6.2傳統的程序設計概念208
6.2.1變量和數據類型209
6.2.2數據結構210
6.2.3常量和字麵量211
6.2.4賦值語句212
6.2.5控製語句213
6.2.6注釋216
6.3過程單元218
6.3.1函數218
6.3.2參數219
6.3.3有返回值的函數222
6.4語言實現224
6.4.1翻譯過程224
6.4.2軟件開發包230
6.5麵向對象程序設計231
6.5.1類和對象231
6.5.2構造器233
6.5.3附加特性234
*6.6程序設計並發活動236
*6.7說明性程序設計238
6.7.1邏輯推演238
6.7.2Prolog240
複習題242
社會問題245
課外閱讀246
第7章 軟件工程247
7.1 軟件工程學科248
7.2 軟件生命周期250
7.2.1 周期是個整體250
7.2.2 傳統的開發階段251
7.3 軟件工程方法學253
7.4 模塊化254
7.4.1 模塊式實現255
7.4.2 耦合257
7.4.3 內聚258
7.4.4 信息隱藏258
7.4.5 組件259
7.5 行業工具260
7.5.1 較老的工具261
7.5.2 統一建模語言261
7.5.3 設計模式265
7.6 質量保證266
7.6.1 質量保證的範圍266
7.6.2 軟件測試267
7.7 文檔268
7.8 人機界麵269
7.9 軟件所有權和責任271
複習題273
社會問題275
課外閱讀276
第8章 數據抽象277
8.1基本數據結構278
8.1.1 數組和聚合278
8.1.2 列表、棧和隊列278
8.1.3 樹280
8.2 相關概念281
8.2.1 再談抽象281
8.2.2 靜態結構與動態結構282
8.2.3 指針282
8.3 數據結構的實現283
8.3.1存儲數組283
8.3.2存儲聚合285
8.3.3 存儲列表286
8.3.4 存儲棧和隊列289
8.3.5 存儲二叉樹291
8.3.6 操控數據結構293
8.4 一個簡短的案例研究294
8.5 定製的數據類型298
8.5.1 用戶定義的數據類型298
8.5.2 抽象數據類型299
8.6 類和對象301
*8.7 機器語言中的指針302
複習題304
社會問題308
課外閱讀309
第9章 數據庫係統310
9.1 數據庫基礎311
9.1.1 數據庫係統的重要性311
9.1.2 模式的作用313
9.1.3 數據庫管理係統313
9.1.4 數據庫模型314
9.2 關係模型315
9.2.1 關係設計中的問題315
9.2.2 關係運算318
9.2.3 SQL321
*9.3 麵向對象數據庫323
*9.4 維護數據庫的完整性325
9.4.1 提交/回滾協議326
9.4.2 鎖定326
*9.5 傳統的文件結構328
9.5.1 順序文件328
9.5.2 索引文件330
9.5.3 散列文件331
9.6 數據挖掘334
9.7 數據庫技術的社會影響335
複習題337
社會問題340
課外閱讀341
第10章 計算機圖形學342
10.1 計算機圖形學的範圍343
10.2 3D圖形學概述344
10.3 建模346
10.3.1 單個物體的建模346
10.3.2 整個場景的建模350
10.4 渲染351
10.4.1 光-表麵相互作用351
10.4.2 裁剪、掃描轉換和隱藏麵消除353
10.4.3 著色356
10.4.4 渲染-流水線硬件357
*10.5 處理全局光照359
10.5.1 光線跟蹤359
10.5.2 輻射度360
10.6 動畫361
10.6.1 動畫基礎361
10.6.2 運動學和動力學362
10.6.3 動畫製作過程363
複習題364
社會問題366
課外閱讀366
第11章 人工智能367
11.1智能與機器368
11.1.1智能體368
11.1.2研究方法369
11.1.3圖靈測試370
11.2感知371
11.2.1理解圖像371
11.2.2語言處理373
11.3推理376
11.3.1產生式係統376
11.3.2搜索樹378
11.3.3啟發式379
11.4其他研究領域384
11.4.1知識的表達和處理384
11.4.2學習386
11.4.3遺傳算法387
11.5人工神經網絡388
11.5.1基本特性388
11.5.2訓練人工神經網絡390
11.6機器人學392
11.7後果的思考395
複習題396
社會問題399
課外閱讀401
第12章 計算理論402
12.1函數及其計算403
12.2圖靈機404
12.2.1圖靈機的原理405
12.2.2丘奇-圖靈論題407
12.3通用程序設計語言407
12.3.1BareBones語言408
12.3.2用BareBones語言編程409
12.3.3BareBones的通用性410
12.4一個不可計算的函數411
12.4.1停機問題411
12.4.2停機問題的不可解性413
12.5問題的複雜性415
12.5.1問題複雜性的度量416
12.5.2多項式問題與非多項式問題419
12.5.3NP問題420
*12.6公鑰密碼學423
12.6.1模表示法424
12.6.2RSA公鑰密碼學424
複習題426
社會問題429
課外閱讀429
附錄A ASCII碼431
附錄B 用於處理二進製補碼表示的電路432
附錄C Vole:一種簡單的機器語言434
附錄D 高級程序設計語言436
附錄E 迭代結構與遞歸結構的等價性438
索引440
······
