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