賀蓮+龔奕利+蔡朝暉+劉樹波
摘 要:培養(yǎng)動手實踐能力是硬件教學(xué)的重點之一,但在實際的硬件課程學(xué)習(xí)過程中,學(xué)生普遍存在興趣低、知識點應(yīng)用性不足等問題。文章提出對原有硬件課程體系進(jìn)行改進(jìn),增加計算機(jī)系統(tǒng)基礎(chǔ)課程,調(diào)整體系中各門課程的知識點結(jié)構(gòu)與內(nèi)容,將計算思維融入整個教學(xué)過程,從知識點在問題求解中的作用入手,引導(dǎo)學(xué)生建立系統(tǒng)觀念,明確所學(xué)知識的實際用途,提高學(xué)生的學(xué)習(xí)興趣。
關(guān)鍵詞:計算機(jī)硬件課程體系;計算思維;系統(tǒng)概念
0 引 言
長期以來,培養(yǎng)和訓(xùn)練學(xué)生的動手實踐能力一直是硬件教學(xué)的一個重點。在實際教學(xué)過程中,除了實驗和課程設(shè)計之外,理論教學(xué)也非常重視對學(xué)生解決問題能力的引導(dǎo)。2006年3月,美國卡內(nèi)基·梅隆大學(xué)計算機(jī)科學(xué)系主任周以真(Jeannette M. Wing)教授在美國計算機(jī)權(quán)威期刊《Communications of the ACM》上撰文描述了計算思維(computational thinking):計算思維是運用計算機(jī)科學(xué)的基本概念進(jìn)行問題求解、系統(tǒng)設(shè)計和人類行為的理解。這篇文章從多個方面詳細(xì)地解釋了計算思維的含義,如對于間接尋址和過程調(diào)用,就既要了解其能力,又要明白使用它們的代價;而在評價一個程序時,不僅要考慮其準(zhǔn)確性和效率,還要有美學(xué)方面的考量,對于系統(tǒng)的設(shè)計,則還要考慮簡潔和優(yōu)雅。文章認(rèn)為計算思維是將一個看上去很困難的問題轉(zhuǎn)換成能用已知方法求解的問題,這其中可能會用到簡化、嵌入、變換或模擬等方法[1]。
以往的教學(xué)中比較強(qiáng)調(diào)知識點,而以計算思維為導(dǎo)向就意味著要教給學(xué)生知識點的根源所在,引導(dǎo)學(xué)生用已知的知識點解決新的問題。將計算思維貫徹到教學(xué)中是為提高學(xué)生的動手實踐能力提供了一個具體、明確、操作性強(qiáng)的指導(dǎo)原則和方法[2-6]。
1 硬件課程體系架構(gòu)
原有硬件課程體系的核心課程包括數(shù)字邏輯、計算機(jī)組成原理、接口技術(shù)、體系結(jié)構(gòu)和嵌入式系統(tǒng)。在這樣的教學(xué)培養(yǎng)方案下,學(xué)生對于為什么要學(xué)習(xí)硬件知識缺乏初步的感性認(rèn)知,常常是為了學(xué)習(xí)而學(xué)習(xí);同時,由于對硬件課程與軟件課程之間的關(guān)系了解不充分,學(xué)習(xí)時通常會將兩者割裂開,而無法建立統(tǒng)一的系統(tǒng)概念,對硬件課程缺乏學(xué)習(xí)興趣。
在以計算思維為導(dǎo)向的新硬件課程體系中,首先可以增設(shè)計算機(jī)系統(tǒng)基礎(chǔ)課程,主要講授計算機(jī)系統(tǒng)底層的基本概念、系統(tǒng)的內(nèi)在運作及其對程序運行性能的影響。這將使學(xué)生在深入學(xué)習(xí)計算機(jī)各組件之前能對計算機(jī)系統(tǒng)有一個總體的概念,并在后續(xù)專業(yè)課程的學(xué)習(xí)中保持住這種局部與整體的統(tǒng)一;同時,在這門前導(dǎo)課程中,教師還可提出很多與系統(tǒng)軟件功能和應(yīng)用程序性能直接相關(guān)的問題,并提示學(xué)生在后續(xù)課程中會講授新的知識,以解決這些問題。
其次,可以按照認(rèn)知規(guī)律與知識演進(jìn)過程重新安排課程時間:數(shù)字邏輯課程的授課時間為一年級下學(xué)期,組成原理課程安排在二年級上學(xué)期,接口技術(shù)安排在二年級下學(xué)期,體系結(jié)構(gòu)安排在三年級上學(xué)期,嵌入式系統(tǒng)安排在三年級下學(xué)期。計算機(jī)系統(tǒng)基礎(chǔ)、數(shù)字邏輯和計算機(jī)組成原理為專業(yè)基礎(chǔ)課,接口技術(shù)、體系結(jié)構(gòu)和嵌入式系統(tǒng)為專業(yè)課。
最后,為了突出課程之間的關(guān)聯(lián)性和連接性,可以重新安排教學(xué)內(nèi)容和教學(xué)重點。系統(tǒng)基礎(chǔ)概述計算機(jī)系統(tǒng)的整體概念,提出系統(tǒng)設(shè)計的核心問題;數(shù)字邏輯包含數(shù)字系統(tǒng)分析與設(shè)計的基本知識和基本理論;組成原理主要是使學(xué)生理解單處理器計算機(jī)系統(tǒng)中各部件的內(nèi)部工作原理、組成結(jié)構(gòu)以及相互連接方式;接口技術(shù)是對組成原理的擴(kuò)展,講授計算機(jī)系統(tǒng)各部件之間以及系統(tǒng)與外設(shè)之間的連接;嵌入式系統(tǒng)主要圍繞ARM9架構(gòu),從51單片機(jī)入門逐漸過渡到ARM的體系結(jié)構(gòu)及基本的ARM編程,講授嵌入式系統(tǒng)的基本設(shè)計原理及開發(fā)方法;體系結(jié)構(gòu)則從組織和結(jié)構(gòu)的角度學(xué)習(xí)、領(lǐng)會計算機(jī)系統(tǒng),研究如何更好地對計算機(jī)系統(tǒng)的軟、硬件功能進(jìn)行功能分配與實現(xiàn),提高系統(tǒng)的性價比。
新課程體系在內(nèi)容安排上融合了計算思維,在理論教學(xué)的同時注重對學(xué)生動手實踐能力的培養(yǎng)。由于計算機(jī)系統(tǒng)是一個整體,各課程之間不可避免地存在內(nèi)容重疊,因此在劃分具體內(nèi)容時,我們堅持3個原則:①根據(jù)課程大綱進(jìn)行選擇,盡量減少與其他課程內(nèi)容重復(fù)的部分;②對于重疊知識點,根據(jù)不同課程的特點與教學(xué)要求區(qū)分層次和重點;③強(qiáng)調(diào)課程知識點間的銜接,連接各知識點形成網(wǎng)狀知識結(jié)構(gòu)。
以存儲系統(tǒng)的學(xué)習(xí)過程為例,表1展示了6門課程中與存儲系統(tǒng)相關(guān)的知識點。從表1可以發(fā)現(xiàn),不同課程之間存在相同的知識點,但是這些知識點在不同課程中的難易度、深度和側(cè)重點是有差異的,這種差異體現(xiàn)了計算機(jī)硬件體系概念形成過程的自身特點以及人類的認(rèn)知規(guī)律。
2 計算思維在教學(xué)內(nèi)容中的體現(xiàn)
在原來的教學(xué)過程中,教師往往將重點放在知識點本身,著重講授知識點的內(nèi)涵以及該知識點對某個部件的意義,對于掌握該知識點在解決實際問題時起到的作用則關(guān)注較少。對此,我們在構(gòu)建硬件課程體系時進(jìn)行了一些調(diào)整:首先說明知識點能解決什么問題,然后通過不同課程的學(xué)習(xí)逐步加深對知識點的理解,以達(dá)到最終解答問題的目的。在實際授課過程中,配合每門課程的主要內(nèi)容,將實際問題細(xì)化分解到各門課程,讓學(xué)生帶著問題學(xué)習(xí),知道課程知識能解決哪些問題,這些問題對實際的計算機(jī)應(yīng)用又會產(chǎn)生怎樣的影響。教師可以存儲子系統(tǒng)的教學(xué)過程為例闡明這個思路,如圖1所示。
2.1 提出問題——計算機(jī)系統(tǒng)基礎(chǔ)課程
計算機(jī)系統(tǒng)基礎(chǔ)課程介紹存儲系統(tǒng)的層次結(jié)構(gòu),從寄存器到海量存儲器,以及每一層在計算機(jī)系統(tǒng)中所處的位置,如寄存器在CPU中,位于整個層次結(jié)構(gòu)的頂端;內(nèi)存位于高速緩存和硬盤之間。一方面,這使學(xué)生對各種存儲部件和整體的存儲系統(tǒng)能有初步的認(rèn)識;另一方面,該課程從程序員的角度介紹存儲系統(tǒng)對程序性能的影響,還能讓學(xué)生了解到學(xué)習(xí)這部分內(nèi)容后對程序編寫和優(yōu)化的作用。這時可以提出一個問題:如何實現(xiàn)一個成本低、效率高、性能優(yōu)的存儲系統(tǒng)。帶著這個問題,對相關(guān)知識點的教學(xué)就從大框架轉(zhuǎn)為組件,從應(yīng)用層跳轉(zhuǎn)到底層細(xì)節(jié),逐步明確存儲系統(tǒng)的功能、對程序性能的影響以及這些功能和影響是如何實現(xiàn)的;從數(shù)字邏輯課程的存儲元邏輯結(jié)構(gòu)逐漸延伸到體系結(jié)構(gòu)課程的存儲系統(tǒng)優(yōu)化,實現(xiàn)一個完整且連貫的知識學(xué)習(xí)與知識運用過程。
2.2 系統(tǒng)基礎(chǔ)元器件——數(shù)字邏輯課程
數(shù)字邏輯課程從邏輯設(shè)計的角度介紹硬件設(shè)計的基本單元,如定時器、選擇器、觸發(fā)器等的結(jié)構(gòu)、特征和應(yīng)用,電路分析、設(shè)計及測試原理和工具,這些是設(shè)計和構(gòu)成存儲器的必要基礎(chǔ)。這里提出并解決的問題是怎樣用元件組成一個存儲陣列。
2.3 系統(tǒng)部件——計算機(jī)組成課程
組成原理課程詳細(xì)解釋了寄存器、Cache、內(nèi)存、硬盤和磁盤的工作原理,以及由不同存儲器構(gòu)成的存儲器層次結(jié)構(gòu)。學(xué)生重點掌握存儲器的基本結(jié)構(gòu)、地址格式、地址變換以及相互之間地址的映射、數(shù)據(jù)在不同層次存儲器之間如何調(diào)度。在這門課程中,學(xué)生對知識的理解從元件上升到部件,從存儲元上升到存儲器。這里提出并解決的問題是不同層次的存儲器如何工作,它們之間如何形成一個完整且工作正常的存儲系統(tǒng)。
2.4 系統(tǒng)連接——微機(jī)系統(tǒng)與接口技術(shù)課程
接口技術(shù)課程中存儲器子系統(tǒng)的重點放在微處理器中存儲器地址空間的硬件組織、內(nèi)存與主機(jī)系統(tǒng)的連接,并介紹典型機(jī)型的存儲子系統(tǒng),使學(xué)生對知識點的理解開始從組件向整體過渡。這里提出并解決的問題是存儲系統(tǒng)如何與主機(jī)系統(tǒng)連接。
2.5 系統(tǒng)整體與優(yōu)化——計算機(jī)體系結(jié)構(gòu)課程與嵌入式課程
體系結(jié)構(gòu)課程從系統(tǒng)整體的角度詳細(xì)說明了Cache的各種優(yōu)化方式及其對系統(tǒng)性能的影響、數(shù)據(jù)在系統(tǒng)中的一致性問題及其解決方法等。這門課程著重強(qiáng)調(diào)部件與系統(tǒng)的關(guān)系,要讓學(xué)生意識到對部件的改進(jìn)不僅僅影響該部件本身,還會影響整個系統(tǒng);此外,改進(jìn)不一定會帶來預(yù)期效果,因此還需要考慮一種改進(jìn)方式的可行性。這里提出并解決的問題是怎樣才能基于系統(tǒng)整體性能的提升來優(yōu)化存儲系統(tǒng)。
嵌入式系統(tǒng)課程則主要說明嵌入式系統(tǒng)中的存儲系統(tǒng),它與組成原理和體系結(jié)構(gòu)課程一起涵蓋了目前最普遍的3種架構(gòu)MIPS、Intel和ARM,拓寬了學(xué)生的知識面,使得學(xué)生能在這些主流架構(gòu)中靈活運用學(xué)到的知識。
當(dāng)學(xué)生完成這些課程的學(xué)習(xí)后,就能對存儲系統(tǒng)形成一個完整且連續(xù)的認(rèn)識,不僅知道存儲器、存儲系統(tǒng)是什么,還知道每層存儲器是如何工作,又是怎樣形成一個系統(tǒng)的,以及如何在這樣一個系統(tǒng)中定位一個問題并找到解決該問題的方法。也就是說,經(jīng)過硬件課程體系的學(xué)習(xí)后,學(xué)生能夠自行構(gòu)建一個存儲層次結(jié)構(gòu),以回答最初在計算機(jī)系統(tǒng)基礎(chǔ)課程中提出的問題:如何實現(xiàn)一個成本低、效率高、性能優(yōu)的存儲系統(tǒng)。
3 結(jié) 語
按照對學(xué)生能力培養(yǎng)的要求,依據(jù)多年的教學(xué)實踐,結(jié)合計算機(jī)硬件技術(shù)的發(fā)展現(xiàn)狀,我們對計算機(jī)硬件課程系列進(jìn)行了調(diào)整和改進(jìn),不僅添加了新課程,而且重新梳理了課程內(nèi)容以及課程間知識的關(guān)聯(lián),形成了新的硬件課程體系。通過該體系的教學(xué),學(xué)生的學(xué)習(xí)和掌握過程更加連續(xù)、平滑:從元件到組件、從局部到系統(tǒng)、從單一課程中的知識點理論到實際應(yīng)用問題求解,將計算思維滲透到教學(xué)過程中,也滲透到學(xué)生對知識的掌握中。
從關(guān)注知識點本身,到關(guān)注如何運用知識點解決問題,這是我們進(jìn)行新硬件課程體系構(gòu)建的初衷。長期以來,學(xué)生在學(xué)習(xí)硬件課程之后常常會產(chǎn)生一個疑問:學(xué)習(xí)這門課究竟有什么用?當(dāng)他們實際工作后,又會發(fā)現(xiàn)在解決很多編程和程序優(yōu)化問題時,都需要用到之前學(xué)習(xí)過的硬件知識。這種認(rèn)知上的矛盾,恰好反映出硬件教學(xué)中存在的一個難點:在大部分畢業(yè)生都從事與軟件相關(guān)工作的現(xiàn)實情況下,硬件課程教學(xué)應(yīng)怎樣加強(qiáng)與實際問題求解之間的聯(lián)系。計算思維為此提供了一個很好的思路,以問題為導(dǎo)向,讓學(xué)生帶著明確的求解任務(wù)學(xué)習(xí)硬件知識。下一步工作中,我們將著眼于完善課程體系的實驗系統(tǒng),以期達(dá)到既加深學(xué)生對課程內(nèi)容的理解,又訓(xùn)練其解決實際問題能力的目的。
參考文獻(xiàn):
[1] Wing J M. Computational thinking[J]. Communications of the ACM, 2006, 49(3): 33-35.
[2] 馮博琴. 對于計算思維能力培養(yǎng)“落地”問題的探討[J]. 中國大學(xué)教學(xué), 2012(9): 6-9.
[3] 李志圣, 邢振祥, 唐國峰. 計算機(jī)基礎(chǔ)教學(xué)中計算思維能力培養(yǎng)的標(biāo)準(zhǔn)化研究[J]. 計算機(jī)教育, 2016(6): 34-37.
[4] 龔沛曾, 楊志強(qiáng), 朱君波, 等. 以計算思維為切入點的計算機(jī)基礎(chǔ)課程聯(lián)動改革與實踐[J]. 中國大學(xué)教學(xué), 2015(11): 53-56.
[5] 王大鵬, 王續(xù)琨, 劉德山, 等. 以計算思維為主線整合大學(xué)計算機(jī)通識課程[J]. 計算機(jī)教育, 2016(9): 95-98.
[6] 沈華, 張明武. 以計算思維為中心的數(shù)據(jù)結(jié)構(gòu)教學(xué)方法探討[J]. 計算機(jī)教育, 2016(10): 145-148.
(編輯:宋文婷)