和同類的教材相比,本書的特點在于以一個核心、三條綱領來組織教學內(nèi)容。計算機的核心功能是數(shù)據(jù)處理,計算機科學要提供數(shù)據(jù)表示和數(shù)據(jù)加工表示的理論、方法、技術,并*終在計算機系統(tǒng)上實現(xiàn)。
全書共分7章,內(nèi)容包括認識計算機和計算機科學、計算機系統(tǒng)組成、計算機軟件系統(tǒng)、計算機通信與網(wǎng)絡、數(shù)據(jù)表示方法、數(shù)據(jù)加工表示方法、計算學科的知識領域。
按照本書的體系,初學者容易理解在后續(xù)課程中展開的專業(yè)概念,并關注專業(yè)課程之間的內(nèi)在關聯(lián)。
本書既適合作為高等學校的教材,也適合有興趣了解計算機科學概貌的讀者閱讀。
本書是作者在多年教學實踐的基礎上編寫而成的。自*版出版以來,本書已被多所高校選作教材,取得了很好的教學效果。本次再版,作者增加了有關信息安全的內(nèi)容,以便更好地滿足教學需求。
出
版 說 明
我國高等學校計算機教育近年來發(fā)展迅猛,應用所學計算機知識解決實際問題,已經(jīng)成為當代大學生的必備能力。
時代的進步與社會的發(fā)展對高等學校計算機教育的質(zhì)量提出了更高、更新的要求,F(xiàn)在,很多高等學校都在積極探索符合自身特點的教學模式,涌現(xiàn)出一大批非常優(yōu)秀的精品課程。
為了適應社會需求,滿足計算機教育的發(fā)展需要,清華大學出版社在大量調(diào)查研究的基礎上,組織編寫了本套教材。本套教材從全國各高校的優(yōu)秀計算機教材中精挑細選了一批很有代表性且特色鮮明的計算機精品教材,把作者對各自所授計算機課程的獨特理解和先進經(jīng)驗推薦給全國師生。
本套教材特點如下。
(1)
編寫目的明確。本套教材主要面向普通高校的計算機專業(yè)學生,使學生通過本套教材,學習計算機科學與技術方面的基本理論和基本知識,接受應用計算機解決實際問題的基本訓練。
(2)
注重編寫理念。本套教材的作者均為各校相應課程的主講教師,有一定的經(jīng)驗積累,且編寫思路清晰,有獨特的教學思路和指導思想,其教學經(jīng)驗具有推廣價值。本套教材中不乏各類精品課程的配套教材,并力圖把不同學校的教學特點反映到每本教材中。
(3)
理論知識與實踐相結合。本套教材貫徹從實踐中來到實踐中去的原則,書中許多必須掌握的理論都將結合實例講述,同時注重培養(yǎng)學生分析、解決問題的能力。
(4)
易教易用,合理適當。本套教材編寫時注意結合教學實際的課時數(shù),把握教材的篇幅。同時,對一些知識點按照教育部教學指導委員會的最新精神進行合理取舍與難易控制。
(5)
注重教材的立體化配套。大多數(shù)教材都將配套教學課件、習題及其解答、實驗指導、教學網(wǎng)站等輔助教學資源,方便教學。
隨著本套教材的陸續(xù)出版,我們相信能夠得到廣大讀者的認可和支持,為我國計算機教材建設和計算機教學水平的提高,以及計算機教育事業(yè)的發(fā)展作出應有的貢獻。
清華大學出版社第3版前言
眾所周知,計算機技術和應用的發(fā)展日新月異,引起人類社會變革的廣度和深度是空前的,可能也是絕后的。但是,不是所有人都了解到,計算機系統(tǒng)的核心基礎原理幾十年來并沒有發(fā)生根本的變化。所以,當這本以大學一年級學生為對象的專業(yè)入門教材再版時,全書框架和主要內(nèi)容并沒有改變,只是對介紹計算機技術和應用的段落做了與時俱進的增補。計算機的安全保障措施日益重要,因此增加了7.3節(jié)。
根據(jù)作者的教學經(jīng)驗,這本教材對不同程度的學生班級都適合。學生的領悟能力越強,教師可以講得越具體;反之可以講得粗略一些,但課程體系仍應該保持完整。不必期待學生對教材里出現(xiàn)的,或者老師講授到的每個專業(yè)概念都完全理解,畢竟這是以后幾十門專業(yè)課的任務。計算機科學導論的授課目的在于使學生大致了解今后四年要學習的專業(yè)內(nèi)容。更重要的是,希望學生能夠把握各門專業(yè)課程之間的內(nèi)在聯(lián)系。這一點不會在哪一門后續(xù)的專業(yè)課程里再刻意闡述了。
黃思曾2017年7月于康樂園第2版前言
第1版出版后,不時會有教師給我發(fā)郵件,覺得這本書很適合用做本科生的教材,向我要教學大綱、教學進度表、考核大綱和電子課件以作參考,我很樂意和同行們互相交流。這本書從來就不以計算機科學導論作為目標。它不過是筆者從許多年講授計算機科學導論課程的過程中提煉出來的一本講義而已。這是在書名中刻意加上教程二字的原因。
本課程面對一年級新生,通常只安排四五十學時。對任教教師來說,挑戰(zhàn)在于選材、組織和演繹。講得太寫意或者太工筆都不行,太專業(yè)或者太不專業(yè)也不行。
在筆者的教學生涯中,計算機科學導論教材經(jīng)歷了幾次變化。最早一批著眼于計算機入門操作和應用,類似今天仍然常見的以應用基礎或文化基礎來冠名的那些書;后來的一批有點全面介紹學科內(nèi)涵的味道了,多以濃縮手法把有關領域內(nèi)容寫成一章一節(jié);再往后,國內(nèi)外開始出現(xiàn)以敘述綱領統(tǒng)率內(nèi)容的著述,如以算法作為綱領貫穿教材,比如筆者用數(shù)據(jù)表示、數(shù)據(jù)加工表示、計算機系統(tǒng)三條線索來展開內(nèi)容。
近年來,這個題材的新作繼續(xù)出現(xiàn),董榮勝的《計算機科學導論思想與方法》一書站在學科思想、方法這個較高的層面來介紹學科,以此給學生提供對學科的認知基礎,著述自成一格。這本書值得有關專業(yè)高年級本科生或者低年級研究生,甚至計算機科學導論課程的任教教師一讀。
從院?傮w上看,一年級大學生的邏輯思維能力和對計算機的了解程度會參差不齊。不論教師選擇什么樣的敘述角度和層次,都受制于面對的菜鳥們的平均接受能力,并非能夠天馬行空的。教師傳道、授業(yè)、解惑之際,一定要顧及受眾的感受,否則教師自我感覺講得天花亂墜,而學生的反應卻是不知所云。
這次修訂增寫了1.4節(jié)和第7章。希望學生在導論性課程中對學科能夠有更加全面的認知。大部分增加的內(nèi)容可作為學生的閱讀材料,但是建議把7.2節(jié)列入教學計劃。關于社會和職業(yè)的問題只由教師講授,效果恐怕不會太好,應該設計更加生動的教學環(huán)節(jié)。
黃思曾2010年8月于康樂園第1版前言
計算機科學導論是大多數(shù)高等院校計算機科學與技術類專業(yè)學生必修的專業(yè)課程。課程講授和計算機系統(tǒng)、計算機科學有關的基本概念,使學生對本專業(yè)的核心知識有全面的、概要的認識。
本課程一種典型的教學安排是每周課堂講授3學時,14周共42學時。在較短時間內(nèi)要完成覆蓋面很廣、內(nèi)容極為豐富的專業(yè)知識教學,又要使一年級學生能夠大致理解,關鍵在于:
要建立一個課程講授的結構體系;
要把握好內(nèi)容廣度和深度的關系;
要采用深入淺出的敘述風格。
筆者在中山大學計算機科學系任教多年,20世紀80年代負責開設本課程之后,一直是本課程的主講教師。多年的教學實踐中,筆者設計以一個本質(zhì)核心,三條內(nèi)容綱領來組織本門課程,使學生能夠在短短的十幾周里對計算機系統(tǒng)和計算機科學有入門性的、較全面的認識。
一個本質(zhì)核心是指計算機的數(shù)據(jù)處理功能。
計算機是一種數(shù)據(jù)處理機器,計算機科學是使計算機完成各行各業(yè)、形形色色數(shù)據(jù)處理任務所需要的理論、方法和技術的知識集合。
三條內(nèi)容綱領是:
(1) 數(shù)據(jù)的分層表示方法學,其表示層次:
現(xiàn)實世界的數(shù)據(jù)對象;
數(shù)據(jù)結構和信息結構層;
程序設計語言層;
機器層;
物理層。
(2) 數(shù)據(jù)加工的分層表示方法學,其表示層次:
數(shù)據(jù)處理問題;
解題模型;
算法層;
程序設計層;
機器程序?qū)樱?
物理層。
(3) 計算機系統(tǒng)的構成(數(shù)據(jù)和數(shù)據(jù)加工表示方法的最終載體):
硬件系統(tǒng);
軟件系統(tǒng);
網(wǎng)絡系統(tǒng)。
本教材按照上述綱領展開,包含了后續(xù)各門計算機類專業(yè)課程的主要概念,從而使學生對計算機科學的內(nèi)容及其內(nèi)在的關聯(lián)有全面、清晰、概要的認識。
教學實踐表明,本課程的學習能夠激發(fā)學生提出思考和問題。課程結束后,學生的疑問通常會比課程開始前還要多。這是好事,說明本課程為學生后續(xù)的專業(yè)學習奠定了良好的基礎,真正起到了導論應有的作用。
歷屆學生都表示,通過本課程的學習他們清晰地了解到今后幾年里要學什么,畢業(yè)之后會干什么,心里開始踏實了。說明本課程還應該擔負起學生專業(yè)教育的作用。
由于計算機技術發(fā)展十分迅速,加上作者水平所限,書中難免有錯誤和不足之處,期望讀者在使用過程中給予指正。
黃思曾2007年5月于康樂園
目錄
第1章認識計算機和計算機科學1
1.1計算機是數(shù)據(jù)處理機1
1.1.1數(shù)據(jù)1
1.1.2信息2
1.1.3數(shù)據(jù)處理3
1.1.4數(shù)據(jù)處理機4
習題5
1.2計算機科學6
1.2.1理解計算機科學6
1.2.2算法8
1.2.3用計算機解決數(shù)據(jù)處理問題10
1.2.4計算機系統(tǒng)的發(fā)展歷程14
習題15
1.3機內(nèi)信息表示基礎二進制數(shù)16
1.3.1位置記數(shù)法16
1.3.2P進制數(shù)17
1.3.3數(shù)制的轉(zhuǎn)換規(guī)則17
習題19
1.4關于計算學科及其專業(yè)19
1.4.1計算學科的由來19
1.4.2計算學科下屬專業(yè)的劃分19
本章小結21
第2章計算機系統(tǒng)的組成22
2.1四大功能部件22
2.1.1內(nèi)存22
2.1.2中央處理器27
2.1.3外部設備30
2.1.4總線41
習題43
2.2計算機程序44
2.2.1機器指令45
2.2.2程序存儲原理47
2.2.3馮·諾依曼結構體系50
習題52
2.3計算機系統(tǒng)52
2.3.1硬件和軟件52
2.3.2計算機系統(tǒng)的幾種應用模式54
習題57
本章小結58
第3章計算機軟件系統(tǒng)59
3.1軟件系統(tǒng)59
3.1.1軟件系統(tǒng)的組成59
3.1.2應用軟件示例60
3.1.3獲得軟件的途徑64
3.1.4軟件版權保護65
習題66
3.2操作系統(tǒng)66
3.2.1操作系統(tǒng)的目標66
3.2.2進程和中斷67
3.2.3操作系統(tǒng)的資源管理功能68
3.2.4作業(yè)的管理調(diào)度方式70
3.2.5I/O設備的輸入輸出控制73
3.2.6操作系統(tǒng)的常見種類74
3.2.7用戶界面75
3.2.8有代表性的操作系統(tǒng)產(chǎn)品76
習題79
3.3程序設計語言和語言處理軟件79
3.3.1程序設計語言79
3.3.2程序設計語言的發(fā)展80
3.3.3程序設計和軟件開發(fā)84
3.3.4程序/語言的處理過程84
3.3.5編譯程序85
3.3.6上機作業(yè)的傳統(tǒng)過程87
3.3.7程序作業(yè)工具87
習題88
本章小結88
第4章計算機通信與網(wǎng)絡89
4.1數(shù)據(jù)通信概念89
4.1.1信息、數(shù)據(jù)與信號89
4.1.2數(shù)據(jù)的傳輸90
4.1.3傳輸介質(zhì)和信道93
4.1.4信號傳輸?shù)募夹g特性94
4.1.5數(shù)據(jù)交換97
習題98
4.2計算機網(wǎng)絡99
4.2.1計算機網(wǎng)絡的組成100
4.2.2網(wǎng)絡類型101
4.2.3網(wǎng)絡協(xié)議和體系結構模型102
習題106
4.3計算機局域網(wǎng)106
4.3.1局域網(wǎng)的拓撲結構106
4.3.2介質(zhì)訪問控制方法108
4.3.3局域網(wǎng)中常見的網(wǎng)絡設備109
習題111
4.4因特網(wǎng)112
4.4.1網(wǎng)絡互聯(lián)112
4.4.2因特網(wǎng)的地址編制和域名113
4.4.3因特網(wǎng)的典型應用113
4.4.4因特網(wǎng)的接入121
習題122
本章小結123
第5章數(shù)據(jù)表示方法124
5.1數(shù)據(jù)的分層表示方法學124
5.1.1現(xiàn)實世界層124
5.1.2信息世界層125
5.1.3高級語言層126
5.1.4機器層126
5.1.5物理層127
習題127
5.2數(shù)的表示127
5.2.1無符號整數(shù)的表示127
5.2.2有符號整數(shù)的表示128
5.2.3實數(shù)的表示132
5.2.4復數(shù)的表示134
習題135
5.3字符和漢字的表示135
5.3.1字符編碼136
5.3.2漢字編碼138
5.3.3漢字處理系統(tǒng)142
習題142
5.4圖像和聲音的表示143
5.4.1圖像的表示143
5.4.2聲音的表示144
習題145
5.5高級語言的數(shù)據(jù)表示手段145
5.5.1常量和變量145
5.5.2函數(shù)和表達式147
5.5.3數(shù)據(jù)類型151
習題158
5.6動態(tài)數(shù)據(jù)結構158
5.6.1數(shù)據(jù)結構的含義158
5.6.2數(shù)據(jù)結構的基本概念159
5.6.3線性表163
5.6.4樹和二叉樹169
5.6.5圖171
習題173
5.7外存數(shù)據(jù)組織174
5.7.1文件174
5.7.2數(shù)據(jù)庫180
習題189
本章小結190
第6章數(shù)據(jù)加工表示方法191
6.1數(shù)據(jù)加工的表達層次191
習題192
6.2算法表示手段193
6.2.1算法和算法的表示193
6.2.2算法流程圖194
6.2.3類程序設計語言的偽代碼199
習題202
6.3結構化設計202
6.3.1三種流程結構203
6.3.2結構化方法207
習題209
6.4算法示例209
6.4.1順序結構的算法設計209
6.4.2分支結構的算法設計211
6.4.3循環(huán)結構的算法設計214
習題217
6.5軟件的工程化開發(fā)方法218
6.5.1關于軟件工程學218
6.5.2軟件生命周期概念219
6.5.3傳統(tǒng)的軟件生命周期階段220
6.5.4軟件開發(fā)規(guī)范225
6.5.5軟件開發(fā)模型226
6.5.6開發(fā)方法和工具227
習題230
本章小結231
第7章計算學科的知識領域232
7.1計算學科知識分類232
7.1.1數(shù)學232
7.1.2電子學233
7.1.3算法234
7.1.4計算機體系結構和組織235
7.1.5計算機軟件系統(tǒng)236
7.1.6人機交互237
7.1.7程序設計238
7.1.8軟件工程學239
7.1.9特定的應用系統(tǒng)240
7.1.10計算機網(wǎng)絡241
7.1.11信息技術241
7.1.12職業(yè)素養(yǎng)242
7.2計算學科的社會與職業(yè)問題243
7.2.1計算技術對社會的沖擊243
7.2.2相關法律243
7.2.3職業(yè)道德和職業(yè)素養(yǎng)244
7.3計算機安全245
7.3.1計算機安全風險245
7.3.2計算機安全措施246
習題249
本章小結249
參考文獻250