斯坦福,伯克利,麻省理工,卡內(nèi)基*梅隆 Stanford(斯坦福)的CS是個很大的 CS,擁有40人以上的資深教員,其中不乏響當當硬梆梆的圖靈獎得主(Edward A .Feigenbaum , John McCarthy)和各個學科領(lǐng)域的大腕人物,比如理論方面的權(quán)威DonaldE.K nuth;數(shù)據(jù)庫方面的大牛Je ffre yD.Ullm an(他還寫過那本著名的編譯原理,此人出自Princeton);以及R ISC技術(shù)挑頭人之一的John Henn e ssy。相信 CS的同學對此并不陌生。該系每年畢業(yè)30多名Ph.D.以及更多的Master。學生的出路自然是如魚得水,無論學術(shù)界還是工業(yè)界,Stanford的學生倍受青睞。幾乎所有前十的 CS中都有Stanford的畢業(yè)生在充當教授。當然同樣享有如此地位的還包括其他三頭巨牛:UC .Berkeley, MIT和CMU。 畢業(yè)于U. of Utah的Jim Clark曾經(jīng)在Stanford CS當教授。后來就是這個人創(chuàng)辦了高性能計算機和科學計算可視化方面巨牛的SGI公司。SUN公司名字的來歷是:Stanford University Network .。順便提一下,創(chuàng)辦YAHOO的華人楊致遠曾在斯坦福的 EE攻讀博士,后來中途輟學辦了YAHOO。 CS科研方面,斯坦福無論在理論、數(shù)據(jù)庫、軟件、硬件和AI等各個領(lǐng)域都是實力強勁的頂級高手。斯坦福的RISC技術(shù)后來成為SGI / MIPS的Rx000系列微處理器的核心技術(shù);DASH,F(xiàn)LASH項目更是多處理器并行計算機研究的前沿;SU IF并行化編譯器成為國家資助的重點項目,在國際學術(shù)論文中SU IF編譯器的提及似乎也為某些平庸的論文平添幾分姿色。 Stanford有學生14000多,其中研究生7000多。 CS有175人攻讀博士,350人攻讀碩士,每年招的學生數(shù)不詳,估計少不了,但不要忘了,每年申請 CS的申請學生接近千人。申請費高達90$。 斯坦福大學位于信息世界的心臟地帶———硅谷。加州宜人的氣候,美麗的風景使得Stanford堪稱CS的天堂。33.1平方公里的校園面積怕是夠?qū)W子們翻江蹈海、叱咤風云的了。 申請斯坦福是很難成功的,但也并非不可為之。去斯坦福這樣的牛校,運氣很重要,牛人的推薦也很重要。 附:總的來說,前20的 CS可以分成三波: 一、4個最為優(yōu)秀的 CS Program Stanford,UC. Berkeley, MIT, CMU 二、6個其他前十的:UIUC,Cornell,U.of Washington ,Prin ce ton,U. of Tex as-Austin和U. of Wisconsin -Madison,其中UIUC, C ornell,U. of Washington和UW -Madison幾乎從未出過前十名。 三、其他非常非常優(yōu)秀的 CS:CalTech,U. of MarylandatCP, UCLA, Brown, Harvard,Yale, GIT, Purdue, Rice,和U. of Michigan. (注:CS=計算機科學系) 自20世紀40年代世界第一臺現(xiàn)代計算機在美國誕生以來,美國一直執(zhí)全球計算機學界之牛耳,這同時也是美國計算機產(chǎn)業(yè)界占據(jù)絕對優(yōu)勢的重要原因之一。我們引進的教材中絕大多數(shù)也都來自美國。計算機學科仍然在高速發(fā)展,與此對應的計算機人才培養(yǎng)模式也在不斷變化,密切關(guān)注和跟蹤國外尤其是美國名校的教學新動態(tài),應該是非常有意義的。本文即選擇了美國計算機學科最負盛名的五所高校,對目前各校計算機科學(Computer Science)專業(yè)的本科教學體系進行了一些分析。斯坦福大學斯坦福大學擁有獨立的計算機科學系。瀏覽該校的教學手冊,最具特色的恐怕要算多門科普性計算機知識講座了,一般有兩到三個單元,涉及面非常之廣,從量子計算到數(shù)字演員,從計算科學的偉大思想到網(wǎng)絡安全,從網(wǎng)上拍賣到使用元編譯發(fā)現(xiàn)大型開放源代碼軟件中的大量錯誤,其中還不乏對技術(shù)烏托邦、斯諾“兩種文化”、計算機面臨的困境以及迅速發(fā)展所帶來的諸多問題的思考。開課的老師陣容強大,基本上都是響當當?shù)拿淌?,甚至包括圖靈獎得主John McCarthy。用這種講座代替計算機科學導論性質(zhì)的專門課程,可以充分展示計算機科學的豐富內(nèi)涵,使學生較早地了解學科的輪廓和脈絡,對于開闊學生視野,啟發(fā)學生的學習興趣也大有好處。由于美國大學中專業(yè)的選擇非常靈活,而近年來計算機學科招生受行業(yè)影響流失嚴重(這種情況甚至驚動了比爾·蓋茨,今年微軟到各大高校招兵買馬時,他每站必到,利用自己的明星效應,大講計算機學科的美妙前景),可以想象,這種講座同樣也肩負著吸引學生選擇計算機專業(yè)的重大使命。斯坦福大學典型的低年級課程設置如表1所示。表1 斯坦福大學低年級主要課程設置數(shù)學(至少23個單元)數(shù)學 41(課程號,下同) 微積分 I 5數(shù)學 42 微積分 II 5統(tǒng)計 116 概率論 3~5計算機 103 離散結(jié)構(gòu) 4或6以下任選兩門:數(shù)學 51 微積分 5數(shù)學 103/113 線性代數(shù) 3數(shù)學 109 應用群論 3計算機 157 邏輯和自動推理 4計算機 205 機器人、視覺和圖形學數(shù)學方法 3科學(至少11個單元)物理 53 力學 4物理 55 電磁學 4其他工程基礎(chǔ)(至少13個單元)計算機 106 程序設計抽象/方法學 5工程 40 電子學基礎(chǔ) 5選修課技術(shù)與社會(3~5個單元) 進一步的課程設置如表2所示。表2 斯坦福大學高年級主要課程設置程序設計(2門課)計算機 107(課程號,下同) 程序設計范型5計算機 108 面向?qū)ο笙到y(tǒng)設計 4理論(2門課)計算機 154 自動機與復雜性理論 4計算機 161 算法的設計與分析 4系統(tǒng)(3門課)電子電氣 108B或282 數(shù)字系統(tǒng)或計算機體系結(jié)構(gòu) 4計算機 編譯原理 3計算機 計算機網(wǎng)絡 3計算機 操作系統(tǒng) 3應用(選2門課)計算機 人工智能 3~4計算機 數(shù)據(jù)庫 3計算機 圖形學 3項目(1門課)計算機 至少3個單元限選課(多門) 加州大學伯克利分校伯克利的課程設置也有很多獨樹一幟的地方,尤其是在專業(yè)基礎(chǔ)課方面,除了有專業(yè)導引課程“計算機科學專題”之外,對于沒有編程經(jīng)驗的學生,第一門編程課是符號編程入門,采用LISP語言。有一定編程經(jīng)驗或者有自學能力的學生,可以選擇多種語言和環(huán)境的自主學習(Self-paced)課程,包括C、Fortran、C++、Java,以及UNIX的使用等,這種多元化與伯克利計算機科學與電子電氣工程同系有關(guān)。但是所有學生在第二學期都要學習一組獨特的基礎(chǔ)課:61A“計算機程序的結(jié)構(gòu)與解釋”,采用MIT Abelson等編著的同名教材(中譯本機械工業(yè)出版社出版,清華大學出版社出版了影印版);61B“數(shù)據(jù)結(jié)構(gòu)”(教材采用自編講義);61C“計算機結(jié)構(gòu)”(Machine Structures),采用Hennessy的《計算機組織與設計》(中譯本清華大學出版社出版,機械工業(yè)出版社出版了影印版)。這項規(guī)定就是轉(zhuǎn)校生也不例外,可見其中蘊涵了伯克利多年的教學經(jīng)驗結(jié)晶。伯克利其他比較有特點的課程還有:將離散數(shù)學和概率論結(jié)合講授的CS70,主講是名教授Christos Papadimitriou;CS98-1 編程練習課,以主要大學生編程競賽中的賽題為授課素材;CS 169 軟件工程直接用Kent Beck的《極限編程》(人民郵電出版社出版了中譯本)作為教材,非常超前,但是既然連Pressman的《軟件工程:實踐者方法》新版中敏捷方法都已經(jīng)成為重頭戲,既然IEEE都已經(jīng)開始制定敏捷方法相關(guān)標準,這種課程選材也就不顯得那么駭世驚俗了。除了軟件工程課程常見內(nèi)容外,教學側(cè)重實際,貫穿了極限編程的思想,涵蓋UML、JUnit單元測試、軟件架構(gòu)、設計模式和反模式、重構(gòu)、CVS版本控制、系統(tǒng)和集成測試,最后要求完成一個實際產(chǎn)品,并進行演示。UIUC(伊利諾依大學厄巴尼-香檳分校)UIUC的計算機科學專業(yè)創(chuàng)建于1972年,到1986年基本定型,十多年來幾乎沒有什么變化。其教學體系如圖1所示。圖1UIUC改革前的計算機科學課程體系其中,數(shù)值分析方向課程中,Math225為矩陣論,CS257為數(shù)值方法,CS35x代表數(shù)值分析導論、常微分數(shù)值方法、偏微分與數(shù)值逼近和數(shù)值線性代數(shù);理論方向課程中,CS173為離散結(jié)構(gòu),CS273為計算理論,CS37x包括算法、形式方法、程序驗證;人工智能方向課程中,CS348為人工智能導論,CS34x包括機器人、機器學習與模式識別;軟件方向,CS125為計算機科學導論,CS225為數(shù)據(jù)結(jié)構(gòu)與軟件工程原理,CS31x包括數(shù)據(jù)庫、圖形學、多媒體,CS32x包括軟件工程、操作系統(tǒng)設計、分布式系統(tǒng)、編程語言與編譯器、并行計算、實時系統(tǒng)、編譯器構(gòu)造、編程語言設計;硬件方向課程中,CS231為計算機體系結(jié)構(gòu)I,CS232為計算機體系結(jié)構(gòu)II,CS33x包括計算機組成、VLSI系統(tǒng)與邏輯設計、VLSI系統(tǒng)設計、通信網(wǎng)絡、嵌入式體系架構(gòu)與軟件。可以看到,處在圖1中最下面的課程基本上都是在多門中選擇一至三門,整個體系脈絡清晰,具有很高的靈活性。與斯坦福不同的是,UIUC的計算機科學導論課程比較簡單,只有一門為新生開的計算機科學導向課(CS100),而且并非必修。名為“計算機科學導論”的CS125實際上是以Java語言為主的編程入門課,涵蓋了一些算法的內(nèi)容。此外還有與之配套的實驗課。當然,系里所開的許多面向高年級和研究生層次的講座是對低年級開放的。2003年,在工程院院長David Daniel的倡導下,計算機系對教學計劃進行了改革,以反映目前社會、行業(yè)和技術(shù)的發(fā)展趨勢。主要的變化有:*在必修要求中增加了兩門編程課:CS241 系統(tǒng)編程,采用Gary Nutt的《操作系統(tǒng)》作為主教材,Stevens的《Unix環(huán)境高級編程》作為編程教材;CS242 程序設計實驗(Programming Studio),教學大綱基本上以Kernighan的《程序設計實踐》為藍本(以上教材機械工業(yè)出版社均出版了中譯本和影印版)。*必修要求中增加了一年的高級項目,強調(diào)團隊合作和軟件工程實踐,包括文檔寫作、口頭表達、項目規(guī)劃與管理等,實際上是在實踐中學習軟件工程。這門課也可以用兩學期的軟件工程或者一年的高級論文代替。仍然充分保留了靈活性,有利于因材施教。*增加了CS173 離散結(jié)構(gòu)的學時,部分原CS273的內(nèi)容移到這里,同時CS273又新增了原CS375的內(nèi)容。這實際上是提高了對計算機理論的要求。CMU(卡內(nèi)基梅隆大學)與MIT、伯克利等學校計算機科學仍然和電子與電氣工程同處一系不同,CMU的計算機科學系成立于1965年,是全美最早的,如今它已經(jīng)升格為計算機科學學院。其研究生項目中除了機器人方向與硬件關(guān)系較多之外,其他基本上都是純軟的。從這個意義上來說,CMU的教學體系對于偏軟的計算機科學系應該有較大的借鑒意義。CMU的教學手冊上沒有從傳統(tǒng)意義上針對計算機科學專業(yè)學生的導論課,雖然有名為“計算機科學偉大思想”的兩學期課程,但是從內(nèi)容上看應該是離散數(shù)學的替代,因為此外CMU并沒有其他離散數(shù)學方面的課程。此課程沒有教材,內(nèi)容比傳統(tǒng)離散數(shù)學要靈活得多,涉及概率、代數(shù)、算法、加密理論、復雜性理論、博弈論等,非常注重學習的趣味性和實用性。與其他名校相同,CMU對程序設計的重視也給人留下很深印象:本土新生的第一堂課就是“初中級程序設計”,直接講授Java。然后是中高級程序設計(Java)、C語言編程技巧、高級編程實踐(Java)、程序設計原理(用SML語言講授)。目前計算機科學專業(yè)教學計劃中的一個難點,是硬件課程的設置問題。硬件知識體系本身非常豐富,但是硬件課程多了,又削弱了計算機科學專業(yè)的特色。CMU在這一問題上是怎樣處理的呢?計算機科學學院的現(xiàn)任院長Randal E. Bryant 親自給出了回答,他用15~213“計算機系統(tǒng)導論”一門課(12個單元)完成了硬件知識的教學。這項教學改革的成果就是一本厚達900多頁的書:《Computer Systems: A Programmer's Perspective》(中譯本《深入理解計算機系統(tǒng)》已經(jīng)由中國電力出版社出版)一書。他在該書的序言中說:“本課程的宗旨是用一種不同的方式向?qū)W生介紹計算機。因為,我們的學生中幾乎沒有人有機會構(gòu)造計算機系統(tǒng)。而大多數(shù)學生,甚至是計算機工程師,也要求能日常使用計算機和編寫計算機程序。所以我們決定從程序員的角度來講解系統(tǒng),并采用這樣的過濾方法:我們只討論那些影響用戶級C程序的性能、正確性或?qū)嵱眯缘闹黝}。比如,我們排除了諸如硬件加法器和總線設計這樣的主題。雖然我們談及了機器語言,但是不關(guān)注如何編寫匯編語言,而是關(guān)心編譯器怎樣翻譯C的各種構(gòu)造,比如指針、循環(huán)、過程調(diào)用和返回,以及switch語句。更進一步,我們將更廣泛和現(xiàn)實地看待系統(tǒng),包括硬件和系統(tǒng)軟件,討論鏈接、加載、進程、信號、性能優(yōu)化、評估、I/O以及網(wǎng)絡與并發(fā)編程。這種做法使得我們講授本課程的方式對學生來講既實用、具體,又能實踐,同時也非常利于調(diào)動學生的積極性?!本W(wǎng)站上的一些隨書配套實驗,也獨具匠心。因此此書的成功是水到渠成的。根據(jù)配套網(wǎng)站上的列表,它已經(jīng)被全球80多所院校采用作為教材。MIT(麻省理工學院)MIT的課程設置,只能用其學生起點高來解釋。該校沒有典型意義上的計算機科學專業(yè),偏軟的只有理論計算機科學和人工智能及其應用兩個專業(yè)。因此沒有類似于其他學校的導論課程。在MIT的電子電氣工程與計算機科學系中,所有學生都要參加如下四門課程:6.001“計算機程序的結(jié)構(gòu)與解釋”,當然與伯克利相同,采用的是Abelson等編著的同名教材;6.002“電路與電子學”;6.003“信號與系統(tǒng)”(自編講義);6.004 “計算結(jié)構(gòu)”(Computation Structures),與伯克利的61C“計算機結(jié)構(gòu)”對等(教材是自編課件)。此外有兩門專業(yè)基礎(chǔ)數(shù)學課:“概率系統(tǒng)分析”(教授自編教材)和“計算機科學數(shù)學”,后者的教材是國外院校普遍采用的Rosen所著《離散數(shù)學及其應用》(中文版由機械工業(yè)出版社出版)。對MIT的學生而言,實驗課程有多種選擇:電氣工程和計算機科學實驗,模擬電子實驗,數(shù)字系統(tǒng)實驗,微機項目實驗,半導體設備項目實驗。此外,無論何種專業(yè),都有軟件工程實驗課。值得注意的是,本科生各專業(yè)的必修課程中并沒有軟件工程課程。也就是說,軟件工程的內(nèi)容都在實踐中完成了。帶軟件工程實驗課的是因為提出Liskov替換原則而知名的女教授Barbara Liskov,她剛剛獲得了2004年度的馮·諾依曼獎。作為美國工程院和藝術(shù)科學院的雙院士,她幾十年在軟件開發(fā)研究方面的經(jīng)驗,將有力地保證這門實驗課程的質(zhì)量。