孫守卿
摘要:針對工程教育專認(rèn)證中關(guān)于“復(fù)雜工程問題”的培養(yǎng)要求,對計算機(jī)類專業(yè)的基礎(chǔ)核心課程《編譯原理》的課程標(biāo)準(zhǔn)、教學(xué)內(nèi)容及實驗實踐內(nèi)容、教學(xué)模式、考核形式等進(jìn)行了相應(yīng)的改革。通過改革,使得學(xué)生的理論知識掌握更加扎實,培養(yǎng)了學(xué)生解決復(fù)雜工程問題能力。
關(guān)鍵詞:工程教育認(rèn)證;復(fù)雜工程問題;產(chǎn)出導(dǎo)向;持續(xù)改進(jìn)
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019129-0104-03
2016年6月2日,我國正式加人《華盛頓協(xié)議》,這是中國高等教育具有里程碑意義的事情?!度A盛頓協(xié)議》(Washing-ton Accord,WA)是以培養(yǎng)專業(yè)工程師為主要目標(biāo)的本科工程學(xué)位國際工程師互認(rèn)協(xié)議。“以學(xué)生為中心”“產(chǎn)出導(dǎo)向(OBE)”“持續(xù)改進(jìn)”是其核心理念。根據(jù)協(xié)議,我國《工程教育專業(yè)認(rèn)證標(biāo)準(zhǔn)》給出12條畢業(yè)時必須達(dá)到能力標(biāo)準(zhǔn)。在計算機(jī)專業(yè)課程支撐畢業(yè)要求指標(biāo)點(diǎn)課程矩陣中,《編譯原理》課程需要支撐指標(biāo)點(diǎn)1-3、指標(biāo)點(diǎn)2.3,指標(biāo)點(diǎn)4.1。為了使課程能夠很好地支撐畢業(yè)要求,需要對該課程從課程標(biāo)準(zhǔn)到教學(xué)模式、考核方式等方面進(jìn)行改革。
1修訂課程標(biāo)準(zhǔn)
2014級之前的課程標(biāo)準(zhǔn)不具有針對性,考核內(nèi)容中對實踐的難度和復(fù)雜程度不高。這樣導(dǎo)致學(xué)生對理論知識的認(rèn)識和理解程度不深,很多學(xué)生學(xué)完了《編譯原理》之后,對編譯原理的認(rèn)識還停留在有限自動機(jī)、算符優(yōu)先語法分析等比較初級、片面的知識點(diǎn)上。學(xué)生不僅不會寫編譯程序,更不會運(yùn)用形式化的理論對復(fù)雜問題進(jìn)行抽象建模及解決復(fù)雜工程問題。
為了能更好地滿足專業(yè)認(rèn)證對學(xué)生素質(zhì)的培養(yǎng)要求,完成課程支撐的畢業(yè)要求指標(biāo)點(diǎn),對《編譯原理》課程標(biāo)準(zhǔn)做了如下修改:
1)掌握程序設(shè)計語言語法描述、編譯程序的詞法分析、語法分析、語法制導(dǎo)翻譯和中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成等基本知識。通過本課程的學(xué)習(xí),使學(xué)生掌握計算機(jī)專業(yè)知識并能對計算機(jī)軟硬件系統(tǒng)的設(shè)計方案和模型進(jìn)行推理和驗證。(支持畢業(yè)要求1.3)
2)使學(xué)生掌握實現(xiàn)編譯程序的具體編程技術(shù);在進(jìn)行一般程序設(shè)計時,知道怎樣寫出安全、可靠、高效的代碼。培養(yǎng)學(xué)生能夠應(yīng)用專業(yè)知識進(jìn)行問題分析,通過實驗、推理等方法,驗證解決方案的合理性,得到有效結(jié)論。(支持畢業(yè)要求2.3)
3)加深學(xué)生對程序設(shè)計語言的理解,培養(yǎng)學(xué)生設(shè)計、分析和實現(xiàn)中大型軟件的初步能力,從而培養(yǎng)學(xué)生能夠針對計算機(jī)復(fù)雜工程問題的關(guān)鍵因素,基于科學(xué)原理制定實驗?zāi)繕?biāo)和方法,設(shè)計實驗方案,進(jìn)一步提升學(xué)生的計算機(jī)專業(yè)素養(yǎng)。
通過對課程標(biāo)準(zhǔn)的修訂,使得課程的教學(xué)內(nèi)容更加精煉,教學(xué)內(nèi)容不再是單純的講授知識原理,而是側(cè)重對學(xué)生計算思維的訓(xùn)練,進(jìn)而培養(yǎng)學(xué)生解決復(fù)雜問題的能力。
2利用網(wǎng)絡(luò)教學(xué)平臺進(jìn)行教學(xué)模式的改革
工程教育專業(yè)認(rèn)證要求大學(xué)教育“以學(xué)生為中心”和“產(chǎn)出導(dǎo)向”,因此,原有的封閉式的、以教師為中心的、單純依靠PPT+書本進(jìn)行知識講授的教學(xué)模式已經(jīng)不足以滿足教學(xué)需要。在《編譯原理》授課過程中,采用混合式教學(xué)模式,充分發(fā)揮網(wǎng)絡(luò)教學(xué)平臺的優(yōu)勢,從教學(xué)活動的組織、學(xué)生的管理、課程學(xué)習(xí)資源的共享等各方面對《編譯原理》課程進(jìn)行了更全面的課程信息化建設(shè)。
1)使用導(dǎo)學(xué)清單,組織學(xué)生預(yù)習(xí)
針對編譯原理課程難度大,知識概念多,內(nèi)容抽象,算法復(fù)雜等特點(diǎn)。在課程講授之前,教師根據(jù)課程內(nèi)容制定導(dǎo)學(xué)清單供學(xué)生預(yù)習(xí)。本課程對語言及文法、詞法分析、語法分析樹等抽象性高的知識點(diǎn)分別制定了導(dǎo)學(xué)清單,通過導(dǎo)學(xué)清單,學(xué)生可以通過對課程資料的準(zhǔn)備、提前閱讀對課程的內(nèi)容有了一個初步的了解,同時也對未知的知識有了探究的興趣。如:通過語言及文法導(dǎo)學(xué)清單中的問題,以學(xué)生熟知的英語、漢語等自然語言為例,將字母、漢字、單詞與C程序設(shè)計語言中的關(guān)鍵詞、標(biāo)識符、if語句聯(lián)系在一起,啟發(fā)學(xué)生思考,引導(dǎo)學(xué)生把抽象的形式語言中的文法和自然語言中的語法進(jìn)行對比、聯(lián)想,激發(fā)學(xué)生對課程學(xué)習(xí)的積極性。
2)豐富課程學(xué)習(xí)資源
通過進(jìn)一步豐富課程資源,使課程的學(xué)習(xí)資源多樣化、系統(tǒng)化。拓寬學(xué)生自主學(xué)習(xí)的渠道。在課程資源里,除了有來自斯坦福大學(xué)計算機(jī)科學(xué)系的編譯原理課程視頻資料,也有來自國防科技大學(xué)的經(jīng)典慕課資源。同時,也有課程組老師自己錄制的課程資源。針對一些難度大的算法,還有專門錄制的長度為5-10分鐘的微課視頻。
通過課件、微視頻、在線課程等多種形式的課程內(nèi)容呈現(xiàn),學(xué)生可以課下,根據(jù)自身情況自主復(fù)習(xí)、重點(diǎn)難點(diǎn)知識。
網(wǎng)絡(luò)教學(xué)平臺的使用提高了學(xué)生自主學(xué)習(xí)的能力,使得對課程的學(xué)習(xí)更加靈活、自主。
3)組織學(xué)生翻轉(zhuǎn)課堂
改變過去授課過程中,教師對所有的知識點(diǎn)一講到底、面面俱到的教學(xué)模式。對算符優(yōu)先分析、LALR(1)分析算法等進(jìn)階性的知識點(diǎn),采用教師指導(dǎo)、學(xué)生分組討論學(xué)習(xí)的方式進(jìn)行。通過已有的知識作為載體,培養(yǎng)學(xué)生自己根據(jù)形式化的文法構(gòu)建有限自動機(jī)模型,實現(xiàn)相應(yīng)的算法。
4)活躍在線答疑討論區(qū)
在線答疑討論區(qū)使得師生之間的互動和討論延續(xù)到課下。使得傳統(tǒng)課堂的單向知識流動變?yōu)閹熒g的雙向流動,在課堂的答疑討論區(qū),學(xué)生分別把自己對課程的疑問,學(xué)習(xí)中出現(xiàn)的錯誤進(jìn)行分享討論,課堂的開放程度得到了擴(kuò)大。
通過教師及時回復(fù)學(xué)生自主學(xué)習(xí)中的問題,保證了學(xué)生能夠按時完成自主學(xué)習(xí)任務(wù)。在知識反饋過程中,教師也可以及時收集到學(xué)生知識的困惑區(qū),在課堂上有針對性的講解。課堂進(jìn)入良性循環(huán)。
5)在線測試鞏固知識
在學(xué)期中,對課程的每個章節(jié)分別組織在線測試和隨堂測試,完成對課程知識點(diǎn)的階段性鞏固。如,對于非確定性自動機(jī)的確定化算法、確定性有限自動機(jī)的化簡算法進(jìn)行強(qiáng)化考核。通過時間為10-15分鐘的小測形式,學(xué)生及時發(fā)現(xiàn)學(xué)習(xí)的不足,增強(qiáng)學(xué)習(xí)的動力。
3ACM在線測試平臺進(jìn)行實驗測試
原有的編譯課程實驗基本上都上驗證性實驗。學(xué)生只是簡單完成算法的編寫,并未理解不同的語法分析算法之間的性能區(qū)別等。通過ACM進(jìn)行實驗,將《編譯原理》課程的實驗根據(jù)課程進(jìn)度進(jìn)行了有層次的安排,實驗項目之間難度由淺入深,只有學(xué)生掌握了詞法分析,才可以進(jìn)行語法分析算法的實現(xiàn),進(jìn)而編寫語義分析和中間代碼生成的實驗,通過ACM平臺,學(xué)生可以直接得到實驗結(jié)果,看見代碼體積,程序運(yùn)行時間、耗費(fèi)內(nèi)存等算法效率的分析數(shù)據(jù)。可以對不同的算法實現(xiàn)的優(yōu)劣性進(jìn)行直觀的比較和分析,加深對算法的理解。
通過將編譯程序分解成若干子程序、子問題。學(xué)生在這個過程中逐步掌握了復(fù)雜問題的分解能力,提高了解決復(fù)雜問題的能力。
4項目考核——小C語言編譯器的設(shè)計
根據(jù)工程教育專業(yè)認(rèn)證產(chǎn)出導(dǎo)向的教育理念,從培養(yǎng)學(xué)生解決分析復(fù)雜工程問題的能力這個教學(xué)目標(biāo)出發(fā),在課程考核過程中添加了小c語言編譯器設(shè)計這個環(huán)節(jié)。
小C程序抽取了C語言部分有代表性的語法,要求學(xué)生以小組為單位,從軟件工程的角度出發(fā),分階段完成以下任務(wù):
(1)進(jìn)行需求分析:從全局性出發(fā),對項目應(yīng)實現(xiàn)的功能及技術(shù)可行性進(jìn)行分析;
(2)采用形式語言建模:用正規(guī)文法及上下文無關(guān)文法描述小C語言的詞法及語法;
(3)獨(dú)立完成一個小型C語言編譯器(要求至少包含詞法分析、語法分析、語義分析及中間代碼生成功能);
(4)測試;完成功能測試及性能測試分析;
(5)文檔書寫整理:格式規(guī)范;
(61項目答辯;學(xué)生需對整個項目的情況進(jìn)行陳述,如:團(tuán)隊內(nèi)任務(wù)的分工、貢獻(xiàn)度、項目的創(chuàng)新點(diǎn),具體的技術(shù)實現(xiàn)等。
小C編譯器的設(shè)計及實現(xiàn)具有一定的復(fù)雜性學(xué)生需要綜合考慮很多系統(tǒng)性、全局性的問題。
在項目驅(qū)動下,學(xué)生集思廣益,自發(fā)選出項目組長。并根據(jù)學(xué)習(xí)能力和個人意愿,分派和承擔(dān)不同的任務(wù)。每個小組就像一個IT項目團(tuán)隊一樣,每個人扮演不同的角色。學(xué)生們互幫互助,共同發(fā)揮各自的優(yōu)點(diǎn)。在這個過程中,學(xué)生都能綜合利用數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計算機(jī)硬件基礎(chǔ)、軟件工程等專業(yè)知識完成該項目。
5結(jié)果反饋
通過對16級計科卓越(01-04班)實施該改革,學(xué)生的成績分布如表1,表2所示:
根據(jù)學(xué)生的在線測試、ACM實驗成績、分組小c語言的編譯器設(shè)計成績的畢業(yè)要求指標(biāo)點(diǎn)達(dá)成度情況如表4所示。
通過對學(xué)生成績分析可以看出,《編譯原理》課程對工程教育專業(yè)認(rèn)證要求支撐的指標(biāo)點(diǎn)達(dá)成度較好。但是,對于指標(biāo)點(diǎn)2-3的達(dá)成度低于其他兩項。這個主要反映在學(xué)生分組完成小C語言編譯器設(shè)計時,對于目標(biāo)代碼生成及寄存器分配這個功能,很多小組完成度不夠好。很多學(xué)生反饋說由于對計算機(jī)體系結(jié)構(gòu)不夠了解,對匯編語言掌握程度不熟練,所以,盡管學(xué)生了解了寄存器的分配算法,但是還是不能很好地完成該設(shè)計。
6總結(jié)與改進(jìn)
根據(jù)工程教育認(rèn)證的“持續(xù)改進(jìn)”的理念,根據(jù)學(xué)生的成績反饋,在《編譯原理》課程的后續(xù)改革中,我們將繼續(xù)加強(qiáng)對學(xué)生工程實踐能力的訓(xùn)練,使得學(xué)生不僅能很好地掌握編譯的原理,更能掌握編譯的技術(shù),從而滿足行業(yè)對人才的要求。