為未來而教,談談伯克利大學計算機系培養人才的方式

最近花了一點時間研究加利福尼亞大學伯克利分校(University of California, Berkeley,簡稱UCB)計算機專業的課程設置,感觸頗深。

UCB在計算機科學領域的傑出表現可以在各大主流計算機專業排名中得以體現。

全美大學範圍內,UCB在US News 2019計算機科學排名中與麻省理工大學(MIT)、斯坦福大學(Stanford)、卡內基梅隆大學(CMU)三所頂尖大學並列第一名。

UCB的計算機科學是一個人才輩出的專業,其著名畢業生包括:

• Eric Schmitt(Google前CEO)

• Steve Wozniak(Apple公司創始人)

• Bill Joy(Sun Microsystems創始人,BSD作者之一)

同時,UCB每年都會評選幾個傑岀校友,有意思的是,Andrew Ng(吳恩達,華裔美國人,人工智能和機器學習領域國際上最權威的學者之一,2014年-2017年曾擔任百度首席科學家)剛被評為2019年UCB傑出校友。

我找到了最近這幾年的傑出校友的名單:


為未來而教,談談伯克利大學計算機系培養人才的方式

UCB計算機專業的傑出校友

從上述名單中可以看到,UCB的校友除了在高校任教外,很多都是一些科技公司的創始人和技術主管。

此外,UCB計算機科學專業的現任教授們也是大名鼎鼎,其中包括六位圖靈獎得主。

那麼,為什麼UCB誕生了這麼多牛人?

除了本身名氣大、生源好以外,我認為,這與它的培養體系有不可或缺的關係。

我們先看看UCB計算機專業的一些特點。

一個學院,兩個體系

出人意料的是,儘管UCB的計算機專業非常有名,但它竟然沒有單獨的計算機系。

在UCB,計算機系和電子工程系合在一起,叫電氣工程與計算機科學系(Department of Electrical Engineering & Computer Sciences),簡稱:EECS。

為未來而教,談談伯克利大學計算機系培養人才的方式

UCB的電氣工程與計算機科學系

為什麼CS(Computer Science)會和EE(Electrical Engineering)在一起呢?

EECS主頁上是這麼解釋的:

• 電氣工程師和計算機科學家他們都是是同一群人,他們負責設計系統和模塊,用來釆集、存儲、處理、解釋以及傳遞信息或者信號。

• 此外,在20世紀,世界上最重要的工程突破,都是由電氣工程師或者計算機科學家發明或實施的,其中包括電力系統、全球廣播和個人電信系統、計算機網絡、醫療儀器、集成電路、激光、家用電器和反饋控制等。

• 此外,電子工程師和計算機科學家開發的新技術在21世紀可能更加重要,因為,更快的通信速率、更小的設備、更強大的計算能力使智能、信息驅動系統(intelligent, information-driven systems)的新時代成為可能。

EECS不僅在學院名稱上體現了學科交叉的特點,在課程培養上也有體現。

一個學院,兩種培養體系

從本科來看,EECS可以用“一個學院,兩種培養體系(One Department, Two Programs)”來簡單概括。

這兩個培養體系的最終結果是兩種證書:

• 一個是工程學院(the College of Engineering)授予的理學碩士(the Bachelor of Science in EECS),

• 另外一個是文理學院(the College of Letters&Science)授予的計算機科學文學學士(the Bachelor of Arts in CS)。

這兩個不同的培養體系在計算機科學的內容上沒有什麼不同,其主要差別在於計算機科學之外的課程上。EECS主頁上介紹,

“如果你興趣更廣泛,對經濟,統計,商業和音樂等也很感興趣,或者想讀一個雙學位,你應該選擇後者。而如果你對工程專業更感興趣,那麼前者應該更適合你”。

簡單的說,前者在工程方面更深入,後者則讓學生有更大的靈活性來探索工程之外的領域。

為未來而教的培養目標

EECS在它的主頁上說:

