湯志忠
清華大學(xué)計算機系于2001年決定開設(shè)“計算機專業(yè)實踐”課程,作為全系本科生的必修課。經(jīng)過兩年的準(zhǔn)備,于2003年夏季學(xué)期在30多名本科生中進行了試點,2004年在全系185名本科生中授課,2005年在全系195名本科生中正式開課,效果很好。該課程經(jīng)過4年多的建設(shè),取得了如下主要成果。
一、創(chuàng)建了“計算機專業(yè)實踐”課程體系
計算機專業(yè)是實踐性、工程性很強的專業(yè),實踐環(huán)節(jié)十分重要,非常需要計算機軟件、硬件和應(yīng)用技術(shù)相結(jié)合。計算機專業(yè)實踐涵蓋計算機科學(xué)與技術(shù)一級學(xué)科主要專業(yè)方向,是知識面比較寬的教學(xué)實踐環(huán)節(jié)。
“計算機專業(yè)實踐”課程安排在大四整個夏季學(xué)期,共5周,200學(xué)時,5學(xué)分。其中,講課15學(xué)時,方案設(shè)計和討論30學(xué)時,方案實施125學(xué)時,總結(jié)、撰寫實驗報告、分組表演及答辯30學(xué)時。它是本科生中除綜合論文訓(xùn)練之外學(xué)分最多的一門課程,也是學(xué)生相當(dāng)重視的一門課程。
“計算機專業(yè)實踐”是本科生在課程學(xué)習(xí)基本完成之后,綜合論文訓(xùn)練之前安排的一個重要的實踐教學(xué)環(huán)節(jié),是一次綜合性、創(chuàng)新性、研究型的大型實踐教學(xué),同時兼有趣味性和可競技性等特點。學(xué)生在教師指導(dǎo)下,靈活運用所學(xué)到的基礎(chǔ)知識和主要專業(yè)知識,自己設(shè)計、制作、調(diào)試,完成一個綜合性、研究型的大型教學(xué)實驗,讓學(xué)生在實踐動手能力、創(chuàng)新思維、專業(yè)知識、科研能力和團隊合作精神等方面得到全面的訓(xùn)練。
學(xué)生在推研、考研、申請出國、求職時普遍把“計算機專業(yè)實踐”作為本科學(xué)習(xí)階段的主要成果之一,作為推薦信和簡歷中的重要內(nèi)容。
“計算機專業(yè)實踐”在整個本科階段的培養(yǎng)過程中起到承上啟下的作用,它綜合了硬件實習(xí)和工程實踐的優(yōu)點,學(xué)生在老師的指導(dǎo)下,得到知識和實踐的全面提高。本課程有別于低年級的硬件實習(xí),低年級的硬件實習(xí)綜合性不強;也有別于工程實踐,工程實踐作為教學(xué)環(huán)節(jié),教學(xué)要求欠規(guī)范。另外,本課程與綜合論文訓(xùn)練也有明顯的不同,在綜合論文訓(xùn)練中,學(xué)生研究的范圍很窄,基本上都是軟件課題?!坝嬎銠C專業(yè)實踐”有統(tǒng)一的課程要求,以硬件為主,軟硬件結(jié)合。
二、以國外一流大學(xué)為標(biāo)準(zhǔn),創(chuàng)建研究型大型實踐教學(xué)環(huán)節(jié)
與國外一流大學(xué)相比,我們的計算機實驗教學(xué)方法和實驗手段相對比較落后,急需改進,本課程在這方面進行了有益的探索。
在課程建設(shè)初期,我們到美國的Stanford、Berkeley和CALTECH等三所大學(xué)考察了他們的計算機實踐教學(xué)情況。另外,還通過互聯(lián)網(wǎng),訪問了美國的Stanford、Princeton、MIT、UIUC、Harvard、Cornell等多所知名大學(xué)的實踐教學(xué)情況。通過對比發(fā)現(xiàn),我們與這些一流大學(xué)還存有許多差距。
1. 他們教學(xué)內(nèi)容緊跟計算機技術(shù)發(fā)展。隨著計算機軟硬件技術(shù)的迅速發(fā)展,計算機系統(tǒng)中使用的硬件部件基本上都采用大規(guī)模和超大規(guī)模集成電路,這些電路的設(shè)計、驗證和測試必須使用先進的工具,而我們目前的大多數(shù)計算機硬件實驗采用小規(guī)模集成電路和手工布線進行。這種實驗方法雖然能夠?qū)W習(xí)計算機的基本原理,但是學(xué)生參加實際工作之前需要再培訓(xùn)。
2. 他們研究型實驗的比例大,學(xué)生對實驗有興趣,有成就感。我們的許多實驗,學(xué)生興趣不大,應(yīng)付和抄襲現(xiàn)象嚴(yán)重。
3. 他們注重創(chuàng)新意識與動手能力的培養(yǎng),我們的驗證實驗偏多,研究型大型實驗偏少。
4. 在實驗方法方面,國外一流大學(xué)普遍采用先進的設(shè)計與分析工具進行實驗,以專業(yè)人員的水準(zhǔn)來要求。對于實驗學(xué)時投入,國外大學(xué)通常開設(shè)3門左右硬件實驗課,或以硬件實驗為主的課程。在課程成績的評價體系中,實驗所占的比重較大。而我們在師資、實驗室面積及TA的數(shù)量等方面都投入不足。
在開展“計算機專業(yè)實踐”課程中,我們特別注重吸取國外一流大學(xué)的先進經(jīng)驗,采取了如下措施:
1. 實驗內(nèi)容緊跟計算機技術(shù)發(fā)展。在新開發(fā)的實驗系統(tǒng)中,核心器件采用超大規(guī)模集成電路,在學(xué)生實驗過程中采用了先進的設(shè)計和驗證工具。
2.研究型大型實驗教學(xué)。為本課程專門研制了多套教學(xué)實驗系統(tǒng)和實驗平臺,學(xué)生不僅能夠?qū)W習(xí)微處理器的設(shè)計、驗證和測試原理,還能夠?qū)W會相關(guān)工具軟件的使用方法。
3.開放性設(shè)計。由于在新研制的教學(xué)實驗系統(tǒng)采用了獨創(chuàng)的實驗方法,為學(xué)生提供了一個完全開放的實驗環(huán)境,學(xué)生可以自由設(shè)計計算機系統(tǒng)的各個方面,這在以往的類似教學(xué)實驗系統(tǒng)中是無法做到的。
4. 本課程特別強調(diào)要有創(chuàng)新性,這一點跟以往的課程實驗是完全不同的。凡是得高分的同學(xué)都有比較大的創(chuàng)新,這也是學(xué)生收獲最大的一個方面。
5.采用新的評價體系。改變以往的評分方法,本課程把演示、競賽、答辯、實驗報告作為評價環(huán)節(jié),把創(chuàng)新性、系統(tǒng)整體功能作為評價重點。競賽和演示進一步調(diào)動了學(xué)生的學(xué)習(xí)積極性。
6.直接介入國際比賽,激發(fā)學(xué)生的進取精神。專題二和專題三的實驗成果,已經(jīng)作為參加國際比賽的重要組成部分。同學(xué)們熱情高漲,他們不惜花費大量精力,采用難度大的新算法,意欲比個高低。
7.收集學(xué)生的意見和建議,將教學(xué)推向新高度。對課程提出改進意見,是對學(xué)生專業(yè)實踐總結(jié)的要求之一。我們將認(rèn)真研究學(xué)生提出的建議,進一步改善課程條件,改進教學(xué)方法,將課程推向新高度。
三、創(chuàng)建了四個計算機專業(yè)實踐專題
按照計算機科學(xué)與技術(shù)一級學(xué)科不同的專業(yè)方向,“計算機專業(yè)實踐”課程分為四個專題。
專題1:開放式微處理機設(shè)計與測試。要求學(xué)生自己設(shè)計并用FPGA實現(xiàn)一個CPU芯片,用VHDL硬件描述語言進行設(shè)計,采用先進的工具進行模擬、驗證和測試,在測試通過之后制作成CPU芯片,并在測試系統(tǒng)上通過規(guī)定測試程序和自編測試程序的測試。
采用了我們獨創(chuàng)的實驗方法,學(xué)生可以自由設(shè)計計算機系統(tǒng)結(jié)構(gòu),包括指令系統(tǒng)、尋址方式、數(shù)據(jù)表示、寄存器結(jié)構(gòu)、存儲系統(tǒng)、中斷系統(tǒng)和流水線結(jié)構(gòu)等。該實驗方法已經(jīng)申請了國家發(fā)明專利,按照這種實驗方法研制的教學(xué)實驗裝置“開放式CPU設(shè)計與測試系統(tǒng)”,已經(jīng)在國內(nèi)高校中推廣,獲得廣泛的好評。
專題2:多模態(tài)身份驗證系統(tǒng)。要求學(xué)生集成人臉檢測和識別、語音識別與合成、指紋采集和比對進行身份驗證,并進一步實現(xiàn)如門禁、注冊與考勤、留言及查詢等系統(tǒng)。
采購了指紋獲取芯片,學(xué)生們參與了印刷電路板的制作,指紋儀的研制、調(diào)試,編寫驅(qū)動程序等。同時還購置了攝像頭、麥克風(fēng)等必要的設(shè)備,保證每組都有一套軟硬件完整的實驗環(huán)境。
將專題分解成多個子課題,提供專備的源程序和參考文獻,讓學(xué)生在高的起點上開始實驗,激發(fā)學(xué)生的創(chuàng)造性。
專題3:機器人足球及機器人足球賽。要求學(xué)生設(shè)計機器人的視覺識別與定位、多傳感器融合、系統(tǒng)決策、任務(wù)規(guī)劃、軌跡規(guī)劃等功能模塊,實現(xiàn)對足球的跟蹤、帶球和射門,最后進行演示和比賽。
研制了足球機器人實驗平臺,在平臺上可以進行機器人視覺、系統(tǒng)決策、任務(wù)規(guī)劃、軌跡規(guī)劃、運動控制、信息融合以及多機器人協(xié)調(diào)等方面的研究與實驗工作。制作了支持機器人足球賽的支撐設(shè)備。中型組在起步階段,進行單個球員的技術(shù)演示和比賽,仿真組進行球隊間比賽。
為了支持足球機器人各部分算法和各個功能模塊的調(diào)試,教學(xué)組開發(fā)了仿真驗證系統(tǒng),可以通過可視化界面觀察并驗證算法和程序的執(zhí)行結(jié)果。
專題4:基于FPGA的微機接口設(shè)計。要求完成幾個微機接口芯片的設(shè)計,編寫微機接口程序,通過用自己設(shè)計的芯片實現(xiàn)與微機總線的通訊。同時,學(xué)習(xí)EDA設(shè)計工具的使用方法,并學(xué)習(xí)SoC設(shè)計和驗證方法。
編寫了教材《VHDL與微機接口設(shè)計》,已經(jīng)由清華大學(xué)出版社出版。教材中的相關(guān)資料已放到網(wǎng)絡(luò)學(xué)堂和新建立的服務(wù)器上,有些資料僅給學(xué)生提供下載的路徑,讓同學(xué)自己去找,這樣可以鍛煉學(xué)生查找資料的能力。
為本專題專門研制了教學(xué)實驗系統(tǒng)“FPGA/CPLD微機接口實驗系統(tǒng)”,目前生產(chǎn)了22臺。該實驗系統(tǒng)已經(jīng)在國內(nèi)高校中推廣了2000多套。在前兩年教學(xué)準(zhǔn)備的基礎(chǔ)上,利用現(xiàn)有的實驗環(huán)境,面向全校本科生開設(shè)了一門以實踐為主的課程——“微機接口電路設(shè)計與VHDL語言”。
在師資隊伍方面,本課程的教學(xué)組是一個老中青結(jié)合的隊伍,主要成員包括教授4名,副教授4名,高級工程師和高級實驗師各4名,講師、工程師和實驗師5名,助教、博士生和碩士生10名等。
四、學(xué)生對“計算機專業(yè)實踐”課程的評價
下面是部分學(xué)生在提交的專業(yè)實踐報告中寫的收獲與體會。
雖然在以前的學(xué)習(xí)中也接觸過一些硬件實驗,但是并沒有完全自主地設(shè)計過硬件。原來是有一個肯定的答案擺在那里等著我們?nèi)ふ?,而這次則沒有對錯之分。這種自主設(shè)計也更加貼近今后的研究工作。一個團隊的成功絕不是隊員個人能力累積的結(jié)果,我們的成功得益于我們非常好的團隊合作關(guān)系?,F(xiàn)在實驗完成了,我們總結(jié)了一些合作當(dāng)中比較關(guān)鍵的因素:責(zé)任心、互補的性格、尊重對方的意見、不互相埋怨、相互鼓勵信任,這些都是在團隊合作中,隊員應(yīng)該具備的素質(zhì)。再配以合理的分工,那么看起來很普通的人組成的團隊,也可以釋放出超出累計和的效果,就是所謂的1+1>2。人總是如此,對于沒有做過不熟悉的東西都多少有些畏懼。曾經(jīng)大多是按部就班地做作業(yè)做實驗,大家可以不了解自己的創(chuàng)造力和研究能力,通過這樣一個實驗也讓大家更加了解自己,增強了這方面的信心。
這次實驗從查閱資料、看書學(xué)習(xí)到指令系統(tǒng)的設(shè)計和體系結(jié)構(gòu)的確定,然后到編寫代碼再到最后的測試和調(diào)試成功一共經(jīng)歷了4個星期的時間。期間的喜怒哀樂都因這個CPU而起。我們其實碰到了無數(shù)的問題,但通過我們的共同努力與合作最終解決了這些問題。最后設(shè)計出了帶5級流水線主頻23.8MHz的RISC-CPU。通過這次實驗也鍛煉了我們的團隊合作精神,這樣一個大項目如果僅靠一個人的力量,在短短4周內(nèi)是不可能完成的。這樣兩個人之間的團結(jié)合作就顯得尤為重要。我們配合得比較默契,基本上保證了整個工程項目的并行運行。
通過本次專業(yè)實踐也進一步提高了我們的實際動手能力和解決實際問題的能力,特別是對硬件實際動手調(diào)試的能力。這方面能力的提高是這個專業(yè)實踐的最大收獲。這對我們今后讀研和工作來說都是一筆寶貴的財富。經(jīng)過一個月的艱苦努力,最終做出了一個我們自己的CPU。雖然在性能上差了點,但這也足夠讓我們高興一陣子了。這畢竟是我們在沒有任何經(jīng)驗的前提下做出的第一個CPU,其中的艱辛和結(jié)果出來時的成就感也許只有我們自己才能夠體會到。
在以前的課程中,我們都是用已經(jīng)很成熟的教學(xué)器材來進行試驗,基本上沒有遇到過什么大的困難。這次就不一樣了,還遇到了軟件的問題、硬件的問題、兩者協(xié)同的問題。很多時候,剛剛解決了一個,就會出現(xiàn)一個新的。課程結(jié)束以后,同學(xué)們普遍體會到理論結(jié)合實際、培養(yǎng)動手能力的重要意義,體會到做實際系統(tǒng)要比方法模擬付出更大的艱辛。通過這次試驗,我們知道了理論和實際之間的差異,這為我們以后的工作提供了一些積累。
在平時的學(xué)習(xí)中,通常我們都是完成一個固定的題目,不需要太多創(chuàng)造。而這次的CPU設(shè)計是完全開放的,留給我們很大的創(chuàng)造空間,同時也提出了很大的挑戰(zhàn)。當(dāng)拿到一個題目時,如何開始收集資料,認(rèn)真學(xué)習(xí)相關(guān)知識,最終確定設(shè)計方案,隨后的設(shè)計和編碼調(diào)試等,每一步都是新鮮的東西,每一步都是從頭學(xué)起。在這短短的一個月中,我們不斷學(xué)習(xí),不斷創(chuàng)新,受益匪淺。
總之,通過此次硬件專業(yè)實踐的訓(xùn)練,既檢驗了我們理論知識水平,又培養(yǎng)了我們嚴(yán)謹(jǐn)踏實、堅韌不拔的科學(xué)探索精神。而這些都是我們在平時課上所體會不到的。我們感覺這次教學(xué)實驗,收獲非常大,達到了鍛煉的目的,對我們今后的學(xué)習(xí)研究都有很大的幫助!