① 卡內基梅隆大學計算機專業都有什麼
1、計算機科學學院 (School of Computer Science, SCS)
該院下設七個部門或機構,分別為計算生物學部門(Computational Biology Department),計算機科學部門(Computer Science Department),人機交互研究所(Human-Computer Interaction Institute),軟體研究所(Institute for Software Research),語言技術研究所(Language Technologies Institute, LTI),機器學習部門(Machine Leaning Department)及機器人研究所(Robotics Institute),是美國少數幾個將計算機科學專業獨立成院的大學之一,是全美乃至全世界最大的計算機學院。該院可授予學士、碩士、博士學位,課程有數學、物理、計算機硬體、軟體工程、計算技巧、人工智慧、心理學、程序設計、機器人等。
2、卡內基工學院(Carnegie Institute of Technology)
該院由7個系組成:生物醫學工程系、化學工程系、土木與環境工程系、電子與計算機工程系、工程與公共政策系、機械工程系、材料科學與工程系;以及兩個研究所,分別是信息網路研究所和復雜工程化系統研究所。普通課程包括高等數學、物理、化學等課程外,專業課程有化學工程熱力學、化學工藝流程式控制制、結構力學、工程設計與製作、線性代數、電磁學、電子器件及電路、模擬電路分析與設計、電子與計算機工程、流體力學、熱傳導學、氣動力學、材料學、塑性材料、電學電磁學和光學、生理學、現代生物學、生物化學、物理化學、決策分析等等課程。[13]
3、藝術學院(College of Fine Arts)
卡內基梅隆大學擁有全美名列前十的藝術學院。它培養的學生從建築設計到表演藝術和視聽藝術等廣泛領域,由建築系、藝術系、設計系、戲劇系、音樂系組成。其平面設計、工業設計、建築設計等專業在全美均處於頂尖水平。
4、Tepper 商學院(Tepper School of Business)
該院不僅僅從事本科生的培養,同時也培養碩士、博士甚至更高級的人員;下設工業管理系。
5、Dietrich 人文和社會科學學院 (Dietrich College of Humanities and Social Sciences)
該院下設經濟系、英語系、歷史系、哲學系、心理學系、社會和決策學系、統計系。
6、梅隆理學院 (Mellon College of Science, MCS)
該院下設生物科學系、化學系、數學系和物理系,其課程包括物理、數學、化學、生物物理、生物化學、物理化學、統計學、分子生物學等等。
7、海因茨公共政策與管理學院 (H. John Heinz III College)
提供若干在公共政策與管理、醫療政策與管理、生物科技與管理、公共管理、藝術管理、娛樂產業管理、信息系統管理、信息技術、信息安全政策和管理方面的碩士課程。該院也提供一些博士課程。
8、軟體工程研究院(Software Engineering Institute)
卡內基梅隆大學的軟體工程專業遙遙領先於其它名校,它的軟體工程研究院是美國國防部軍管研究院。
② 卡內基梅隆大學計算機專業怎麼樣
卡內基梅隆(CMU)作為全美乃至世界頂級的研究型大學,它是國外大學為數不多的將計算機科學單獨作為一個學院的院校,各大排名機構將其的計算機科學專業與 MIT、斯坦福、加州伯克利等名校並列世界第一,可見其計算機水平之強。
CMU的計算機專業分布很廣,除了計算機科學學院(School of Computer Science, CMU 以下簡稱SCS)中佔了大部分之外,還有卡內基工程學院(CIT)有一些與計算機相關的交叉學科。因為SCS的各個組成機構的研究方向有關聯甚至有有交叉的,具體機構可以在所附的網址中找到,不嚴謹地說,你能想到的計算機方面的研究它基本都有,當然它還有許多你聞所未聞的十分前沿研究方向。CMU的軟體工程是世界頂級水準的專業,其次非常牛的專業是人工智慧,但與MIT的EECS系不同的是,CMU的計算機「偏軟」,可能只有其研究機器人方向的研究生還會學習那幾門硬體方面的課程。有人曾經對比過如前所述與CMU其名的院校計算機專業間的區別(具體網址忘記了,問問度娘應該可以找到的)其中提到了CMU是屬於面向對象式的教學風格,學校力圖讓學生不分心於具體硬體而注重程序設計(特別是面向對像程序設計)和軟體系統相關的構建。
詳情可參照http://www.eglobal.com/usa/Article/80753/
③ 中國醫科大學校園網CMU 網路會限速嗎
不會被限速。中國醫科大學校園網路是學校重要基礎設施之一,是教學、科研、醫療和管理工作的重要工具。校園網路的宗旨是為中國醫科大學的教學、科研、醫療和管理工作服務,所以不會限速。且中國醫科大學校園網路是非贏利性質的學術性計算機網路,要靠用戶、院系部門、學校三方面的支持來運行。資源共享是我校校園網路的基本使用原則,用戶有義務在網上提供可公開的資源,用戶也有權利使用網上提供的所有開放的資源。為加強校園網路的管理,保證校園網路的良性運行和健康發展,學校會制定相關規定,但是不會限速。
④ 卡梅信息網路研究所(CMU INI)的學術氛圍怎麼樣
卡內基梅隆大學作為世界著名學府,計算機和信息相關學科在世界排名非常靠前,培養出非常多的人才,教學水平自然不用說。加上學校鼓勵學生打破傳統學科的束縛,在交叉學科領域探索和研究,學術氛圍也很好。
另外,因為採用了學生提問--助教/老師答疑的Piazza系統,對於師生間的互動和學習的靈活性也有很大的幫助。
⑤ 國內有沒有和CMU的NELL一樣的關系數據可供研究的
Stanford(斯坦福)的CS是個很大的CS,擁有40人以上的資深教員,其中不乏響當當硬梆梆的圖靈獎得主(EdwardA.Feigenbaum,JohnMcCarthy)和各個學科領域的大腕人物,比如理論方面的權威DonaldE.Knuth;資料庫方面的大牛JeffreyD.Ullman(他還寫過那本著名的編譯原理,此人出自Princeton);以及RISC技術挑頭人之一的JohnHennessy。相信CS的同學對此並不陌生。該系每年畢業30多名Ph.D.以及的Master。學生的出路自然是如魚得水,無論學術界還是工業界,Stanford的學生倍受青睞。幾乎所有前十的CS中都有Stanford的畢業生在充當教授。當然同樣享有如此地位的還包括其他三頭巨牛:UC.Berkeley,MIT和CMU。畢業於U.ofUtah的JimClark曾經在StanfordCS當教授。後來就是這個人創了高性能計算機和科學計算可視化方面巨牛的SGI公司。SUN公司名字的來歷是:StanfordUniversityNetwork.。順便提一下,創YAHOO的華人楊致遠曾在斯坦福的EE攻讀博士,後來中途輟學了YAHOO。CS科研方面,斯坦福無論在理論、資料庫、軟體、硬體和AI等各個領域都是實力強勁的頂級高手。斯坦福的RISC技術後來成為SGI/MIPS的Rx000系列微處理器的核心技術;DASH,FLASH項目更是多處理器並行計算機研究的前沿;SUIF並行化編譯器成為國家資助的重點項目,在國際學術論文中SUIF編譯器的提及似乎也為某些平庸的論文平添幾分姿色。Stanford有學生14000多,其中研究生7000多。CS有175人攻讀博士,350人攻讀碩士,每年招的學生數不詳,估計少不了,但不要忘了,每年申請CS的申請學生接近千人。申請費高達90$。斯坦福大學位於信息世界的心臟地帶———矽谷。加州宜人的氣候,美麗的風景使得Stanford堪稱CS的天堂。33.1平方公里的校園面積怕是夠學子們翻江蹈海、叱吒風雲的了。申請斯坦福是很難成功的,但也並非不可為之。去斯坦福這樣的牛校,運氣很重要,牛人的推薦也很重要。附:總的來說,前20的CS可以分成三波:一、4個最為優秀的CSProgram?Stanford,UC.Berkeley,MIT,CMU二、6個其他前十的:UIUC,Cornell,U.ofWashington,Princeton,U.ofTexas-Austin和U.ofWisconsin-Madison,其中UIUC,Cornell,U.ofWashington和UW-Madison幾乎從未出過前十名。三、其他非常非常優秀的CS:CalTech,U.ofMarylandatCP,UCLA,Brown,Harvard,Yale,GIT,Pure,Rice,和U.ofMichigan.(註:CS=計算機科學系)自20世紀40年代世界第一台現代計算機在美國誕生以來,美國一直執全球計算機學界之牛耳,這同時也是美國計算機產業界占據絕對優勢的重要原因之一。我們引進的教材中絕大多數也都來自美國。計算機學科仍然在高速發展,與此對應的計算機人才培養模式也在不斷變化,密切關注和跟蹤國外尤其是美國名校的教學新動態,應該是非常有意義的。本文即選擇了美國計算機學科最負盛名的五所高校,對目前各校計算機科學(ComputerScience)專業的本科教學體系進行了一些分析。斯坦福大學斯坦福大學擁有獨立的計算機科學系。瀏覽該校的教學手冊,最具特色的恐怕要算多門科普性計算機知識講座了,一般有兩到三個單元,涉及面非常之廣,從量子計算到數字演員,從計算科學的偉大思想到網路安全,從網上拍賣到使用元編譯發現大型開放源代碼軟體中的大量錯誤,其中還不乏對技術烏托邦、斯諾「兩種文化」、計算機面臨的困境以及迅速發展所帶來的諸多問題的思考。開課的老師陣容強大,基本上都是響當當的名教授,甚至包括圖靈獎得主JohnMcCarthy。用這種講座代替計算機科學導論性質的專門課程,可以充分展示計算機科學的豐富內涵,使學生較早地了解學科的輪廓和脈絡,對於開闊學生視野,啟發學生的學習興趣也大有好處。由於美國大學中專業的選擇非常靈活,而近年來計算機學科招生受行業影響流失嚴重(這種情況甚至驚動了比爾·蓋茨,今年微軟到各大高校招兵買馬時,他每站必到,利用自己的明星效應,大講計算機學科的美妙前景),可以想像,這種講座同樣也肩負著吸引學生選擇計算機專業的重大使命。斯坦福大學典型的低年級課程設置如表1所示。表1斯坦福大學低年級主要課程設置數學(至少23個單元)數學41(課程號,下同)微積分I5數學42微積分II5統計116概率論3~5計算機103離散結構4或6以下任選兩門:數學51微積分5數學103/113線性代數3數學109應用群論3計算機157邏輯和自動推理4計算機205機器人、視覺和圖形學數學方法3科學(至少11個單元)物理53力學4物理55電磁學4其他工程基礎(至少13個單元)計算機106程序設計抽象/方法學5工程40電子學基礎5選修課技術與社會(3~5個單元)進一步的課程設置如表2所示。表2斯坦福大學高年級主要課程設置程序設計(2門課)計算機107(課程號,下同)程序設計范型5計算機108面向對象系統設計4理論(2門課)計算機154自動機與復雜性理論4計算機161演算法的設計與分析4系統(3門課)電子電氣108B或282數字系統或計算機體系結構4計算機編譯原理3計算機計算機網路3計算機操作系統3應用(選2門課)計算機人工智慧3~4計算機資料庫3計算機圖形學3項目(1門課)計算機至少3個單元限選課(多門)加州大學伯克利分校伯克利的課程設置也有很多獨樹一幟的地方,尤其是在專業基礎課方面,除了有專業導引課程「計算機科學專題」之外,對於沒有編程經驗的學生,第一門編程課是符號編程入門,採用LISP語言。有一定編程經驗或者有自學能力的學生,可以選擇多種語言和環境的自主學習(Self-paced)課程,包括C、Fortran、C++、Java,以及UNIX的使用等,這種多元化與伯克利計算機科學與電子電氣工程同系有關。但是所有學生在第二學期都要學習一組獨特的基礎課:61A「計算機程序的結構與解釋」,採用MITAbelson等編著的同名教材(中譯本機械工業出版社出版,清華大學出版社出版了影印版);61B「數據結構」(教材採用自編講義);61C「計算機結構」(MachineStructures),採用Hennessy的《計算機組織與設計》(中譯本清華大學出版社出版,機械工業出版社出版了影印版)。這項規定就是轉校生也不例外,可見其中蘊涵了伯克利多年的教學經驗結晶。伯克利其他比較有特點的課程還有:將離散數學和概率論結合講授的CS70,主講是名教授ChristosPapadimitriou;CS98-1編程練習課,以主要大學生編程競賽中的賽題為授課素材;CS169軟體工程直接用KentBeck的《極限編程》(人民郵電出版社出版了中譯本)作為教材,非常超前,但是既然連Pressman的《軟體工程:實踐者方法》新版中敏捷方法都已經成為重頭戲,既然IEEE都已經開始制定敏捷方法相關標准,這種課程選材也就不顯得那麼駭世驚俗了。除了軟體工程課程常見內容外,教學側重實際,貫穿了極限編程的思想,涵蓋UML、JUnit單元測試、軟體架構、設計模式和反模式、重構、CVS版本控制、系統和集成測試,最後要求完成一個實際產品,並進行演示。UIUC(伊利諾依大學厄巴尼-香檳分校)UIUC的計算機科學專業創建於1972年,到1986年基本定型,十多年來幾乎沒有什麼變化。其教學體系如圖1所示。圖1UIUC改革前的計算機科學課程體系其中,數值分析方向課程中,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年,在工程院院長DavidDaniel的倡導下,計算機系對教學計劃進行了改革,以反映目前社會、行業和技術的發展趨勢。主要的變化有:*在必修要求中增加了兩門編程課:CS241系統編程,採用GaryNutt的《操作系統》作為主教材,Stevens的《Unix環境高級編程》作為編程教材;CS242程序設計實驗(ProgrammingStudio),教學大綱基本上以Kernighan的《程序設計實踐》為藍本(以上教材機械工業出版社均出版了中譯本和影印版)。*必修要求中增加了一年的高級項目,強調團隊合作和軟體工程實踐,包括文檔寫作、口頭表達、項目規劃與管理等,實際上是在實踐中學習軟體工程。這門課也可以用兩學期的軟體工程或者一年的高級論文代替。仍然充分保留了靈活性,有利於因材施教。*增加了CS173離散結構的學時,部分原CS273的內容移到這里,同時CS273又新增了原CS375的內容。這實際上是提高了對計算機理論的要求。CMU(卡內基梅隆大學)與MIT、伯克利等學校計算機科學仍然和電子與電氣工程同處一系不同,CMU的計算機科學系成立於1965年,是全美最早的,如今它已經升格為計算機科學學院。其研究生項目中除了機器人方向與硬體關系較多之外,其他基本上都是純軟的。從這個意義上來說,CMU的教學體系對於偏軟的計算機科學系應該有較大的借鑒意義。CMU的教學手冊上沒有從傳統意義上針對計算機科學專業學生的導論課,雖然有名為「計算機科學偉大思想」的兩學期課程,但是從內容上看應該是離散數學的替代,因為此外CMU並沒有其他離散數學方面的課程。此課程沒有教材,內容比傳統離散數學要靈活得多,涉及概率、代數、演算法、加密理論、復雜性理論、博弈論等,非常注重學習的趣味性和實用性。與其他名校相同,CMU對程序設計的重視也給人留下很深印象:本土新生的第一堂課就是「初中級程序設計」,直接講授Java。然後是中高級程序設計(Java)、C語言編程技巧、高級編程實踐(Java)、程序設計原理(用SML語言講授)。目前計算機科學專業教學計劃中的一個難點,是硬體課程的設置問題。硬體知識體系本身非常豐富,但是硬體課程多了,又削弱了計算機科學專業的特色。CMU在這一問題上是怎樣處理的呢?計算機科學學院的現任院長RandalE.Bryant親自給出了回答,他用15~213「計算機系統導論」一門課(12個單元)完成了硬體知識的教學。這項教學改革的成果就是一本厚達900多頁的書:《ComputerSystems:AProgrammer'sPerspective》(中譯本《深入理解計算機系統》已經由中國電力出版社出版)一書。他在該書的序言中說:「本課程的宗旨是用一種不同的方式向學生介紹計算機。因為,我們的學生中幾乎沒有人有機會構造計算機系統。而大多數學生,甚至是計算機工程師,也要求能日常使用計算機和編寫計算機程序。所以我們決定從程序員的角度來講解系統,並採用這樣的過濾方法:我們只討論那些影響用戶級C程序的性能、正確性或實用性的主題。比如,我們排除了諸如硬體加法器和匯流排設計這樣的主題。雖然我們談及了機器語言,但是不關注如何編寫匯編語言,而是關心編譯器怎樣翻譯C的各種構造,比如指針、循環、過程調用和返回,以及switch語句。更進一步,我們將更廣泛和現實地看待系統,包括硬體和系統軟體,討論鏈接、載入、進程、信號、性能優化、評估、I/O以及網路與並發編程。這種做法使得我們講授本課程的方式對學生來講既實用、具體,又能實踐,同時也非常利於調動學生的積極性。」網站上的一些隨書配套實驗,也獨具匠心。因此此書的成功是水到渠成的。根據配套網站上的列表,它已經被全球80多所院校採用作為教材。MIT(麻省理工學院)MIT的課程設置,只能用其學生起點高來解釋。該校沒有典型意義上的計算機科學專業,偏軟的只有理論計算機科學和人工智慧及其應用兩個專業。因此沒有類似於其他學校的導論課程。在MIT的電子電氣工程與計算機科學系中,所有學生都要參加如下四門課程:6.001「計算機程序的結構與解釋」,當然與伯克利相同,採用的是Abelson等編著的同名教材;6.002「電路與電子學」;6.003「信號與系統」(自編講義);6.004「計算結構」(ComputationStructures),與伯克利的61C「計算機結構」對等(教材是自編課件)。此外有兩門專業基礎數學課:「概率系統分析」(教授自編教材)和「計算機科學數學」,後者的教材是國外院校普遍採用的Rosen所著《離散數學及其應用》(中文版由機械工業出版社出版)。對MIT的學生而言,實驗課程有多種選擇:電氣工程和計算機科學實驗,模擬電子實驗,數字系統實驗,微機項目實驗,半導體設備項目實驗。此外,無論何種專業,都有軟體工程實驗課。值得注意的是,本科生各專業的必修課程中並沒有軟體工程課程。也就是說,軟體工程的內容都在實踐中完成了。帶軟體工程實驗課的是因為提出Liskov替換原則而知名的女教授BarbaraLiskov,她剛剛獲得了2004年度的馮·諾依曼獎。作為美國工程院和藝術科學院的雙院士,她幾十年在軟體開發研究方面的經驗,將有力地保證這門實驗課程的質量
⑥ 黑客故事之早期的黑客是如何誕生的
學院技術模型鐵路俱樂部(Tech Model Railroad Club,TMRC) 的信號動力委員會(Signals and Power Committee,S&P)把它作為最時髦的科技玩具,並由此產生了許多程序設計工具、術語、和整個文化氛圍——這些,直到今日我們仍然依稀可辨。史蒂文·利維(Steven Levy)在《黑客》(Hackers)的第一部分中詳細的記錄了這段歲月。
「黑客」這個詞彙最早出現在麻省理工學院的計算機文化中。TMRC中的黑客,日後成為了MIT人工智慧實驗室的核心成員,而該實驗室直到80年代早期都一直主導著全世界的人工智慧研究。從ARPAnet誕生的第一年,1969年開始,他們的影響力便不斷的擴大。
ARPAnet是第一條橫貫(美國)大陸的高速計算機網路,由美國國防部出資興建。作為一實驗性的數據通訊網路,它將數以百計的大學、國防部分包商、研究機構連接在一起。各地的研究人員能以史無前例的速度和彈性交換信息,它為協同工作帶來了巨大推進,並使得科技創新突飛猛進。
ARPAnet還有另一項好處,它將散落在全美國的黑客匯聚到一起,一改往日局面——幾個獨居一隅的小組各自發展朝生暮死的本地文化。他們發現(或覺察到)自己置身於一個網路部族之中。
黑客文化的第一批史前遺存——第一批術語表、第一批諷刺文學、關於黑客倫理的自發討論——凡此種種都萌生在ARPAnet的早期歲月中。特別是在1973年到1975年,通過網路協作我們完成了「黑客字典」(Jargon File)的第一版,這個術語辭典成了一份黑客文化的定義文檔。終於在1983年以《黑客辭典》之名付梓刊印了。雖然該書已經絕版了,但是我們現在有了經過修正和擴充的《新黑客辭典》。
黑客道在那些連接到網路的大學中綻放,特別(並非絕對)是在計算機科學部門中。60年代末,首先由麻省理工學院人工智慧和計算機實驗室領軍,斯坦福大學人工智慧實驗室(SAIL)和卡內基梅隆大學(CMU)緊隨其後。這些興旺的計算機科學以及人工智慧實驗室吸引到無數人才,他們都對黑客文化作出了偉大的貢獻——無論是創造技術還是傳說。
為了了解日後的故事,我們有必要先看看電腦本身。因為無論是人工智慧實驗室的升騰還是最終的隕落,都取決於計算機科技變幻的波濤。
從PDP-1型開始,黑客道的命運就緊緊的和DEC(Digital Equipment Corporation,迪吉多)的PDP系列微型機交織在一起了。DEC可謂是交互計算和分時系統的商業先驅。由於其靈活、強大和比同行便宜的特點,被很多大學所採用。
廉價的分時操作系統是黑客文化成長的中繼,ARPAnet生命的大部分時間都被DEC機器編織的網路占據了。其中最重要是在1967年首次推出的PDP-10型,它受到黑客道的青昧長達十五年之久。TOPS-10 (DEC為這個機型開發的操作系統)和MACRO-10 (它的匯編程序)至今還能在許多術語和傳說中泛起記憶的漣漪。
麻省理工學院雖然像大家一樣採用PDP-10,卻試圖獨辟蹊徑。他們不屑於使用DEC開發的操作系統,而是打算自己編一個——傳說中的ITS。
ITS是IncompatibleTime-sharing System(不兼容分時系統)的縮寫,這個名稱也正是MIT黑客姿態的寫照(技術上,這是對其前輩「兼容分時系統」的戲謔,CompatibleTime-Sharing System, CTSS)。他們就是要自成一派。很幸運,這群人並非「夜郎自大」。盡管ITS通常離奇古怪並與錯誤相伴,但是這不足以遮蓋許多技術創新的光芒,而且ITS至今還是分時系統單次運行時間最長記錄的保持者。
ITS本身是用匯編語言寫成的,但是其許多項目卻採用了一種人工智慧語言——LISP。當時,LISP可算得上是同類語言中最強大靈活的了。而且即使在二十五年後的今天,它也擁有比大多數語言出色的設計。LISP讓ITS黑客們可以異想天開,是促成他們成功的主要原因,也是黑客道至今衷愛的語言之一。
許多ITS文化中的科技創造沿用至今,其中最著名的恐怕要數EMACS程序編輯器了。如同你在「黑客辭典」中看到的一樣,許多ITS的傳說還在黑客坊間流傳。
SAIL和CMU當然也沒閑著。許多在SAIL的PDP-10環境下成長起來的黑客,日後成為我們今天個人電腦中「窗口/圖標/滑鼠」軟體界面領域的巨擘。而CMU的黑客則主導了專家系統和工業機器人技術的首次大規模應用。
另一個文化重鎮是施樂的PARC——著名的帕洛阿爾托研究中心(Palo Alto Research Center)。在70年代初到80年代中期這十餘年的時間里,PARC破天荒般的創造了數量驚人的軟體和硬體。我們今天接觸到的軟體界面風格(包括窗口、滑鼠、圖標)就源自這里。當然,還有激光列印機和區域網。PARC在個人電腦出現(80年代)的十年前就開發出了可以與之一較短長的D系列機型。遺憾的是,「先知們」沒有得到自家公司的賞識。以至於PARC成了一個笑柄——「那是為別人生產優秀創意的地方」。然而不可否認PARC對黑客道的影響是普遍而深入的。
貫穿70年代,ARPAnet和PDP-10文化變得愈發強大而多變。小巧的電子郵件列表,將各地具有獨特愛好的人凝聚在一起。出現了越來越多的「小組」,而且延伸到了社交和娛樂領域。DARPA(美國國防部高級研究計劃署)對所有「未授權」的技術活動睜一隻眼閉一隻眼。因為他們知道,與將一代睿智的年青人引入計算機領域相比,這點額外的開銷簡直微不足道。
最著名的「社交」ARPAnet郵件列表恐怕要數科幻小說迷建立的SF-LOVERS了。它至今都很活躍,實際上今天更廣闊的「網際網路」是由ARPAnet演化而成的。不及如此,這種對通訊模式的開拓,日後會被一些牟利性分時服務商推向商業化。比如CompuServe, GEnie 和Prodigy (而最終被AOL掌控)。
你的歷史學家是在1977年通過ARPAnet和科幻小說圈初涉黑客文化的。在那之後的諸多變遷(也是我將敘述的),都是我親身參與和見證的。
⑦ 留學美國大學本科計算機系需要什麼條件
20 世紀40年代世界第一台現代計算機在美國誕生以來,美國一直執全球計算機學界之
牛耳,這同時也是美國計算機產業界占據絕對優勢的重要原因之一。我們成批量地引進
的國外眾多優秀教材絕大多數也都來自美國。計算機學科仍然在高速發展,與此對應的
計算機人才培養模式也在不斷變化,密切關注和跟蹤國外尤其是美國名校的教學新動態
乃至培養思路和教育思想,應該是非常有意義的。
本文即選擇了美國計算機學科最負盛名的五所高校,對目前各校計算機科學(Computer
Science)專業的本科教學體系進行了一些分析。
斯坦福大學
斯坦福大學擁有獨立的計算機科學系。瀏覽該校的教學手冊,最具特色的恐怕要算多門
科普性計算機知識講座了,一般有兩到三個單元,涉及面非常之廣,從量子計算到數字
演員,從計算科學的偉大思想到網路安全,從網上拍賣到使用元編譯發現大型開放源代
碼軟體中的大量錯誤,其中還不乏對技術烏托邦、斯諾「兩種文化」、計算機面臨的困
境以及迅速發展所帶來的諸多問題的思考。開課的老師陣容強大,基本上都是響當當的
名教授,甚至包括圖靈獎得主John McCarthy。用這種講座代替計算機科學導論性質的專
門課程,可以充分展示計算機科學的豐富內涵,使學生較早地了解學科的輪廓和脈絡,
對於開闊學生視野,啟發學生的學習興趣也大有好處。由於美國大學中專業的選擇非常
靈活,而近年來計算機學科招生受行業影響流失嚴重(這種情況甚至驚動了比爾·蓋茨,
2004年微軟到各大高校招兵買馬時,他每站必到,利用自己的明星效應,大講計算機學
科的美妙前景),可以想像,這種講座同樣也肩負著吸引學生選擇計算機專業的重大使命
。
斯坦福大學典型的低年級課程設置如表1所示。
表1 斯坦福大學低年級主要課程設置
數學(至少23個單元)
數學 41(課程號,下同) 微積分 I 5
數學 42 微積分 II 5
統計 116 概率論 3~5
計算機 103 離散結構 4或6
以下任選兩門:
數學 51 微積分 5
數學 103/113 線性代數 3
數學 109 應用群論 3
計算機 157 邏輯和自動推理 4
計算機 205 機器人、視覺和圖形學數學方法 3
科學(至少11個單元)
物理 53 力學 4
物理 55 電磁學 4
其他
工程基礎(至少13個單元)
計算機 106 程序設計抽象/方法學 5
工程 40 電子學基礎 5
選修課
技術與社會(3~5個單元)
進一步的課程設置如表2所示。
表2 斯坦福大學高年級主要課程設置
程序設計(2門課)
計算機 107(課程號,下同) 程序設計范型 5
計算機 108 面向對象系統設計 4
理論(2門課)
計算機 154 自動機與復雜性理論 4
計算機 161 演算法的設計與分析 4
系統(3門課)
電子電氣 108B或282 數字系統或計算機體系結構 4
計算機 編譯原理 3
計算機 計算機網路 3
計算機 操作系統 3
應用(選2門課)
計算機 人工智慧 3~4
計算機 資料庫 3
計算機 圖形學 3
項目(1門課)
計算機 至少3個單元
限選課(多門)
加州大學伯克利分校
伯克利的課程設置也有很多獨樹一幟的地方,尤其是在專業基礎課方面,除了有專業導
引課程「計算機科學專題」之外,對於沒有編程經驗的學生,第一門編程課是符號編程
入門,採用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 程序設計實驗(Progr
amming Studio),教學大綱基本上以Kernighan的《程序設計實踐》為藍本(以上教材機
械工業出版社均出版了中譯本和影印版)。
* 必修要求中增加了一年的高級項目,強調團隊合作和軟體工程實踐,包括文檔寫作、
口頭表達、項目規劃與管理等,實際上是在實踐中學習軟體工程。這門課也可以用兩學
期的軟體工程或者一年的高級論文代替。仍然充分保留了靈活性,有利於因材施教。
* 增加了CS173 離散結構的學時,部分原CS273的內容移到這里,同時CS273又新增了原C
S375的內容。這實際上是提高了對計算機理論的要求。
* 在專業課程中增加了數據挖掘、信息檢索和高級圖形學。
CMU(卡內基梅隆大學)
與MIT、伯克利等學校計算機科學仍然和電子與電氣工程同處一系不同,CMU的計算機科
學系成立於1965年,是全美最早的,如今它已經升格為計算機科學學院。其研究生項目
中除了機器人方向與硬體關系較多之外,其他基本上都是純軟的。從這個意義上來說,C
MU的教學體系對於偏軟的計算機科學系應該有較大的借鑒意義。
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 「計算結構」(Comput
ation 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語言教學中強調庫與介面
設計、編程風格的重要性,並進而介紹抽象、封裝的概念,產生了很大影響。反觀國內
目前很多學校的語言教學和程序設計教學,不僅學時偏少,與其他課程孤立,而且脫離
實際,造成語言學習和相關專業課學習都變得非常枯燥,不利於調動學生的積極性。
應該說,這些名校的教學體系、教材和經驗都是豐富的寶藏,值得好好挖掘,比如每門
核心課程的教學法,實驗課程的安排,各門課程的銜接,大型項目的選材等。
美國大學本科的基本入學條件是
1. 要有SAT成績:至少1600分
2.平均分/GPA 成績至少80分/GPA 3.0以上
3.IBT成績85分
⑧ 美國哪所大學計算機網路專業最好
卡內吉·梅隆大學絕對是最好的。
⑨ 美國那些大學的IT專業是強項
Stanford(斯坦福)的CS是個很大的 CS,擁有40人以上的資深教員,其中不乏響當當硬梆梆的圖靈獎得主(Edward A .Feigenbaum , John McCarthy)和各個學科領域的大腕人物,比如理論方面的權威DonaldE.K nuth;資料庫方面的大牛Je ffre yD.Ullm an(他還寫過那本著名的編譯原理,此人出自Princeton);以及R ISC技術挑頭人之一的John Henn e ssy。相信 CS的同學對此並不陌生。該系每年畢業30多名Ph.D.以及更多的Master。學生的出路自然是如魚得水,無論學術界還是工業界,Stanford的學生倍受青睞。幾乎所有前十的 CS中都有Stanford的畢業生在充當教授。當然同樣享有如此地位的還包括其他三頭巨牛:UC .Berkeley, MIT和CMU。
畢業於U. of Utah的Jim Clark曾經在Stanford CS當教授。後來就是這個人創辦了高性能計算機和科學計算可視化方面巨牛的SGI公司。SUN公司名字的來歷是:Stanford University Network .。順便提一下,創辦YAHOO的華人楊致遠曾在斯坦福的 EE攻讀博士,後來中途輟學辦了YAHOO。
CS科研方面,斯坦福無論在理論、資料庫、軟體、硬體和AI等各個領域都是實力強勁的頂級高手。斯坦福的RISC技術後來成為SGI / MIPS的Rx000系列微處理器的核心技術;DASH,FLASH項目更是多處理器並行計算機研究的前沿;SU IF並行化編譯器成為國家資助的重點項目,在國際學術論文中SU IF編譯器的提及似乎也為某些平庸的論文平添幾分姿色。
Stanford有學生14000多,其中研究生7000多。 CS有175人攻讀博士,350人攻讀碩士,每年招的學生數不詳,估計少不了,但不要忘了,每年申請 CS的申請學生接近千人。申請費高達90$。
斯坦福大學位於信息世界的心臟地帶———矽谷。加州宜人的氣候,美麗的風景使得Stanford堪稱CS的天堂。33.1平方公里的校園面積怕是夠學子們翻江蹈海、叱吒風雲的了。
申請斯坦福是很難成功的,但也並非不可為之。去斯坦福這樣的牛校,運氣很重要,牛人的推薦也很重要。
附:總的來說,前20的 CS可以分成三波:
一、4個最為優秀的 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幾乎從未出過前十名。
三、其他非常非常優秀的 CS:CalTech,U. of MarylandatCP, UCLA, Brown, Harvard,Yale, GIT, Pure, Rice,和U. of Michigan.
(註:CS=計算機科學系)
自20世紀40年代世界第一台現代計算機在美國誕生以來,美國一直執全球計算機學界之牛耳,這同時也是美國計算機產業界占據絕對優勢的重要原因之一。我們引進的教材中絕大多數也都來自美國。計算機學科仍然在高速發展,與此對應的計算機人才培養模式也在不斷變化,密切關注和跟蹤國外尤其是美國名校的教學新動態,應該是非常有意義的。
本文即選擇了美國計算機學科最負盛名的五所高校,對目前各校計算機科學(Computer Science)專業的本科教學體系進行了一些分析。
斯坦福大學
斯坦福大學擁有獨立的計算機科學系。瀏覽該校的教學手冊,最具特色的恐怕要算多門科普性計算機知識講座了,一般有兩到三個單元,涉及面非常之廣,從量子計算到數字演員,從計算科學的偉大思想到網路安全,從網上拍賣到使用元編譯發現大型開放源代碼軟體中的大量錯誤,其中還不乏對技術烏托邦、斯諾「兩種文化」、計算機面臨的困境以及迅速發展所帶來的諸多問題的思考。開課的老師陣容強大,基本上都是響當當的名教授,甚至包括圖靈獎得主John McCarthy。用這種講座代替計算機科學導論性質的專門課程,可以充分展示計算機科學的豐富內涵,使學生較早地了解學科的輪廓和脈絡,對於開闊學生視野,啟發學生的學習興趣也大有好處。由於美國大學中專業的選擇非常靈活,而近年來計算機學科招生受行業影響流失嚴重(這種情況甚至驚動了比爾·蓋茨,今年微軟到各大高校招兵買馬時,他每站必到,利用自己的明星效應,大講計算機學科的美妙前景),可以想像,這種講座同樣也肩負著吸引學生選擇計算機專業的重大使命。
斯坦福大學典型的低年級課程設置如表1所示。
表1 斯坦福大學低年級主要課程設置
數學(至少23個單元)
數學 41(課程號,下同) 微積分 I 5
數學 42 微積分 II 5
統計 116 概率論 3~5
計算機 103 離散結構 4或6
以下任選兩門:
數學 51 微積分 5
數學 103/113 線性代數 3
數學 109 應用群論 3
計算機 157 邏輯和自動推理 4
計算機 205 機器人、視覺和圖形學數學方法 3
科學(至少11個單元)
物理 53 力學 4
物理 55 電磁學 4
其他
工程基礎(至少13個單元)
計算機 106 程序設計抽象/方法學 5
工程 40 電子學基礎 5
選修課
技術與社會(3~5個單元)
進一步的課程設置如表2所示。
表2 斯坦福大學高年級主要課程設置
程序設計(2門課)
計算機 107(課程號,下同) 程序設計范型 5
計算機 108 面向對象系統設計 4
理論(2門課)
計算機 154 自動機與復雜性理論 4
計算機 161 演算法的設計與分析 4
系統(3門課)
電子電氣 108B或282 數字系統或計算機體系結構 4
計算機 編譯原理 3
計算機 計算機網路 3
計算機 操作系統 3
應用(選2門課)
計算機 人工智慧 3~4
計算機 資料庫 3
計算機 圖形學 3
項目(1門課)
計算機 至少3個單元
限選課(多門)
加州大學伯克利分校
伯克利的課程設置也有很多獨樹一幟的地方,尤其是在專業基礎課方面,除了有專業導引課程「計算機科學專題」之外,對於沒有編程經驗的學生,第一門編程課是符號編程入門,採用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年度的馮·諾依曼獎。作為美國工程院和藝術科學院的雙院士,她幾十年在軟體開發研究方面的經驗,將有力地保證這門實驗課程的質量