| 美國名校計算機科學專業本科教學體系現狀分析 |
| 送交者: 溫江 2005年08月03日13:59:39 於 [教育學術] 發送悄悄話 |
|
自20世紀40年代世界第一台現代計算機在美國誕生以來,美國一直執全球計算機學界之牛耳,這同時也是美國計算機產業界占據絕對優勢的重要原因之一。我們成批量地引進的國外眾多優秀教材絕大多數也都來自美國。計算機學科仍然在高速發展,與此對應的計算機人才培養模式也在不斷變化,密切關注和跟蹤國外尤其是美國名校的教學新動態乃至培養思路和教育思想,應該是非常有意義的。 本文即選擇了美國計算機學科最負盛名的五所高校,對目前各校計算機科學(Computer Science)專業的本科教學體系進行了一些分析。 斯坦福大學 斯坦福大學擁有獨立的計算機科學系。瀏覽該校的教學手冊,最具特色的恐怕要算多門科普性計算機知識講座了,一般有兩到三個單元,涉及面非常之廣,從量子計算到數字演員,從計算科學的偉大思想到網絡安全,從網上拍賣到使用元編譯發現大型開放源代碼軟件中的大量錯誤,其中還不乏對技術烏托邦、斯諾“兩種文化”、計算機面臨的困境以及迅速發展所帶來的諸多問題的思考。開課的老師陣容強大,基本上都是響噹噹的名教授,甚至包括圖靈獎得主John McCarthy。用這種講座代替計算機科學導論性質的專門課程,可以充分展示計算機科學的豐富內涵,使學生較早地了解學科的輪廓和脈絡,對於開闊學生視野,啟發學生的學習興趣也大有好處。由於美國大學中專業的選擇非常靈活,而近年來計算機學科招生受行業影響流失嚴重(這種情況甚至驚動了比爾·蓋茨,2004年微軟到各大高校招兵買馬時,他每站必到,利用自己的明星效應,大講計算機學科的美妙前景),可以想象,這種講座同樣也肩負着吸引學生選擇計算機專業的重大使命。 斯坦福大學典型的低年級課程設置如表1所示。 表1 斯坦福大學低年級主要課程設置 數學(至少23個單元) 以下任選兩門: 科學(至少11個單元) 其他 選修課 表2 斯坦福大學高年級主要課程設置 程序設計(2門課) 理論(2門課) 系統(3門課) 應用(選2門課) 項目(1門課) 限選課(多門) 伯克利的課程設置也有很多獨樹一幟的地方,尤其是在專業基礎課方面,除了有專業導引課程“計算機科學專題”之外,對於沒有編程經驗的學生,第一門編程課是符號編程入門,採用LISP語言。有一定編程經驗或者有自學能力的學生,可以選擇多種語言和環境的自主學習(Self-paced)課程,包括C、Fortran、C++、Java,以及UNIX的使用等,這種多元化與伯克利計算機科學與電子電氣工程同系有關。但是所有學生在第二學期都要學習一組獨特的基礎課:61A“計算機程序的結構與解釋”,採用MIT Abelson等編著的同名教材(中譯本機械工業出版社出版,清華大學出版社出版了影印版);61B“數據結構”(教材採用自編講義);61C“計算機結構”(Machine Structures),採用Hennessy的《計算機組織與設計》(中譯本清華大學出版社出版,機械工業出版社出版了影印版)。這項規定就是轉校生也不例外,可見其中蘊涵了伯克利多年的教學經驗結晶。 伯克利其他比較有特點的課程還有:將離散數學和概率論結合講授的CS70,主講是名教授Christos Papadimitriou;CS98-1 編程練習課,以主要大學生編程競賽中的賽題為授課素材;CS 169 軟件工程直接用Kent Beck的《極限編程》(人民郵電出版社出版了中譯本)作為教材,非常超前,但是既然連Pressman的《軟件工程:實踐者方法》新版中敏捷方法都已經成為重頭戲,既然IEEE都已經開始制定敏捷方法相關標準,這種課程選材也就不顯得那麼駭世驚俗了。除了軟件工程課程常見內容外,教學側重實際,貫穿了極限編程的思想,涵蓋UML、JUnit單元測試、軟件架構、設計模式和反模式、重構、CVS版本控制、系統和集成測試,最後要求完成一個實際產品,並進行演示。 UIUC(伊利諾依大學厄班納-香檳分校) UIUC的計算機科學專業創建於1972年,到1986年基本定型,十多年來幾乎沒有什麼變化。其教學體系如圖1所示。 圖1 UIUC改革前的計算機科學課程體系 其中,數值分析方向課程中,Math225為矩陣論,CS257為數值方法,CS35x代表數值分析導論、常微分數值方法、偏微分與數值逼近和數值線性代數; 理論方向課程中,CS173為離散結構,CS273為計算理論,CS37x包括算法、形式方法、程序驗證; 人工智能方向課程中,CS348為人工智能導論,CS34x包括機器人、機器學習與模式識別; 軟件方向,CS125為計算機科學導論,CS225為數據結構與軟件工程原理,CS31x包括數據庫、圖形學、多媒體,CS32x包括軟件工程、操作系統設計、分布式系統、編程語言與編譯器、並行計算、實時系統、編譯器構造、編程語言設計; 硬件方向課程中,CS231為計算機體繫結構I,CS232為計算機體繫結構II,CS33x包括計算機組成、VLSI系統與邏輯設計、VLSI系統設計、通信網絡、嵌入式體系架構與軟件。 可以看到,處在圖1中最下面的課程基本上都是在多門中選擇一至三門,整個體系脈絡清晰,具有很高的靈活性。與斯坦福不同的是,UIUC的計算機科學導論課程比較簡單,只有一門為新生開的計算機科學導向課(CS100),而且並非必修。名為“計算機科學導論”的CS125實際上是以Java語言為主的編程入門課,涵蓋了一些算法的內容。此外還有與之配套的實驗課。當然,系裡所開的許多面向高年級和研究生層次的講座是對低年級開放的。 2003年,在工程院院長David Daniel的倡導下,計算機系對教學計划進行了改革,以反映目前社會、行業和技術的發展趨勢。主要的變化有: * 在必修要求中增加了兩門編程課:CS241 系統編程,採用Gary Nutt的《操作系統》作為主教材,Stevens的《Unix環境高級編程》作為編程教材;CS242 程序設計實驗(Programming Studio),教學大綱基本上以Kernighan的《程序設計實踐》為藍本(以上教材機械工業出版社均出版了中譯本和影印版)。 * 必修要求中增加了一年的高級項目,強調團隊合作和軟件工程實踐,包括文檔寫作、口頭表達、項目規劃與管理等,實際上是在實踐中學習軟件工程。這門課也可以用兩學期的軟件工程或者一年的高級論文代替。仍然充分保留了靈活性,有利於因材施教。 * 增加了CS173 離散結構的學時,部分原CS273的內容移到這裡,同時CS273又新增了原CS375的內容。這實際上是提高了對計算機理論的要求。 * 在專業課程中增加了數據挖掘、信息檢索和高級圖形學。 CMU(卡內基梅隆大學) 與MIT、伯克利等學校計算機科學仍然和電子與電氣工程同處一系不同,CMU的計算機科學系成立於1965年,是全美最早的,如今它已經升格為計算機科學學院。其研究生項目中除了機器人方向與硬件關係較多之外,其他基本上都是純軟的。從這個意義上來說,CMU的教學體系對於偏軟的計算機科學系應該有較大的借鑑意義。 CMU的教學手冊上沒有從傳統意義上針對計算機科學專業學生的導論課,雖然有名為“計算機科學偉大思想”的兩學期課程,但是從內容上看應該是離散數學的替代,因為此外CMU並沒有其他離散數學方面的課程。此課程沒有教材,內容比傳統離散數學要靈活得多,涉及概率、代數、算法、加密理論、複雜性理論、博弈論等,非常注重學習的趣味性和實用性。 與其他名校相同,CMU對程序設計的重視也給人留下很深印象:本土新生的第一堂課就是“初中級程序設計”,直接講授Java。然後是中高級程序設計(Java)、C語言編程技巧、高級編程實踐(Java)、程序設計原理(用SML語言講授)。 目前計算機科學專業教學計劃中的一個難點,是硬件課程的設置問題。硬件知識體系本身非常豐富,但是硬件課程多了,又削弱了計算機科學專業的特色。CMU在這一問題上是怎樣處理的呢?計算機科學學院的現任院長Randal E. Bryant 親自給出了回答,他用15~213“計算機系統導論”一門課(12個單元)完成了硬件知識的教學。這項教學改革的成果就是一本厚達900多頁的書:《Computer Systems: A Programmer's Perspective》(中譯本《深入理解計算機系統》已經由中國電力出版社出版)一書。他在該書的序言中說: “本課程的宗旨是用一種不同的方式向學生介紹計算機。因為,我們的學生中幾乎沒有人有機會構造計算機系統。而大多數學生,甚至是計算機工程師,也要求能日常使用計算機和編寫計算機程序。所以我們決定從程序員的角度來講解系統,並採用這樣的過濾方法:我們只討論那些影響用戶級C程序的性能、正確性或實用性的主題。 比如,我們排除了諸如硬件加法器和總線設計這樣的主題。雖然我們談及了機器語言,但是不關注如何編寫匯編語言,而是關心編譯器怎樣翻譯C的各種構造,比如指針、循環、過程調用和返回,以及switch語句。更進一步,我們將更廣泛和現實地看待系統,包括硬件和系統軟件,討論鏈接、加載、進程、信號、性能優化、評估、I/O以及網絡與並發編程。 這種做法使得我們講授本課程的方式對學生來講既實用、具體,又能實踐,同時也非常利於調動學生的積極性。” 網站上的一些隨書配套實驗,也獨具匠心。因此此書的成功是水到渠成的。根據配套網站上的列表,它已經被全球80多所院校採用作為教材。 MIT(麻省理工學院) MIT的課程設置,只能用其學生起點高來解釋。該校沒有典型意義上的計算機科學專業,偏軟的只有理論計算機科學和人工智能及其應用兩個專業。因此沒有類似於其他學校的導論課程。 在MIT的電子電氣工程與計算機科學系中,所有學生都要參加如下四門課程:6.001“計算機程序的結構與解釋”,當然與伯克利相同,採用的是Abelson等編著的同名教材;6.002“電路與電子學”;6.003“信號與系統”(自編講義);6.004 “計算結構”(Computation Structures),與伯克利的61C“計算機結構”對等(教材是自編課件)。此外有兩門專業基礎數學課:“概率系統分析”(教授自編教材)和“計算機科學數學”,後者的教材是國外院校普遍採用的Rosen所著《離散數學及其應用》(中文版由機械工業出版社出版)。 對MIT的學生而言,實驗課程有多種選擇:電氣工程和計算機科學實驗,模擬電子實驗,數字系統實驗,微機項目實驗,半導體設備項目實驗。此外,無論何種專業,都有軟件工程實驗課。值得注意的是,本科生各專業的必修課程中並沒有軟件工程課程。也就是說,軟件工程的內容都在實踐中完成了。帶軟件工程實驗課的是因為提出Liskov替換原則而知名的女教授Barbara Liskov,她剛剛獲得了2004年度的馮·諾依曼獎。作為美國工程院和藝術科學院的雙院士,她幾十年在軟件開發研究方面的經驗,將有力地保證這門實驗課程的質量。 分析與總結 由上面的材料可以看出,各個學校的教學體系之間還是有不小差異的。這首先得歸因於歷史沿革形成的專業側重、機構設置上的不同。其中MIT算是一極,由於和電子電氣專業深深地融合,計算機專業帶有很強的“硬派”色彩。而CMU可以算作另一極,計算機科學有自己的獨立學院,非常罕見,因此它的課程設置“軟化嚴重”——與硬件相關的只用一門課就解決了。UIUC和斯坦福由於都擁有獨立的科系,所以可以歸入後一陣營。伯克利可以認為處於兩極中間,但是仔細分析起來,它的計算機科學專業目前雖然仍屬於電子電氣和計算機科學系,但是有相當大的獨立性,1973年創立以來,一直有自己的主席和教學安排,所以離後者更近一些。 此外,各校在專業導入課程的設置上差別也非常明顯。基本上可以分為三類。按IEEE-ACM《Computer Curricula 2001》(以下簡稱CC2001)的分法,斯坦福屬於廣度優先(有明確的注重廣度的導引課程),MIT的屬於函數為先(採用函數式語言),CMU和UIUC屬於對象為先(直接採用Java)。伯克利有些特殊,它有導引課,但是廣度稍差,緊接着又採用函數語言,同時開設學生自學為主可以任選的多種語言課程,屬於混合多元型。應該說各個學校在剛入門時如何調動學生積極性,培養對專業的感情上都有自己的思考。無論哪種類型,將課堂變得有趣,能夠容納更多計算機科學的方面,都已經成為一種趨勢。 無論如何,各校存在的差異並不妨礙各自培養出同樣優秀的人才,這也給我們提供了一種有益的啟示,辦學思路和方法應該是因地制宜的。 當然,總的來說,各學校之間的共性還是主要的。歸納起來,有這麼幾個特點,值得我們思考: 1. 硬件課程整體在減少 偏軟類的三所院校中,CMU最為徹底,硬件課程只有一門課,而UIUC也只有兩門必修(兩門體繫結構),斯坦福也是兩門(電子學、體繫結構或數字系統)。其中的原因,前面引述的Randal E. Bryant所言作出了解釋,畢竟計算機科學需要關注的在計算機系統層次中已經越來越高,底層越來越變得透明了。事實上,CC2001中制定的硬件課程也只有一門。而國內目前一般還開設數字邏輯、微機原理、計算機組成與結構、微機實驗等硬件類課程。 2. 程序設計日益重視 在CMU,UIUC和斯坦福,必修的程序設計類課程往往在四五門左右。伯克利加起來也有四門。MIT雖然沒有大量前導性的編程課程,但是由於在後面計算機系統工程、計算機語言工程、軟件工程實驗、Web軟件工程諸課程都有實際的項目要完成,所以實際學時也很多,UIUC的改革更說明了這一點。同時,還出現了強調提高程序設計技巧,與軟件工程環境和工具相結合,提倡團隊合作,高級程序設計課程與數據結構、算法課融合的趨勢。這方面的代表有斯坦福。該校副系主任Eric Roberts曾執教入門類課程多年,總結了一套在語言教學中融入軟件工程和現代程序設計觀念,結合算法和數據結構教學的經驗。其成果就是《C語言的科學和藝術》和《C程序設計的抽象思維》兩本書(影印版已由機械工業出版社出版)。作為CC2001工作組兩位主席之一,他在C語言教學中強調庫與接口設計、編程風格的重要性,並進而介紹抽象、封裝的概念,產生了很大影響。反觀國內目前很多學校的語言教學和程序設計教學,不僅學時偏少,與其他課程孤立,而且脫離實際,造成語言學習和相關專業課學習都變得非常枯燥,不利於調動學生的積極性。 應該說,這些名校的教學體系、教材和經驗都是豐富的寶藏,值得好好挖掘,比如每門核心課程的教學法,實驗課程的安排,各門課程的銜接,大型項目的選材等。 |
|
|
![]() |
![]() |
| 實用資訊 | |
|
|
| 一周點擊熱帖 | 更多>> |
| 一周回復熱帖 |
| 歷史上的今天:回復熱帖 |
| 2004: | 科大的最佳出路是借鑑IIT的路子 | |
| 2004: | 談談外星文明 | |
| 2002: | 高考志願選擇,地理位置重要嗎? | |
| 2002: | 漫談學英語 | |




