現在,“計算機科學導論”是大多數高等院校計算機科學與技術類專業一年級學生在第一學期必修的專業課程。課程講授和計算機系統、計算機科學相關的基本概念,使學生對本專業的核心知識有全面的、概要的認識。
這門課程的開設要追溯到上世紀80年代。當時,“PASCAL”或“C”通常是學生的第一門專業課程。經過教學實踐大家逐步認識到,以脫離計算機機器層次概念的程序設計高級語言作為專業學習的切入點并不妥當。第一門專業課程應該著眼于讓學生認識計算機科學和計算機技術的宏觀概貌,建立專業思想。為此,需要開設一門全面而簡略、導論性的課程。
二十多年來,上述導論性的課程會冠名為“計算機科學導論”、“計算機導論”、“計算機文化基礎”,等。可供選用教材的風格大致上可以分為三類:最早期的以介紹計算機的基本應用為主要內容,前面加一章游離而雜亂的“概述”;第二類教材羅列專業內容,書的每一章實際上就是相應一門專業課教材的一個濃縮版;近年來開始引進的國外版計算機科學導論教材,內容比較全面、新穎,敘述比較生動、容易理解,而且各具風格。
因為一年級新生通常要參加軍訓,本課程的一種典型教學安排是,每周課堂講授3學時,14周共42學時。在相對短的時間內要完成覆蓋面很廣、內容極為豐富的專業知識教學,而又要使一年級學生能夠理解,筆者認為關鍵在于:
(1) 要建立一個課程講授結構體系;
(2) 要把握好內容廣度和深度的關系;
(3) 要采用深入淺出的敘述風格。
在長期的教學實踐中,筆者始終感覺在用的國內外教科書共同的不足之處是:對計算機科學作導論性質的介紹時,缺乏一個認識綱領,所以內容龐雜,章節之間缺少內在的聯系,篇幅動輒四五百頁,教師難以剪裁,學生難以接受,更難把握專業知識的相互關聯。
可能是受到中學階段學習方式的長期影響,不管教師如何組織講授內容,大學一年級的學生仍然對課程所使用的教材非常在意、非常依賴。為此,筆者設計出以“一個本質核心,三條內容綱領”來統率計算機導論教程的講義,使新生們能夠在短短的十幾周里對計算機和計算機科學能夠有入門性的、比較全面的認識。
筆者的思路是:
計算機的本質功能就是數據處理,數據是客觀世界一切事物的表達概念,歸根結底計算機是一種數據處理機器;計算機科學是使計算機完成各行各業、形形色色數據處理任務所需要的理論、方法、技術的知識集合。
因此,可以依據三條綱領闡述和認識計算機科學的主要內容:
(1) 數據的分層表示方法學
計算機科學用“數據”作為手段,來表示客觀世界里要處理的對象。而在計算機內部,能夠物理實現的數據記號只有兩個二進制數字“0”和“1”。因此,數據表示面臨的任務是,用最簡單的記號表示出內容復雜而形式多變的對象。計算機科學的解決方法是:劃分出不同的數據表示抽象層次;每個層次上都對數據的表示概念和工具進行定義;它們既相對獨立,又可以從上一個表示層次映射到下一個表示層次上去;從現實世界到計算機內部的物理實現,數據表示的抽象程度逐層降低,一直到“0”、“1”記號能夠在硬件的層次上實現為止。這樣,在完成數據表達任務的過程中,人可以根據需要選擇適當的表達層次。而層次之間不同表示手段的轉換,由人或者計算機系統本身,按照明確定義的映射規則來完成。
上述的數據表示層次可以總結為:
現實世界里的數據對象;
數據結構和信息結構層;
程序設計語言層;
機器層;
物理層。
(2) 數據加工的分層表示方法學
計算機科學的另一個核心任務是解決數據加工的表示方法。要計算機“記住”的數據加工過程復雜多變,而在計算機內部,能夠物理實現的數據加工表示記號仍然只有兩個二進制數字。因此,和數據的表示方法學一樣,數據加工表示面臨的任務是,用最簡單的記號表示出內容復雜而形式多變的數據加工過程。解決方法仍然是分層次的表達方法學:劃分出數據加工過程不同抽象表示層次;每個層次上定義相應的數據加工表示手段;它們既相對獨立,又可以從上一個表示層次映射到下一個層次去;從現實世界的數據處理問題開始,把數據加工過程一層一層地轉換到計算機內部的物理實現為止。這樣,在完成數據加工表達任務的過程中,人可以根據任務的需要選擇適當的表達層次。然后由人或者計算機系統本身,按照明確定義的映射規則,完成層次之間不同加工表示手段的轉換。
上述的數據表示層次可以總結為:
數據處理問題描述;
解題模型;
算法層;
程序設計層;
機器程序層;
物理層。
(3) 計算機系統的構成
計算機系統是數據和數據加工表示方法的最終載體。已經比較習慣從硬件系統、軟件系統、網絡系統三個方面進行描述。
教材按照上述認識綱領展開,可以包含后續各門專業課程的主要概念,從而使學生對計算機科學的內容,特別是對后續專業課程之間的內在關聯有全面、清晰、概要的認識。
教學實踐表明,本課程的學習能夠激起學生新的問題和思考。課程結束后,學生提出的疑問通常會比課程開始前還要多。這就說明本課程已經為學生后續幾年專業課程的學習奠定良好的基礎,真正起到了“導論”的作用。同時,本課程也成為對一年級學生進行專業思想教育的一個環節,具體而且有效。
按照上述思路編寫的教材《計算機科學導論教程》(ISBN:9787302152347),已經由清華大學出版社出版。這既是筆者在中山大學和廣州大學華軟軟件學院教學實踐的總結,也是對計算機科學導論課程教學的探討。期望得到同行們的指正。