摘要:根據(jù)編譯原理課程性質(zhì)和特點,針對軟件外包專業(yè)和學(xué)生特點選取合適的教學(xué)內(nèi)容,介紹案例教學(xué)法、類比教學(xué)法、啟發(fā)式教學(xué)法等多種教學(xué)方法在課程教學(xué)中的應(yīng)用。
關(guān)鍵詞:編譯原理;案例教學(xué);啟發(fā)式教學(xué);類比教學(xué)
0.引言
編譯原理是計算機及相關(guān)專業(yè)的一門重要專業(yè)課程,主要介紹編譯程序構(gòu)造的一般原理和基本方法,在計算機科學(xué)與課程體系中占據(jù)重要地位,其原理、方法和技術(shù)在語言處理、軟件工程、軟件自動化、逆向軟件工程、搜索引擎甚至非編譯系統(tǒng)等諸多技術(shù)領(lǐng)域有著廣泛的應(yīng)用。同時又是一門理論性特別強的課程,其特點是內(nèi)容多、理論性強、抽象性高、算法復(fù)雜度大、邏輯思維嚴密,學(xué)生在學(xué)習(xí)過程中對原理和方法學(xué)習(xí)起來具有一定的難度。學(xué)生普遍反映編譯原理是一門難懂難學(xué)的專業(yè)課程,而且認為畢業(yè)後也很少有從事編譯系統(tǒng)研發(fā)的機會,從而對該課程學(xué)習(xí)的認識上存在障礙,學(xué)習(xí)興趣和積極性不高,影響了教學(xué)效果。
青島農(nóng)業(yè)大學(xué)理學(xué)與信息科學(xué)學(xué)院軟件外包專業(yè)屬于三本,雖然從2011級以後是二本招生,但分數(shù)居于二本分數(shù)線的低端。軟件外包專業(yè)雖然也屬于計算機大類,但培養(yǎng)目標(biāo)不同,學(xué)生的基礎(chǔ)相對差些,在教學(xué)過程中需要根據(jù)教學(xué)對象的專業(yè)特點、基本素質(zhì)、知識背景等,對課程內(nèi)容進行有針對性的組合與調(diào)整,選擇合適的課堂教學(xué)方法,做到因材施教、因需施教。
1.教學(xué)內(nèi)容選取
編譯原理教學(xué)內(nèi)容應(yīng)強調(diào)對原理和技術(shù)的宏觀理解及全局把握,針對編譯的各邏輯階段,在教學(xué)內(nèi)容的選擇方面既要考慮學(xué)生的特點和專業(yè)培養(yǎng)目標(biāo),又要保證教學(xué)內(nèi)容的完整性與連貫性,使學(xué)生對整個編譯過程及各個階段的主要方法和原理有全面的學(xué)習(xí)與了解。
軟件外包專業(yè)的學(xué)生基礎(chǔ)比普通本科差,且授課學(xué)時比計算機專業(yè)少,理論課時僅為32學(xué)時。因此需要適當(dāng)減少教學(xué)內(nèi)容,通過多舉實例、加強練習(xí)等手段確保學(xué)生對課程重點內(nèi)容的掌握,刪減的部分可以安排自學(xué)。
根據(jù)軟件外包專業(yè)的培養(yǎng)目標(biāo)、方案及本專業(yè)學(xué)生特點,選用陳火旺等編寫的《程序設(shè)計語言編譯原理》為教材,選取的教學(xué)內(nèi)容見表1。
2.教學(xué)方法改革
興趣是人們力求認識某種事物或愛好某種活動的心理傾向,是推動學(xué)生學(xué)習(xí)活動的內(nèi)在驅(qū)動力。要想讓學(xué)生學(xué)得好,需要不斷地激發(fā)他們的學(xué)習(xí)興趣,從而變被動學(xué)習(xí)為主動學(xué)習(xí)。在理論教學(xué)過程中,根據(jù)多年積累的教學(xué)經(jīng)驗,通過靈活采用如下的多種教學(xué)方法,激發(fā)學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)積極性,提高教學(xué)效果。
2.1案例教學(xué)法
編譯原理課程很多理論既抽象又繁雜,學(xué)生理解起來比較困難,如果在講授過程中只是單純地進行理論和方法的講解,而不輔以實例,很難激發(fā)學(xué)生學(xué)習(xí)的興趣和熱情,達到理解掌握的目的。在理論教學(xué)過程中,結(jié)合具體的實例和案例使抽象的理論形象化和生動化,從而激發(fā)學(xué)生的學(xué)習(xí)興趣和熱情。
在引言部分講解編譯過程時,以一句英文(People who walk on the grass are liable to a fine)翻譯成中文的過程為例進行講解。
(1)識別出句子中的每個單詞:People,who,walk,on,the,grass,ale,liable,to,a,fine。
(2)分析句子的語法結(jié)構(gòu):定語從句。
(3)根據(jù)句子含義進行初步翻譯:在草地上行走的人易受罰款。
(4)對譯文進行修飾:易受罰款中“易受”一詞不太準確,改為“要罰款”。
(5)寫出最後的譯文:在草地上行走要罰款。
然後,將自然語言翻譯的步驟對應(yīng)到程序設(shè)計語言的編譯過程5個階段,對應(yīng)關(guān)系如圖1所示:
通過以上實例的運用,達到了認識整個編譯過程的目的,而且很容易被學(xué)生理解和接受,在腦海中留下比較深刻和直觀的印象,為後面深入學(xué)習(xí)各個編譯階段的理論與方法作好鋪墊。
在講解詞法分析部分,正規(guī)式與FA的等價、NFA確定化為DFA和DFA的化簡等核心內(nèi)容時,可以用一道綜合題將這些內(nèi)容貫穿起來。如給定字母表∑={a,b},設(shè)計一個能識別∑上所有含有相繼兩個a或者兩個b的DFA。要解決這個問題就需要根據(jù)題目要求先寫出正規(guī)式,然後將其轉(zhuǎn)換成等價的NFA,接著再確定為DFA,最後再進行化簡。這樣不僅通過一個典型案例把相關(guān)的內(nèi)容綜合起來,而且能夠充分調(diào)動學(xué)生的積極性,使其在分析案例、得到結(jié)論的過程中提高綜合知識應(yīng)用能力和創(chuàng)新能力。
2.2類比教學(xué)法
編譯原理涉及的原理與方法比較多,如此多原理與方法講授起來及學(xué)生掌握起來都比較困難。基于同類方法中有一定的相似性,在講解過程中,對同類方法進行對比講授,總結(jié)各種方法的相似之處,突出并分析每種方法的不同之處,通過類比使學(xué)生更能明確掌握各種方法的原理和適用范圍,從而在實際應(yīng)用過程中能夠選擇合適的方法。
在講解三地址代碼的3種表示方法(三元式、四元式和間接三元式)時,將3種方法結(jié)合起來講解,分析其相同和不同之處。相同之處在于每種表示方法都有操作符、兩個操作數(shù)這三個域,不同之處在于臨時變量如何來保存或者引用。針對不同的保存(引用)方式,不同方法就會有不同的優(yōu)缺點。如四元式要增加一個監(jiān)時變量域保存計算結(jié)果,從而增加了內(nèi)在開銷,但更改比較容易;而三元式通過計算臨時變量值的語句位置來引用這個臨時變量,雖然節(jié)省了內(nèi)存開銷,但使得更改變得比較困難,需要修改一系列的指示器的值。通過類比方法來講解同類方法的原理,可以讓學(xué)生更加深入地理解和掌握這些方法的優(yōu)缺點,能夠在實際應(yīng)用過程中靈活使用這些方法。
類似地,在講解SLR分析表的構(gòu)造時,與已講過的LR(O)分析表的構(gòu)造進行對比講授。在構(gòu)造方法中,與LR(O)相同的地方可以不用重復(fù)講解,只講解歸約(項目A->a,屬于I)的情況。對LR(O)文法,對任何終結(jié)符號都要用產(chǎn)生式A->a,歸約;而對于SLR文法,僅對任何屬于Follow(A)中的終結(jié)符號用產(chǎn)生式A->a,歸約。這樣在LR(O)分析表的構(gòu)造基礎(chǔ)之上掌握SLR分析表的構(gòu)造就比較簡單,只要掌握上面所提到的不同之處即可。
2.3啟發(fā)式教學(xué)
啟發(fā)式教學(xué)強調(diào)傳授知識的同時重視學(xué)生能力的培養(yǎng)及非智力因素的發(fā)展,它把學(xué)生真正置于主動者的位置,充分調(diào)動學(xué)生的積極性和主動性,激發(fā)學(xué)生的學(xué)習(xí)興趣。由于本課程理論性較強,概念原理較多,充分發(fā)揮學(xué)生的積極性就顯得尤為重要。
在授課過程中,要注重引導(dǎo)和培養(yǎng)學(xué)生自我發(fā)現(xiàn)問題的能力。例如講規(guī)范歸約的相關(guān)概念,句型的短語、直接短語和句柄等概念時,講解形式化的定義學(xué)生很難理解,如果不能理解即使把概念記住,遇到具體的問題時還是無從下手,很難給出正確的答案。在講授這幾個概念的同時,以一個具體的句型(aAbcde)為例,將這個句型推導(dǎo)過程的語法分析樹畫出來(如圖2所示),引導(dǎo)學(xué)生去思考這3個概念跟語法樹有什么關(guān)系及如何在語法樹中體現(xiàn)出來。
同時引導(dǎo)學(xué)生結(jié)合語法推導(dǎo)樹回顧推導(dǎo)、直接推導(dǎo)的概念,以及如何在語法樹中表示出來,從而引導(dǎo)學(xué)生去思考短語等概念的形式化描述如何用語法樹這種比較直觀的方式來解釋。經(jīng)過引導(dǎo)後,有的學(xué)生就會發(fā)現(xiàn)句型的短語可以由語法樹的子樹(以S、A和B為根)的葉子結(jié)點自左至右排列得到,分別為aAbcde、Ab和d,這時教師就可以在學(xué)生對此問題有了一定的想法和見解後給出結(jié)論,一棵子樹的所有端末結(jié)點自左到右排列起來列成一個相對子樹根的短語,將每個子樹的末端結(jié)點排列起來,就得到了該句型的所有短語。經(jīng)過學(xué)生思考之後,對問題的理解更加深入,同時通過積極參與到教學(xué)活動過程中,學(xué)習(xí)的積極性大大增強,課堂氣氛也更加活躍。
3.教學(xué)效果分析
2012-2013學(xué)年第一學(xué)期,筆者對軟件外包專業(yè)2010級8個班共281名學(xué)生進行編譯原理課程教學(xué)方法改革與實踐,取得了良好的教學(xué)效果。學(xué)生對該課程的學(xué)習(xí)表現(xiàn)出了較大的學(xué)習(xí)興趣和積極性,上課出勤情況也有了較大的改善。期末考試成績整體上有了一定的提高,不及格比例明顯減少。期末考試的成績分布情況統(tǒng)計見表2,各個等級人數(shù)分布統(tǒng)計曲線如圖3所示。
從期末考試成績分布情況表及統(tǒng)計曲線圖可以看出,成績在中等以上(70分以上)的人數(shù)占75%左右,不及格人數(shù)僅占3.56%,且各個等級成績分布呈現(xiàn)良好的正態(tài)分布,改善了編譯原理課程考試成績偏低、不及格率高的狀況。
學(xué)生對本門課程的教學(xué)比較滿意,對教師評價分數(shù)高達94.976分(滿分95);對教材評價分數(shù)為94.498分,(滿分95)。
4.結(jié)語
為提高軟件外包專業(yè)的編譯原理課程教學(xué)效果,根據(jù)專業(yè)培養(yǎng)目標(biāo)和學(xué)生特點,我們對教學(xué)內(nèi)容選取、理論教學(xué)方法進行了改革與實踐。這些方法大大地激發(fā)了學(xué)生的學(xué)習(xí)興趣,取得了良好的教學(xué)效果。