韋 凡
(武漢軟件工程職業(yè)學(xué)院,湖北 武漢 430205)
為此學(xué)校教研室決定在兩門課程中開展試點。本人所授課程“單片機(jī)高級應(yīng)用”有幸參與此次試點探索。在具體的課程安排上,在課程開頭介紹任務(wù)需求,告訴學(xué)生需要新模塊,接著介紹模塊各參數(shù)作用,學(xué)生嘗試著分析如何調(diào)整參數(shù)完成需求[1]。這一模式和傳統(tǒng)的理論課程不同在于:理論課程注重知識的全面性、深度性,面對抽象、高深的專業(yè)課,學(xué)生在一個學(xué)期的時間里很難理解每一個知識點,更不用說全面掌握;項目化教學(xué)從實際應(yīng)用出發(fā),把專業(yè)知識生活化,學(xué)生理解起來比較容易,其次不追求知識全面化,側(cè)重讓學(xué)生掌握、應(yīng)用重點知識,如果學(xué)生對其他知識點感興趣,學(xué)生可在已有知識儲備的基礎(chǔ)上做自我探索。
從上述對比中可以看到,相比傳統(tǒng)理論教學(xué)模式,項目化教學(xué)下學(xué)生更容易吸收、應(yīng)用知識[2]。另外最重要的優(yōu)勢在于項目化教學(xué)模擬的是企業(yè)開發(fā)環(huán)節(jié),學(xué)生將來在企業(yè)的工作是把需求轉(zhuǎn)換成代碼的過程,傳統(tǒng)理論教學(xué)模式下沒有機(jī)會讓學(xué)生嘗試去分析需求,導(dǎo)致學(xué)生剛進(jìn)入企業(yè)時很難適應(yīng)。所以項目化教學(xué)的優(yōu)勢比較突出,在今后的教學(xué)工作中,應(yīng)大力推廣這種模式,使學(xué)生和企業(yè)無縫連接。
當(dāng)然經(jīng)過一段時間的實踐后發(fā)現(xiàn)存在一些問題,主要表現(xiàn)在:(1)學(xué)生的前導(dǎo)課程知識積累薄弱,影響了新知識的理解;(2)當(dāng)學(xué)生能聽懂原理后,在實踐環(huán)節(jié)能對照原理完成開發(fā)的學(xué)生非常少,大部分學(xué)生不知道從何處下手。針對上述問題,教師需要考慮的是如何解決。
第一個問題:在于如何補(bǔ)齊學(xué)生專業(yè)基礎(chǔ)課短板。學(xué)生簽到課程知識欠缺主要表現(xiàn)為2種情況,第一個:專業(yè)基礎(chǔ)課的知識沒有深刻理解,只有模糊的概念,一旦進(jìn)行綜合應(yīng)用環(huán)節(jié)完全沒辦法動手,停留在回憶知識的步驟;第二個:部分專業(yè)基礎(chǔ)知識欠缺,學(xué)生沒有對應(yīng)知識的積累,無法理解內(nèi)容,比如在介紹傳感器數(shù)據(jù)傳輸協(xié)議的時候,學(xué)生沒有系統(tǒng)學(xué)習(xí)過網(wǎng)絡(luò)知識,對協(xié)議不太理解,導(dǎo)致在理解傳輸數(shù)據(jù)時感到困惑?;谝陨?個問題,教師可以探索如何去解決。第一個問題在上文講過,改變教學(xué)模式有助于幫助學(xué)生更深刻地掌握知識,在綜合應(yīng)用性較強(qiáng)的課程上學(xué)生才能迅速上手。
第二個問題:有兩種方法,一是增加新課程,二是在使用某些新知識前,可以適當(dāng)花費一些課時去講解。在這兩個方法中,比較推薦第二種。大學(xué)課程一般比較固定,插入新課程比較困難,尤其對于高職院校來說,課程安排本來就緊湊,除非砍掉已有課程,不然無法增加新課。一些項目化教學(xué)的學(xué)校里采用第二種方法,當(dāng)需要用到另外一門課程的知識時,提前講解,一是減少新增開課,二是堅持以應(yīng)用為主,在實踐中掌握知識。
所以針對本問題,教師在安排項目化教學(xué)模式時,最好從基礎(chǔ)課程開始推廣,同時針對部分知識點,可以在項目化教學(xué)中完成傳授。第二個問題則難度相對大一些,講解個各模塊原理的時候,大都可以類比日常生活,學(xué)生感官上容易接受和理解,但實際動手寫代碼時,往往無從下手[3]。在和學(xué)生的溝通中,發(fā)現(xiàn)他們常常覺得需要動手實現(xiàn)的需求比較多,無從下手。但實際上教師每次分配的需求異常簡單,學(xué)生的這種表現(xiàn)一般是想得太多,束縛太多最終導(dǎo)致無法動手寫代碼。究其原因還是開發(fā)經(jīng)驗少,不知從哪里下手。解決這個問題需要從多個角度去提高學(xué)生的技能而不是儲備知識。如果教師借鑒開發(fā)人員的日常工作流程:開發(fā)者常常從架構(gòu)師或項目經(jīng)理處得知新的需求,開發(fā)者利用代碼完成新功能。教師不難發(fā)現(xiàn)每個開發(fā)者將知識轉(zhuǎn)換成動手開發(fā)能力,需要理解、分析需求的能力,熟悉業(yè)務(wù)代碼的能力,需要調(diào)試代碼的能力。
在每次提出需求后,不要急著講代碼,而是給時間讓學(xué)生自己嘗試著去分析如何使用代碼完成功能,當(dāng)然在需求分析的起始階段,學(xué)生不知道需求分析從哪里下手,教師可以帶領(lǐng)學(xué)生把需求分解成小的需求,通過逐級分解,將最終的問題轉(zhuǎn)換成能用幾行代碼解決的小需求。在這一步里,教師要有意識地培養(yǎng)學(xué)生分解需求的意識。分解的過程不會太難,關(guān)鍵是要想到分解這個動作。這一過程需要注意兩點:第一,分解需求主體應(yīng)該是學(xué)生,老師只是引出問題,學(xué)生思考,側(cè)重培養(yǎng)學(xué)生思考解決問題的能力;第二,在每次練習(xí)時都要著重向?qū)W生表明需求是分解出來的,培養(yǎng)學(xué)生分析需求的意識。
在分解需求的同時,要培養(yǎng)學(xué)生熟悉工程代碼的習(xí)慣。很多學(xué)生理解需求后,仍然無法開始寫代碼。在和學(xué)生交流中發(fā)現(xiàn)多數(shù)情況下,他們經(jīng)常糾結(jié)怎么定義變量、怎么實現(xiàn)基本代碼,而這些內(nèi)容工程代碼里是已經(jīng)實現(xiàn)過的,也就是說學(xué)生并不知道需求和代碼對接時,哪些是現(xiàn)成的,哪些需要自己完成。在以前的專業(yè)課學(xué)習(xí)中,可能代碼量很小,幾乎所有代碼需要自己寫,所以沒有機(jī)會培養(yǎng)熟悉業(yè)務(wù)代碼的能力。在項目化教學(xué)中,這種能力就顯得很重要,如何培養(yǎng)呢?首先:確定工程里使用哪些模塊功能,初始化、調(diào)用函數(shù)是否齊全,調(diào)用接口函數(shù)里的參數(shù)是如何定義的;其次,從main函數(shù)開始,查看整個工程運行過程中的邏輯,再結(jié)合前面理解的需求,推理出在何處補(bǔ)充代碼、如何使用各個模塊的接口函數(shù)。進(jìn)過上述2個步驟學(xué)生寫代碼就會容易很多。
在工作中寫好代碼只占開發(fā)人員很少的時間,大部分時間用于調(diào)試代碼。而學(xué)生的表現(xiàn)恰恰相反,他們只有寫代碼的時間,幾乎沒有調(diào)試過代碼。他們的代碼如果出現(xiàn)問題只會等著老師來解決。因此,教師有必要幫助學(xué)生培養(yǎng)調(diào)試代碼的能力。首先我們分析一下學(xué)生不會調(diào)試代碼主要原因:沒有調(diào)試代碼的意識和看不懂英文。
(1)沒有調(diào)試代碼的意識。主要原因在于物聯(lián)網(wǎng)或者電子信息類專業(yè)在開設(shè)課程的時候,雖然也有軟件開發(fā)的專業(yè)課,但沒有系統(tǒng)地學(xué)習(xí)軟件開發(fā)的課程,比如缺少軟件測試一類的課程,導(dǎo)致學(xué)生在寫完代碼后,沒有調(diào)試代碼的意識或者習(xí)慣。以至于很多學(xué)生寫代碼依靠“運氣”,一旦出現(xiàn)錯誤,什么辦法都沒有,只能依靠教師來解決,甚至有的學(xué)生在寫完代碼,發(fā)現(xiàn)運行不起來之后,會有沮喪、甚至放棄專業(yè)課的想法。寫代碼好比寫文章,文章里總會遇到寫錯別字的時候,我們改掉就好,代碼里如果出錯,我們改正就能成為合格的程序。所以要培養(yǎng)學(xué)生克服代碼出錯時無奈、沮喪的心態(tài),其次要有調(diào)試代碼的意識,不能期待代碼一次成型。
(2)看不懂英文是很多學(xué)生都會遇到的問題,在以前的一次調(diào)查中許多學(xué)生甚至提議希望開設(shè)英語公共課,但學(xué)生看不懂調(diào)試代碼里出現(xiàn)的英文信息,并不是因為語法難度,更多的是陌生單詞的原因,而統(tǒng)計開發(fā)人員調(diào)試信息里的英文之后,教師會發(fā)現(xiàn)都是固定的內(nèi)容,常見的代碼錯誤是符號錯誤、重復(fù)定義、未定義等,那么代碼調(diào)試?yán)镉⑽奶崾窘?jīng)常出現(xiàn)的單詞也就是固定的那幾個。所以對學(xué)生而言,整句英文雖然看不懂,但是只要看到某個單詞,通過反推就可以猜測錯誤的原因。
通過分析,可以發(fā)現(xiàn)解決學(xué)生不會調(diào)試代碼的問題比較簡單,首先教師在學(xué)生寫完代碼后,要著重提示學(xué)生嘗試自己去修改代碼,剛開始可能學(xué)生都沒有掌握技能,但培養(yǎng)意識很重要,通過多次提醒,學(xué)生養(yǎng)成習(xí)慣后,就會主動調(diào)試代碼。在解決具體代碼錯誤的時候,教師可以提前把代碼錯誤里常見的英文單詞列出來,同學(xué)們對照單詞,理解問題描述,再去解決錯誤就容易許多。這個環(huán)節(jié)也是多次練習(xí)后,學(xué)生就能獨立看懂并解決調(diào)試錯誤,當(dāng)積累多次成功的經(jīng)驗后,對專業(yè)課更有信心。
教師可歸納常見的英文表述,學(xué)生在實踐中多看幾次就能明白。項目化教學(xué)相較于以前的純理論教學(xué)優(yōu)勢比較突出,值得每一位教師嘗試。雖然本人在實踐中發(fā)現(xiàn)了一些新問題,但只要正確解決這些問題就可以極大地提高學(xué)生的知識儲備和各種技能,更好地適應(yīng)企業(yè)工作,成為一名技術(shù)過硬的勞動者。