- 相關(guān)推薦
論啟發(fā)式教學(xué)法在計(jì)算機(jī)專業(yè)學(xué)生系統(tǒng)能力培養(yǎng)的運(yùn)用論文
引言
2013 年,教育部計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)教學(xué)指導(dǎo)委員會(huì)系統(tǒng)研究組提出要加強(qiáng)學(xué)生系統(tǒng)能力培養(yǎng),明確指出學(xué)生的系統(tǒng)能力核心是:“在掌握計(jì)算系統(tǒng)基本原理的基礎(chǔ)上,熟悉如何進(jìn)一步開發(fā)構(gòu)建以計(jì)算技術(shù)為核心的應(yīng)用系統(tǒng)!蓖瑫r(shí)建議把計(jì)算機(jī)專業(yè)課程分成三個(gè)層次,即:計(jì)算機(jī)系統(tǒng)基礎(chǔ)課程、重組內(nèi)容的核心課程和側(cè)重不同計(jì)算系統(tǒng)的若干相關(guān)平臺(tái)應(yīng)用課程。操作系統(tǒng)課程被劃分到第二層次,是計(jì)算機(jī)系統(tǒng)能力培養(yǎng)最基本的核心課程。
操作系統(tǒng)課程具有概念抽象、系統(tǒng)性差、原理性強(qiáng)等特點(diǎn),教師授課難度較大,學(xué)生在學(xué)習(xí)過(guò)程中也往往感到非常抽象和難以理解。要將課程中抽象的原理與具體繁瑣的操作系統(tǒng)實(shí)現(xiàn)技術(shù)有機(jī)結(jié)合起來(lái),并以比較直觀的、易于理解和易于掌握的形式展現(xiàn),就必須輔以相應(yīng)的實(shí)驗(yàn)。然而,以知識(shí)傳授為核心的靜態(tài)實(shí)驗(yàn)教學(xué)方式(即教師在課堂上把實(shí)驗(yàn)原理、目的、步驟及注意事項(xiàng)均詳細(xì)講解一遍,學(xué)生只需按部就班地操作,用不著查資料,也不需思考實(shí)驗(yàn)中還有沒有需要改進(jìn)的地方。)會(huì)使學(xué)生完全處于被動(dòng)狀態(tài),壓抑他們的學(xué)習(xí)興趣和主動(dòng)參與實(shí)驗(yàn)的積極性!皢l(fā)式”教學(xué)法與傳統(tǒng)的灌輸式教學(xué)不同,它更強(qiáng)調(diào)學(xué)生在教師的引領(lǐng)和啟示下,主動(dòng)參與到發(fā)現(xiàn)問(wèn)題、尋求答案的過(guò)程中,從而提高他們獨(dú)立思考、解決問(wèn)題的能力。下面以操作系統(tǒng)原理中經(jīng)典的“生產(chǎn)者-消費(fèi)者”實(shí)驗(yàn)為例,對(duì)在實(shí)驗(yàn)課中應(yīng)用“啟發(fā)式”教學(xué)法培養(yǎng)學(xué)生的系統(tǒng)能力進(jìn)行初步探索。
1 問(wèn)題描述
“生產(chǎn)者-消費(fèi)者”是一個(gè)著名的進(jìn)程同步問(wèn)題。它描述的是:有一群生產(chǎn)者進(jìn)程在生產(chǎn)產(chǎn)品,并將這些產(chǎn)品提供給消費(fèi)者進(jìn)程去消費(fèi)。為使生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程能并發(fā)執(zhí)行,在兩者之間設(shè)置了一個(gè)具有n 個(gè)緩沖區(qū)的緩沖池,生產(chǎn)者進(jìn)程可以將其所生產(chǎn)的產(chǎn)品放入一個(gè)緩沖區(qū)中;消費(fèi)者進(jìn)程可從一個(gè)緩沖區(qū)中取走產(chǎn)品去消費(fèi)。盡管所有的生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程都是以異步方式運(yùn)行的,但它們之間必須保持同步,既不允許消費(fèi)者進(jìn)程到一個(gè)空緩沖區(qū)去取產(chǎn)品,也不允許生產(chǎn)者進(jìn)程向一個(gè)已裝滿產(chǎn)品且尚未被取走的緩沖區(qū)中投放產(chǎn)品。
“生產(chǎn)者-消費(fèi)者”實(shí)驗(yàn)安排在“經(jīng)典的進(jìn)程同步問(wèn)題”理論課之后。通過(guò)學(xué)習(xí),學(xué)生已經(jīng)熟悉“生產(chǎn)者-消費(fèi)者”模型,知道各進(jìn)程應(yīng)該互斥地使用緩沖池,且生產(chǎn)者進(jìn)程和消費(fèi)者進(jìn)程之間需要用信號(hào)量同步。
2 組織實(shí)施
為減少學(xué)生對(duì)教師的依賴,加大他們?cè)趯?shí)驗(yàn)中的參與度,培養(yǎng)他們的系統(tǒng)能力,我們把“生產(chǎn)者-消費(fèi)者”實(shí)驗(yàn)的組織劃分為三個(gè)階段:課前布置任務(wù)、課內(nèi)檢查引導(dǎo)、課后收集反饋。
2.1 課前布置任務(wù)
為加大學(xué)生對(duì)實(shí)驗(yàn)的參與度,我們?cè)趯?shí)驗(yàn)課前向?qū)W生明確實(shí)驗(yàn)任務(wù)并提供相關(guān)API 函數(shù)的簡(jiǎn)單說(shuō)明,要求學(xué)生學(xué)習(xí)資料并思考“生產(chǎn)者-消費(fèi)者”模型實(shí)現(xiàn)的方法。
2.1.1 明確實(shí)驗(yàn)任務(wù)
在理解“生產(chǎn)者-消費(fèi)者”模型的基礎(chǔ)上,利用多線程技術(shù)模擬實(shí)現(xiàn)一組生產(chǎn)者和消費(fèi)者;并假設(shè)這些生產(chǎn)者和消費(fèi)者等效,即:只要緩沖池未滿,生產(chǎn)者就可將產(chǎn)品送入緩沖池;只要緩沖池非空,消費(fèi)者就可以從中取產(chǎn)品進(jìn)行消費(fèi)。
2.1.2 提供學(xué)習(xí)資料
由于大多數(shù)學(xué)生在本次實(shí)驗(yàn)前未接觸過(guò)多線程編程,因此我們向?qū)W生提供一些與偽代碼中各操作相對(duì)應(yīng)的WindowsAPI!吧a(chǎn)者-消費(fèi)者”實(shí)驗(yàn)涉及到創(chuàng)建生產(chǎn)者與消費(fèi)者、操作信號(hào)量及使用臨界資源。我們整理了與之對(duì)應(yīng)的三類函數(shù)供學(xué)生預(yù)習(xí),分別是多線程操作函數(shù)、信號(hào)量操作函數(shù)和互斥量操作函數(shù)(通過(guò)互斥量保證生產(chǎn)者和消費(fèi)者對(duì)臨界資源互斥訪問(wèn))。多線程操作函數(shù)包括創(chuàng)建線程的函數(shù)_beginthreadex()和等待多個(gè)線程結(jié)束的函數(shù)WaitForMultipleObject()。信號(hào)量操作函數(shù)包括創(chuàng)建信號(hào)量的函數(shù)CreateSemaphore()、申請(qǐng)信號(hào)量的函數(shù)WaitForSingleObject() 和釋放信號(hào)量的函數(shù)ReleaseSemaphore();コ饬坎僮骱瘮(shù)包括創(chuàng)建互斥量的函數(shù)CreateMutex()、申請(qǐng)互斥量的函數(shù)WaitForSingleObject()和釋放互斥量的函數(shù)ReleaseMutex()。當(dāng)生產(chǎn)者和消費(fèi)者完成所有工作后,需要銷毀線程、信號(hào)量和互斥量等資源。線程、信號(hào)量和互斥量都是內(nèi)核級(jí)資源,用CloseHandle()函數(shù)銷毀。需要注意的是,我們只對(duì)上述函數(shù)進(jìn)行簡(jiǎn)單說(shuō)明,學(xué)生需要借助互聯(lián)網(wǎng)等資源學(xué)習(xí)它們的具體使用方法。
2.1.3 提出具體要求
提供預(yù)習(xí)資料的同時(shí)要求學(xué)生思考:實(shí)現(xiàn)“生產(chǎn)者-消費(fèi)者”模型應(yīng)考慮哪些技術(shù)細(xì)節(jié)?
2.2 課內(nèi)檢查引導(dǎo)
與教師詳細(xì)講解實(shí)驗(yàn)原理、目的、步驟及注意事項(xiàng),學(xué)生只需按部就班地操作不同,啟發(fā)式教學(xué)法注重發(fā)揮學(xué)生在實(shí)驗(yàn)課上的主動(dòng)性,積極引導(dǎo)學(xué)生思考并對(duì)學(xué)生的結(jié)論進(jìn)行總結(jié),從而完成實(shí)驗(yàn)。本階段又可分為預(yù)習(xí)成果檢查和總結(jié)引導(dǎo)兩部分。
2.2.1 預(yù)習(xí)成果檢查
實(shí)驗(yàn)課開始時(shí)我們通過(guò)提問(wèn)檢查學(xué)生的預(yù)習(xí)情況,重點(diǎn)考察他們對(duì)實(shí)驗(yàn)中可能會(huì)遇到的技術(shù)問(wèn)題的思考。檢查預(yù)習(xí)的好處在于:一方面,教師的監(jiān)督可以強(qiáng)迫學(xué)生獨(dú)立思考,減少學(xué)生對(duì)教師的依賴;另一方面,通過(guò)提問(wèn)教師能夠了解學(xué)生對(duì)實(shí)驗(yàn)的理解程度,有助于總結(jié)引導(dǎo)。
2.2.2 總結(jié)引導(dǎo)
根據(jù)經(jīng)驗(yàn),大部分學(xué)生會(huì)對(duì)實(shí)驗(yàn)中可能遇到的技術(shù)問(wèn)題進(jìn)行思考,但可能不夠全面。因此,在聽取學(xué)生對(duì)問(wèn)題的回答后,應(yīng)進(jìn)行總結(jié),并進(jìn)一步啟發(fā)學(xué)生。我們以共用緩沖池(包含10個(gè)緩沖區(qū))的二個(gè)生產(chǎn)者和二個(gè)消費(fèi)者為例,實(shí)現(xiàn)該“生產(chǎn)者-消費(fèi)者”模型需要考慮以下三個(gè)技術(shù)細(xì)節(jié)。
、 該模型使用的數(shù)據(jù)結(jié)構(gòu);
、 程序的流程;
、 實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者的具體操作。
以上三個(gè)技術(shù)細(xì)節(jié)的實(shí)現(xiàn)是本實(shí)驗(yàn)的關(guān)鍵。學(xué)生在課前已經(jīng)對(duì)相關(guān)函數(shù)進(jìn)行了預(yù)習(xí),因此我們并不立即給出答案,而是啟發(fā)學(xué)生基于預(yù)習(xí)和已有的編程知識(shí),嘗試解決這三個(gè)問(wèn)題。
問(wèn)題一:由表1 中偽代碼可知,生產(chǎn)者和消費(fèi)者之間通過(guò)信號(hào)量同步,并互斥地訪問(wèn)緩沖池。因此,信號(hào)量和臨界區(qū)是實(shí)現(xiàn)該模型必不可少的數(shù)據(jù)結(jié)構(gòu)。
問(wèn)題二:程序的流程在main 函數(shù)中設(shè)定。具體可分為數(shù)據(jù)結(jié)構(gòu)的初始化、創(chuàng)建多線程和資源回收。其中,資源的初始化及回收可以直接調(diào)用相關(guān)函數(shù),較為復(fù)雜的是創(chuàng)建多線程。講解創(chuàng)建多線程的方法時(shí)可以這樣啟發(fā)學(xué)生:每調(diào)用一次_beginthreadex()函數(shù)可以創(chuàng)建一個(gè)線程(用來(lái)模擬生產(chǎn)者或消費(fèi)者),因此,創(chuàng)建多個(gè)生產(chǎn)者和消費(fèi)者要多次調(diào)用_beginthreadex(),這種重復(fù)執(zhí)行相同的動(dòng)作顯然要用循環(huán)結(jié)構(gòu),從而引導(dǎo)學(xué)生寫出創(chuàng)建多線程的語(yǔ)句。創(chuàng)建2 個(gè)生產(chǎn)者和2 個(gè)消費(fèi)者的示例代碼如下。
HANDLE thread;
for(i=0;i<2;i++)
thread[i]=(HANDLE)_beginthreadex(NULL,0,ProducerFun,
NULL,0,NULL);
for(i=2;i<4;i++)
thread[i]=(HANDLE)_beginthreadex(NULL,0,ConsumerFun,
NULL,0,NULL);
WaitForMultipleObjects(4,thread,true,INFINITE);
上述代碼中的ProducerFun 和ConsumerFun 分別是生產(chǎn)者和消費(fèi)者線程的入口函數(shù),即生產(chǎn)者和消費(fèi)者將執(zhí)行的具體操作,需要重點(diǎn)實(shí)現(xiàn)。
問(wèn)題三:實(shí)現(xiàn)生產(chǎn)者和消費(fèi)者的具體操作,即編程實(shí)現(xiàn)函數(shù)ProducerFun()和ConsumerFun()。由于生產(chǎn)者和消費(fèi)者類似,我們以實(shí)現(xiàn)ProducerFun()函數(shù)為例,啟發(fā)學(xué)生在此基礎(chǔ)上獨(dú)立完成ConsumerFun()函數(shù)的編寫。
在本例中,信號(hào)量empty 的初始值為10,full 的初始值為0,它們的最大值與緩沖池中緩沖區(qū)的個(gè)數(shù)相同(都為10);互斥量mutex 保證緩沖池被互斥地訪問(wèn)?筛鶕(jù)生產(chǎn)者的偽代碼對(duì)應(yīng)寫出源程序。
2.3 課后收集反饋
學(xué)生的課后反饋是對(duì)實(shí)驗(yàn)課的重要補(bǔ)充?捎烧n代表收集學(xué)生對(duì)本次實(shí)驗(yàn)的感受和仍存在的疑問(wèn),統(tǒng)一反饋給教師。這種反饋能夠加強(qiáng)教師和同學(xué)之間的聯(lián)系,幫助教師掌握學(xué)生的整體情況,并對(duì)教學(xué)手段進(jìn)行改進(jìn)。在此階段,可以向編程基礎(chǔ)較差的學(xué)生提供示例代碼,并對(duì)其輔導(dǎo),盡量照顧到各層次的學(xué)生。
3 結(jié)束語(yǔ)
以知識(shí)傳授為核心的靜態(tài)實(shí)驗(yàn)教學(xué)方式要求學(xué)生按教師講解的步驟按部就班進(jìn)行實(shí)驗(yàn),容易使學(xué)生陷于被動(dòng),失去對(duì)實(shí)驗(yàn)課的興趣。本文針對(duì)操作系統(tǒng)課程的特點(diǎn),提出了適用于操作系統(tǒng)實(shí)驗(yàn)課的“啟發(fā)式”教學(xué)方法,并以“生產(chǎn)者-消費(fèi)者”實(shí)驗(yàn)為例,闡述了該方法在教學(xué)過(guò)程中的應(yīng)用。經(jīng)驗(yàn)證,采用啟發(fā)式教學(xué)法能夠加大學(xué)生在實(shí)驗(yàn)課中的參與度,提高學(xué)生的獨(dú)立思考能力,對(duì)學(xué)生系統(tǒng)能力的培養(yǎng)取得了初步成效。同時(shí),該方法對(duì)計(jì)算機(jī)操作系統(tǒng)課程其他問(wèn)題及實(shí)驗(yàn)的講解具有一定的借鑒作用。
【論啟發(fā)式教學(xué)法在計(jì)算機(jī)專業(yè)學(xué)生系統(tǒng)能力培養(yǎng)的運(yùn)用論文】相關(guān)文章:
論高職學(xué)生職業(yè)能力培養(yǎng)10-23
論外語(yǔ)能力的培養(yǎng)10-16
啟發(fā)式教學(xué)法在計(jì)算機(jī)網(wǎng)絡(luò)專業(yè)基礎(chǔ)課教學(xué)中的運(yùn)用08-29
論器樂(lè)學(xué)生內(nèi)心聽覺能力的培養(yǎng)06-08
中等職業(yè)學(xué)校計(jì)算機(jī)專業(yè)學(xué)生實(shí)踐能力的培養(yǎng)的論文07-24
論對(duì)大學(xué)生道德選擇能力的培養(yǎng)08-04
論在物理教學(xué)中培養(yǎng)學(xué)生的觀察能力07-18
構(gòu)建舞蹈專業(yè)學(xué)生職業(yè)能力培養(yǎng)新方式論文06-18