本節書摘來自異步社區《計算機科學概論(第12版)》一書中的第0章0.3節學習大綱,作者【美】J. 格倫?布魯克希爾(J. Glenn Brookshear) , 丹尼斯?布里羅(Dennis Brylow),更多章節內容可以訪問云棲社區“異步社區”公眾號查看。
0.3 學習大綱
本書遵循自底向上的方法講述計算機科學,先從讀者有親身體驗的主題開始(如計算機硬件),繼而引出比較抽象的主題(如算法復雜性和可計算性)。結果是,我們的學習遵循了這樣一個模式:隨著我們對主題理解的深入,我們構建的抽象工具會越來越大。
我們首先學習與設計和構造執行算法的機器有關的主題。第1章(數據存儲)學習現代計算機的信息編碼和信息存儲問題,第2章(數據操作)研究簡單計算機的內部基本操作。雖然部分學習內容涉及技術問題,但總體上是獨立于具體技術的。也就是說,像數字電路設計、數據編碼與壓縮系統,以及計算機體系結構這樣的主題,與很多技術都相關,并且不管未來技術的發展方向如何,它們的相關性都不會變。
第3章(操作系統)將學習控制一臺計算機總體操作的軟件,這種軟件稱為操作系統。操作系統控制機器與其外部世界之間的接口:保護機器及其內部存儲數據不被非授權用戶訪問;允許計算機用戶請求執行各種程序;協調內部活動,以滿足用戶請求。
第4章(組網及因特網)將學習計算機是如何連接成計算機網絡的,網絡又是如何連接成互聯網的。這些知識涉及到很多主題,如網絡協議、因特網結構和內部操作、萬維網,以及諸多的安全問題。
第5章(算法)比較正式地介紹了算法。我們要研究算法的發現,明確幾種基本的算法結構,開發幾項表示算法的初等技術,并介紹算法的有效性和正確性問題。
第6章(程序設計語言)研究的問題是算法表示和程序開發過程。在這一章中,我們會發現,人們在不斷改善程序設計技術的過程中,創造出了各種各樣的程序設計方法學或范式,而每一種都有自己的一套程序設計語言。我們將研究這些范式和語言,以及語法和語言翻譯的問題。
第7章(軟件工程)將介紹計算機科學的一個分支——軟件工程。軟件工程處理的是開發大型軟件系統時所遇到的問題。大型軟件系統的設計是一項復雜的任務,會遇到傳統工程未涉及的許多問題。因此,軟件工程這一學科已經成為計算機科學中一個重要的研究領域,它借鑒了諸如工程、項目管理、人事管理、程序設計語言設計,甚至是建筑學等眾多領域的研究經驗。
在接下來的兩章中,我們將學習在計算機系統中組織數據的方法。第8章(數據抽象)介紹傳統上用于在計算機主存儲器中組織數據的技術,然后探索數據抽象的演變發展,從原語的概念一直到今天的面向對象式技術。第9章(數據庫系統)介紹傳統上用于在計算機海量存儲器中組織數據的方法,并研究如何實現非常大的復雜數據庫系統。
第10章(計算機圖形學)將研究圖形和動畫,這是一個創建并圖像化虛擬世界的領域。在計算機科學傳統領域(如機器體系結構、算法設計、數據結構和軟件工程)發展的基礎上,圖形和動畫學科取得了顯著進展,業已發展成為激動人心、充滿活力的學科。此外,這個領域說明了,計算機科學的各個組成部分,是如何與物理、藝術和攝影等學科相結合產生顯著成果的。
在第11章(人工智能)中,我們將了解到,為了開發更有用的機器,計算機科學現已一馬當先,轉向研究人類智能。研究人員希望通過對我們自己的思維推理和認知的了解,設計出模擬這些過程的算法,從而把這些比較的能力傳遞給機器。結果,計算機科學就有了這個稱為人工智能的領域,它非常依賴于心理學、生物學和語言學等領域的研究。
我們的學習到第12章(計算理論)結束,這一章將介紹計算機科學的理論基礎,這個主題會讓我們了解到算法(和機器)的局限性。在本章,我們不但明確了幾個算法上不能解決的問題(它們在理論上也是超出機器能力的),而且認識到許多其他問題的解決都需要大量的時間或空間,以致從實踐的角度上講也是不可解的。因此,通過本章的學習,我們將能夠掌握算法系統的應用范圍和局限性。
我們的目標是,每一章主題的探討都足夠深入,使讀者真正理解。我們希望所闡述的計算機科學知識對大家的工作能有所幫助——使讀者了解自己所生活的技術社會,打好跟隨科技進步自我學習的基礎。