摘 要:針對軟件工程特殊的專業背景和應用性的需求,從教學思路、教學內容、教學方法及教學實踐環節幾方面,對我校開展計算機組織與結構課程教學的新理念和新思路進行了探討,其經驗對相同專業的其他教師有較好的借鑒作用。
關鍵詞:軟件工程專業;計算機組織與結構;教學內容;教學方法
目前軟件工程是信息領域發展最快的學科分支之一。面對國家產業發展的戰略重點和激烈的人才競爭形勢,面向市場需求,改革軟件人才培養模式,加大軟件人才培養力度,已經成為當前高等教育改革與發展的一項重要和緊迫任務。為此,教育部從2001年起選擇了若干高等學校,支持其試辦示范性軟件學院,并開設本科軟件工程專業。我校軟件學院是教育部、國家計委批準的首批試辦的示范性軟件學院。學院利用學校在計算機和數學學科上的優勢,借鑒國內外優秀的管理經驗和教學模式,十分注重軟件工程專業的培養目標,根據軟件企業的需求,按照工程化、國際化的培養方向,建立復合型軟件實用人才的培養模式,加大復合型軟件實用人才培養力度。
而“計算機組織與結構”作為計算機專業的重要專業基礎課也被列入我院軟件工程專業的培養計劃中,在一系列軟件、硬件課程中處于承上啟下的作用。但由于軟件工程專業自身特點,使得該課程的內容選擇、教學目標、課時分配等方面都與傳統的計算機專業不盡相同,為了適應更好地適應本專業教學體系要求,我們對該課程教學進行了一些有益的嘗試和探索,獲得了學生的認同,取得了比較滿意的效果。
1 合理選擇教材與教學內容
由于課時所限,我們將計算機科學專業開設的“計算機組成原理”和“計算機系統結構”兩門專業課整合為“計算機組織與結構”,安排在本科生第三
學年上學期講授,理論教學計劃56學時。前修相關課程包括匯編語言、數字邏輯與系統設計,后續相關課程包括操作系統、編譯原理等。此時學生對計算機應用性知識已經相當熟悉,很大一部分學生已經具有了比較好的軟件編程能力。但本課程所涉及的主要是計算機硬件原理知識,內容比較抽象,而且理論概念較多,學生們覺得該門難懂難學,且對他們未來職業可用性不大,學習積極性普遍不高。針對這些情況,我們首先根據專業需求重新定位課程目標,目標不應再定位于培養學生未來從事硬件開發的能力,而是要求學生能從系統角度來理解計算機的整體實現,培養學生對硬件系統的分析及應用能力。
基于上述指導思想,我們在眾多教材中最終選定由William Stalling編寫、張昆藏翻譯的國外著名計算機教材《計算機組織與體系結構——性能設計》(第7版)為主教材[1]。因為:一是該教材把計算機系統性能問題和計算機組成的基本概念與原理有機聯系起來,而且介紹層次感更強,知識涵蓋性比較寬,但總體難度并不是特別大,學生接受起來比較容易;二是該教材版本更新非常快,能很快捕捉業界新技術的發展,實用性比較強。同時,我們也推薦了白中英主編的《計算機組織與結構》(第4版)[2]和王愛英主編的《計算機組成與結構》(第4版)[3]作為輔助教材,滿足不同層次的學生學習的需要。
根據教學大綱以及教學計劃的安排,我們對本書18個章節都進行講授,但內容側重不同,重點講授
作者簡介:李晨,女,講師,研究方向為計算機組成、信息融合理論;朱利,男,副教授,研究方向為計算機組成、計算機網絡。
的內容包括:第二部分中Cache存儲器章節,第三部分中CPU結構和功能以及指令級并行和超標量處理器章節,第四部分并行處理章節。對于這些章節,除了教材內容講授,還穿插了例題講解、實例分析等多種手段來加深學生理解。而其他章節則主要以介紹教材內容為主,同時也根據需要適當的補充相關知識,如在內部存儲器部分,我們就補充了存儲器芯片字擴展、位擴展以及字位擴展的方法等,彌補了學生在考研復習時的盲區。
2 依據本專業特點講解知識內容
相比傳統的計算機專業,軟件專業學生對軟件開發興趣很大,但對于硬件成分比較多的計算機組成和結構課畏懼情緒嚴重。我們針對學生的這些心理,在講課中堅持自頂向下、分層展開的原則來介紹計算機系統的性質與特征,并將軟硬件互通的理念滲透講述之中,同時盡可能多地引入與軟件相關的例子,調動學生學習興趣。如在講CPU結構和功能這一章時,流水線的概念講解完,我們會啟發學生:這樣的硬件設計思想同樣也可以用于多線程并行處理,如在視頻處理時,一般都會有采集、編碼、打包及發送這樣步驟,可以把這幾個步驟像流水線一樣采用不同線程處理,在第一幀圖像進入編碼時,第二幀圖像就可以進入采集模塊,其他各幀類似,這樣就可以并行對不同圖像同時進行處理,計算效率更高,視頻通信將會變得更為平滑。通過這樣的講解,學生不但對流水線的思想理解深刻,而且他們也會很驚奇于軟硬件的聯系,感到學有所用,在下面學習中,會比較主動地找軟硬件之間的切入點。后面講到IA-64中軟件流水技術時,學生就非常容易理解,并能積極主動的表述自己的觀點。
在學習了流水線以及超標量設計思想后,學生已經了解哪些情況會影響機器的并行性,這時我們會適時提示學生目前的機器基本都是采用流水線以及超標量的處理器,那么在軟件人員進行高級的開發編程時,就一定要考慮到硬件特性,盡量避免過多的子程序調用,以及不必要的循環,從而達到整體提升系統效率的效果。這樣一來,學生學習后的應用感就很強,學習動力得到了很大的提升。
3 多種教學方法并用,提升教學效果
在教學中為了達到教學目標,應當強調學生學習的主動性。作為專業基礎課,計算機組成與結構課程的教學大部分還是以老師為中心,以知識的傳遞為主體。但不能說整個教學過程都如此單一,這樣學生學習的主動性和積極性都會受到影響。我們要有意識地引導學生去主動思考[4],通過以下嘗試讓學生參與到教學實踐活動中來。
1) 采用啟發式教學方式調動學生的思維,引導學生得出合理的結論。如在講存儲器的層次結構時,我們先介紹一下目前各類存儲器各自的特點,然后拋出問題讓學生考慮如何處理存儲器價格、速度和容量之間的矛盾。然后在學生充分思考的基礎上水到渠成地引出目前所采用的存儲器的三層結構,這樣學生不但能夠知其然,更能知其所以然。
2) 對于某些有重復的內容,鼓勵學生自己上臺講解,然后老師進行總結補充。如當我們在講輸入輸出這一章里關于IO操作可采用的三種技術時,由于學生在之前的匯編語言課上已經對編程式IO、中斷驅動式IO以及存儲器直接存取DMA方式進行了學習,在講這部分內容時,學生往往覺得已經學過就會思想放松,態度不認真而導致學習效果不好。我們提前告知學生,這部分內容課堂上隨機抽取同學先從匯編角度談談自己對這三種技術的認識,這樣學生就會提前準備,學生講完后,我們再從組成角度談這三者的不同以及CPU不同的處理過程,這樣學生真正體會從另外一個角度分析問題的必要性,對知識的理解也會更加深刻。
3) 重點內容加入討論式教學,加強互動。在講Cache時,同學們普遍反映映射技術替換算法很難理解,那么針對這個問題,我們在課堂上將這部分內容講解完后,留出典型例子讓同學們討論分析當Cache應用三種不同的映射方式再采用不同的替換算法的會出現什么結果。學生覺得這種方式很新鮮,討論中沒有拘束感,氣氛很活躍。這樣在小部分理解能力強的學生的帶動下,大家基本都能對這三種映射方式和替換算法的過程了解得比較透徹,最后老師只要稍加總結,學生們馬上就能反映上來。
4 實驗設計軟硬兼顧,訓練學生綜合能力
對于我們這門課,它是理論性和實踐性都很強的專業基礎課。因此課程教學與實驗上機相結合尤為重要,硬件實驗是非常必要且重要的[5-6]。如何讓軟件工程專業的同學對硬件實驗不但能提起興趣,做通搞懂,還能把這些實驗盡量和未來的就業需求有效結合,這成為擺在授課老師面前的一個難題。為此我們把軟件實驗也納入實驗環節,并把實驗分為如下三個層次:基礎性實驗、綜合性實驗,開發性實驗。基礎性實驗是配合理論教學內容,進一步加深學生對于理論知識的理解而開展;綜合性實驗為了培養學生的設計能力和分析解決問題的能力;研究性實驗是更高層次的要求,是為了培養學生的創新思維和研究能力。這樣的分層次教學和堅持理論和實踐相統一的原則,更有利于培養軟件專業學生的適應能力。
一方面我們主要使用由杭州康芯電子有限公司生產的GW48-CP+計算機組成原理實驗開發系統(主芯片為FPGA)作為實驗教學平臺,另一方面引入少部分軟件實驗,配合驗證硬件的性能。
這里,我們在學了MMX指令以后,就布置了一個軟件驗證性實驗,讓學生使用一般技術和MMX技術方法實現圖像的淡入淡出操作來比較兩者的不同,進而驗證該硬件性能對處理速度的影響。這樣學生一方面可以通過實驗驗證理論,對硬件的作用也有更直觀的體會,另一方面對圖像處理的軟件編程有所觸及。實驗過程中由于圖像處理可視化效果好,學生做起來也很新鮮。
當然軟件實驗只是一種有益的補充,這門課還是要以硬件實驗為主,那么在基礎性實驗部分,我們也布置了如運算器、存儲器等實驗。一方面讓學生熟悉實驗環境和硬件編程語言,另一方面使學生進一步學習并掌握計算機主要部件工作原理,
在綜合性實驗部分,我們安排了設計基本8位模型機等,讓學生在前一階段的實驗基礎上,運用微程序的設計思想來構建模型機,掌握整機運行模式,進一步鞏固理論知識的理解。
在研究性實驗部分,打破完全硬件實驗的思路。我們要求學生在已有實驗平臺上根據某些應用的實際需求,完成一個基于NiosII的SOPC系統的設計,使系統具有一定的技術先進性和實用價值。在實施方法上,我們全程配合開放性實驗室,實驗以分組形式進行共同設計調試,一般4~5人一組,。學生需要進行開發平臺應用分析,在此基礎之上學生根據自己的愛好、能力進行選題,每組學生需提交正式的選通報告,由指導老師對選題進行審核。接下來開始進行系統總體設計與系統詳細設計并提交相關報告,然后由各組自行安排組內成員在QuartusII中搭建硬件原理圖并進行仿真測試,最后完成硬件測試報告。下一步就需要針對所要實現的具體功能,編寫相應的C語言控制程序,最終在NiosII的環境下,載入硬件系統進行軟硬件的聯調,并完成功能測試報告。在每個系統開發階段組織討論會,由老師檢查各階段的進度和質量,最終驗收并評定成績,期間教師不過多參與學生設計,鼓勵學生相互交流討論,自己動手實驗解決問題,提高學生的自主學習和動手能力。通過這一階段實驗,學生對計算機的內部結構有了更明確的了解,同時對當代計算機的硬件設計有了比較全面的認識,同時也發揮了本專業學生軟件編程的特長,對于底層的C語言開發進行了很好的鍛煉,使之了解軟硬件之間的配合,為以后的就業也打開了一個新的方向,學生們普遍反映收獲很大。
5 適時穿插本學科的最新科技動向
現在很多學生也都比較關注業界新技術的發展,但是他們對新技術的實質以及他們和原有技術之間的關系都不清楚,對這方面知識有很強的渴望。那么教師在課堂上講到相關內容時,適時地對新技術進行介紹,不但能化解學生心中的疑云,活躍課堂氣氛,更能促使他們自己查找資料跟蹤新技術新動向,為日后良好的職業習慣的培養奠定基礎。如講到磁盤時,可以針對目前市場上大容量磁盤采用的垂直存取技術進行介紹,讓學生能明白如何能在成本不變的條件下,達到磁盤容量大規模增加的效果。還有在講完并行系統時,可以對業界熱點——云計算技術進行說明,更讓學生感到新技術并不遙遠,促使其有深入研究的興趣。
6 結語
在研究型大學的背景下,在培養學生的過程中,我們本著對學生創新能力和實際工程能力培養相結合的思路,堅持以學生為本,對計算機組織與結構課程的教學進行一些改革和探索。隨著科學技術的不斷發展,計算機技術更是日新月異,課程教學也需要不斷更新變化,所以未來我們仍要不斷學習,結合實際繼續摸索,使課程改革成為一個持續不斷的過程,以取得更好的教學效果。 (下轉52頁)