多數UCB的EECS學生在畢業後,會在工業界開展自己的職業生涯。計算機科學學士學位將使你為各種有趣的工作做好準備,包括軟件工程、網絡開發、數據分析和諮詢。部分學生畢業後,會在高校或者公司的研究部門從事研究工作。我們的目標是讓學生畢業的時候為他們做好準備,不管是在工業界從事技術領導工作(technical leadership in industry),還是在高校從事研究工作。因此,我們必須具有前瞻性,要超越當前的技術(look beyond today's technology),給學生們提供一些關於計算機行業的一些大的理念(big ideas),培養學生的學習技能,才能讓他們在將來具備自我學習、不斷提高的能力。

層次分明,以點帶面的課程體系

UCB CS專業課的課程體系將課程分為lower division和upper division兩種,類似國內的專業必修課和專業選修課。此外,課程體系中每一門課都有一些先修課,整個形成一個知識樹(見圖③)。

圖③顯示了課程中的一部分重要課程。包括紅色的核心課程(core),藍色的軟件課程(Software),黃色的硬件課程(Hardware),綠色的理論課程(Theory),以及紫色的應用課程(Applications);

有箭頭指向某一個節點課程的課程,就是這門課程的先修課:


為未來而教,談談伯克利大學計算機系培養人才的方式

圖3 CS的課程體系

Lower division:只要是CS專業的就要求學,是基礎和核心,包括六門課:

• Math lA(Calculus I)微積分I

• Math IB(Calculus II)微積分II

• CS 61A(Structure and Interpretation of Computer Programs, SICP),CS第一門課,講CS的基礎和核心概念(variable, control flow, loop, recursion等),使用Python語言。

• CS 61B/BL(Data Structures),CS第二門課,講數據結構(Arrays, linked list, Tree, Hash, Stack, Queue等)和一些算法(BFS, DFS, Dijkstra, A*等),用Java語言。

• CS 61C(Machine Structures),CS第三門課,講計算機底層的原理。用C和MIPS。

• CS 70(Discrete Mathematics and Probability Theory),CS唯一一門必修的理論課,講離散數學(Proofs, Induction, Stable Marriage 等)和概率(Probability)。

Upper division:專業選修課,滿一定學分即可畢業。

選修課可以分 為4個方向,包括軟件,硬件,理論,及應用。

我選幾個重要的列舉出來:

• 硬件方向:只有一門,CS 152(Computer Architecture and Engi­neering),偏硬件和底層

• 軟件方向的重要課程:

CS 160(User Interface Design and Devel­opment)UI 設計;CS 161 (Computer Security)計算機安全;CS 162(Operating Systems and System Programming)操作系統;CS 164(Programming Languages and Compilers)設計程序語言和編譯器等;CS 169(Software Engineering)軟件工程。

• 理論方向的重要課程:

CS 170(Efficient Algorithms and Intractable Problems),介紹計算機科學理論基礎和算法;CS 172(Com­putability and Complexity)可計算性和計算複雜度;CS 174(Combinatorics and Discrete Probability)組合數學與離散概率;

• 應用方向的重要課程:

CS 188(Introduction to Artificial In­telligence)人工智能入門;CS 184(Foundations of Computer Graphics)計算機圖形學;CS 186(Introduction to Database Systems)數據庫;CS 189(Introduction to Machine Learning)機器學習入門。

EECS的幾門核心課程的確是王牌,以CS 61A(SICP)為例,該課程被彭博社評為“全美五個最佳計算機科學課程之一”。

CS61A的SICP指的是程序構造與解釋,不侷限於教語言本身(實際上這門課的final會同時考到Python, Scheme, SQL)等語言。

這和自學以及培訓班所開設的專門針對某一個語言的課(C++, Java, Python)等是不一樣的。報名該課程的人數非常多,曾出現了1600人同上一門課的盛況!(見圖④)

為未來而教,談談伯克利大學計算機系培養人才的方式

④ 1600人同時上的一門課:CS61A

另外一門核心課程CS 61C(Machine Structures)和直接教你編程寫代碼不同,這門課講計算機的底層原理,覆蓋量相當之廣,從彙編語言到SDS,搭建CPU,cache,包括從伯克利誕生的RAID都有所涉獵。

由此我們可以看出,UCB的CS教育以培養學生的計算機科學思維為主,編程(coding)能力為輔。

我記得之前在計算機學院開會的時候,一個老師提出了一個問題:

計算機專業的學生寫的程序和非計算機專業的學生寫的程序有什麼區別?

我想,區別主要在這些專業核心課程上。

通過對這些專業核心課程的深刻理解,計算機專業的學生寫的程序所運用到的計算機思維和相關概念(底層原理,數據結構、算法等等),都要比非專業的學生, 或者是那些經過短期培訓班的學生好得多。

UCB還有一類課程,是讓學生自己開課,被稱為(DeCal),就是完全由學生自己組織、上課、佈置任務的特殊課程(學生自己開課流程如圖⑤)。

經過這麼多年的發展,DeCal已經成為Berkeley課程體系的一部分,並且其課時計入總學分(一般普通課程是4學分一學期,DeCal—般為2學分),但是不參與GPA計算。

計算機的Decal通常是一些應用的課程,例如VR、遊戲設計、3D建模與動畫、網頁開發、iOS開發、3D打印、區塊鏈技術等。


為未來而教,談談伯克利大學計算機系培養人才的方式

⑤ 學生自己開課流程

最後總結一下EECS的計算機課程體系的幾個特點:

1. 層次化(大部分課程需要先修課程);

2. 超強的精品課;

3. 培養學生的計算機科學思維為主,coding能力為輔;

4. 給學生極大的自由,體現在兩點:

(1) 必修少,選修課多;(2) 讓學生自己開課(DeCal)。

學以致用:多種方式鼓勵本科生參與研究

UCB的EECS學院,鼓勵本科生參與更多的研究工作。

UCB認為:

讓學生參與研究工作,特別是在學校教職工的帶領下參加研究工作,將加深你在特別感興趣領域的知識和技能,同時體驗從事研究的意義。


為未來而教,談談伯克利大學計算機系培養人才的方式

⑥ 本科生參與科研

UCB提供了多條路徑積極鼓勵學生參與科研。

對於本科生,UCB在網站上給出了一系列指導措施和具體方法:

1. 決定你感興趣的研究領域;

  • • 閱讀EECS研究頁面,查看該部門的區域、實驗室、中心和項目的完整列表。查看EECS研究項目以查看過去和當前的研究項目。此外,注意你比其他人更喜歡什麼課程,這可能會幫助你決定你想在哪裡做研究。


2. UCB每週會有一次的學術報告會(colloquia showcase research presentations);

  • • 教職工會展示他們的一些研究成果,同時藉此機會來找到願意參與該項目的學生。


3. UCB經常會有本科生研究海報會議(undergraduate research poster sessions);

  • • 本科生通過參加這個會議就可以瞭解到自己的同學正在參與的研究項目,從而加入某個項目中。


4. UCB的本科研究見習計劃(The Undergraduate Research Appren­tice Program, URAP);

  • • 該計劃旨在使伯克利大學的本科生更深入地參與大學的研究生活,在每個學期開始時開放申請。圖顯示了EECS學院部分供本科生參與的項目。


為未來而教,談談伯克利大學計算機系培養人才的方式

⑦ URAP計劃中EECS學院部分供本科生參與的項目


⑦ URAP計劃中EECS學院部分供本科生參與的項目

5. 本科暑期工程研究項目(Summer Undergraduate Program, SUPERB);

  • • EECS會每年夏天會邀請一群不同的本科生在EECS教職員工和研究生的指導下進行為期9周的研究工作。很多參加該項目的本科生後來都獲得了博士學位。


6. 為了鼓勵科研,UCB規定“在本科參與研究可以獲得一定的學分”,併為此專門設了兩門課(EE199, CS199);

  • • 這兩門課被稱為有監管的獨立研究課(Supervised Independent Study class),學生註冊這門課需要一名教師主管和一名導師的批准。


7. 如果特別喜歡研究的本科生,還可以申請EECS榮譽計劃(EECS Honors Program)。

  • • 該計劃主要針對在研究上感興趣且有才華的本科生。參加該計劃的本科生會以從事研究為主,接受一名特別的導師指導。該計劃的學生可選擇完成榮譽論文,並在畢業的成績單上得到關於榮譽學位(honors degree)的正式批註。但是關於申請和完成該計劃,都有比較嚴格的管理規章。


總結

UCB計算機專業的特點及其給我的啟發如下:

• UCB的EECS系是計算機科學和電氣工程融合在一起的,很多課程都有交叉。

• UCB的EECS系培養學生的目的,是為了學生在能夠適應和主動學習未來的世界,因此它處處都體現了讓學生髮揮自己的能動性的特點。它不僅設置了EECS和CS兩個學位供學生挑選,還設置了大量的選修課,讓學生根據自己的興趣來選擇,甚至還有讓學生自己開課(DeCal)。


分享到:


相關文章: