畢 冉,姚衛(wèi)紅,任健康,劉 倩
(大連理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,遼寧 大連 116024)
2016年6月2日國際工程聯(lián)盟大會(huì)全票通過了中國的轉(zhuǎn)正申請(qǐng),中國成為國際本科工程學(xué)位互認(rèn)協(xié)議的正式會(huì)員。以學(xué)生為中心、以產(chǎn)出為導(dǎo)向(outcome-based education, OBE)、持續(xù)改進(jìn)是工程教育專業(yè)認(rèn)證推行的三大教育理念。它主張根據(jù)社會(huì)和行業(yè)需求,逆向制訂專業(yè)培養(yǎng)目標(biāo),建立畢業(yè)能力達(dá)成度的評(píng)價(jià)體系,并將評(píng)價(jià)結(jié)果用于該專業(yè)培養(yǎng)的持續(xù)改進(jìn)。OBE教育理念聚焦于工程背景,培養(yǎng)學(xué)生解決復(fù)雜工程問題的能力,其特點(diǎn)是強(qiáng)調(diào)學(xué)生的實(shí)際學(xué)習(xí)產(chǎn)出結(jié)果[1-2]。編譯原理是為計(jì)算機(jī)專業(yè)學(xué)生開設(shè)的專業(yè)必修課。通過本課程的學(xué)習(xí),學(xué)生掌握編譯程序的構(gòu)造體系和基本原理,課程致力于培養(yǎng)學(xué)生運(yùn)用專業(yè)知識(shí)掌握編譯器的設(shè)計(jì)方法,奠定解決工程問題的基礎(chǔ)。該課程具有較強(qiáng)的理論性,課程涉及的數(shù)學(xué)模型較抽象,學(xué)生不易理解,學(xué)習(xí)熱情不高[3]。因此,編譯原理作為理論性和實(shí)踐性要求均較強(qiáng)的一門綜合課程,如何高效地組織理論教學(xué)內(nèi)容,使學(xué)生奠定堅(jiān)實(shí)的理論基礎(chǔ),同時(shí)面向產(chǎn)出提高解決復(fù)雜工程問題的能力,是值得探討和解決的關(guān)鍵問題。
與中國工程教育認(rèn)證通用標(biāo)準(zhǔn)全面對(duì)接,畢業(yè)要求應(yīng)涵蓋工程知識(shí)、問題分析、設(shè)計(jì)/開發(fā)解決方法等12個(gè)方面。編譯原理課程是計(jì)算機(jī)專業(yè)的必修課程之一,所含內(nèi)容既有抽象的數(shù)學(xué)問題,又有較強(qiáng)的理論支撐,涉及問題抽象、基礎(chǔ)理論、設(shè)計(jì)3個(gè)形態(tài)[4]?!熬幾g”是將高級(jí)語言描述的程序變換成與之等價(jià)的另一種語言(面向硬件)表達(dá)的程序,在編譯程序的設(shè)計(jì)與實(shí)現(xiàn)中,運(yùn)用了很多計(jì)算機(jī)學(xué)科的基本技術(shù)、原理和方法[5]。綜上分析,在面向產(chǎn)出的教育模式中該課程主要支撐以下2個(gè)畢業(yè)要求。
(1)工程知識(shí):能夠?qū)?shù)學(xué)知識(shí)、自然科學(xué)知識(shí)、工程基礎(chǔ)知識(shí)、計(jì)算機(jī)專業(yè)知識(shí)用于解決計(jì)算機(jī)科學(xué)與技術(shù)領(lǐng)域的復(fù)雜工程問題。
(2)問題分析:能夠應(yīng)用數(shù)學(xué)、自然科學(xué)和工程科學(xué)的基本原理,識(shí)別、表達(dá)并通過文獻(xiàn)研究分析復(fù)雜計(jì)算機(jī)工程及其相關(guān)領(lǐng)域的問題,以獲得有效結(jié)論。
扎實(shí)的基礎(chǔ)理論和工程知識(shí)是解決復(fù)雜工程問題、保證畢業(yè)生研究潛力和創(chuàng)新能力的基礎(chǔ)。這2項(xiàng)通用畢業(yè)要求由專業(yè)課程、專業(yè)實(shí)踐課程和大類平臺(tái)課程等教學(xué)環(huán)節(jié)支撐,通過平時(shí)作業(yè)、書面考試或提交報(bào)告的形式考核,以2年為一個(gè)評(píng)價(jià)周期進(jìn)行評(píng)價(jià)。具體畢業(yè)要求指標(biāo)分解如下:
(1)能夠?qū)?shù)學(xué)與自然科學(xué)的基本概念運(yùn)用到工程問題的恰當(dāng)表述中(H)。
(2)能夠根據(jù)所學(xué)科學(xué)知識(shí)的基本原理識(shí)別和表達(dá)復(fù)雜計(jì)算機(jī)工程及其相關(guān)領(lǐng)域問題(M)。
(3)能夠正確表述一個(gè)工程問題解決方案并獲得有效結(jié)論(M)。
其中,H表示編譯原理課程對(duì)該指標(biāo)點(diǎn)對(duì)應(yīng)的畢業(yè)能力為高支撐;M表示該課程對(duì)該指標(biāo)點(diǎn)對(duì)應(yīng)的畢業(yè)能力為中支撐。
編譯原理課程的知識(shí)體系一般由詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生產(chǎn)以及存儲(chǔ)空間管理和錯(cuò)誤處理幾個(gè)章節(jié)組成。上述章節(jié)中,最難理解的部分是詞法分析和語法分析。該課程的各部分內(nèi)容抽象繁雜,理論性較強(qiáng),導(dǎo)致學(xué)生對(duì)該課程缺乏信心,降低了學(xué)習(xí)興趣[6-7]。在課程實(shí)踐過程中,學(xué)生感覺其中的原理晦澀難懂,不知為何而學(xué)、不知用于何處等,很難找到相應(yīng)的實(shí)驗(yàn)項(xiàng)目進(jìn)一步關(guān)聯(lián)和理解。針對(duì)上述問題,可以進(jìn)行如下幾方面的改革。
1)理論課程定位。
課程教學(xué)目標(biāo)為:學(xué)生通過本課程學(xué)習(xí)編譯原理基礎(chǔ)知識(shí)和基本理論知識(shí),掌握扎實(shí)的本專業(yè)基礎(chǔ)知識(shí)和基本理論知識(shí),對(duì)應(yīng)畢業(yè)要求(1);掌握程序變換基本概念、問題描述和處理方法,培養(yǎng)“問題、形式化描述、計(jì)算機(jī)化”問題求解典型過程,培養(yǎng)計(jì)算思維能力[4],對(duì)應(yīng)畢業(yè)要求(2);理解并熟練掌握詞法分析程序的數(shù)學(xué)模型—有窮狀態(tài)自動(dòng)機(jī)的設(shè)計(jì)技術(shù),掌握自頂向下及自底向上的語法分析方法,理解語法制導(dǎo)翻譯的實(shí)現(xiàn)思想,并具有設(shè)計(jì)、實(shí)現(xiàn)、分析和維護(hù)編譯程序等方面的能力,對(duì)應(yīng)畢業(yè)要求(3)。最終配合實(shí)驗(yàn),使學(xué)生具有能夠簡單設(shè)計(jì)編譯程序的能力。在系統(tǒng)級(jí)上再認(rèn)識(shí)程序和算法,提升計(jì)算機(jī)問題求解的水平,增強(qiáng)系統(tǒng)能力,體驗(yàn)實(shí)現(xiàn)自動(dòng)計(jì)算的樂趣。
2)實(shí)驗(yàn)課程定位與項(xiàng)目設(shè)計(jì)。
與理論教學(xué)緊密結(jié)合,學(xué)生通過實(shí)驗(yàn)教學(xué)訓(xùn)練,加深對(duì)理論知識(shí)的進(jìn)一步理解,把抽象的知識(shí)轉(zhuǎn)化為與實(shí)際相結(jié)合的具體運(yùn)用,使學(xué)生能夠掌握一些常用詞法分析和語法分析的基本設(shè)計(jì)方法,提高學(xué)生的實(shí)際動(dòng)手能力、分析問題和解決問題的能力。主要實(shí)驗(yàn)項(xiàng)目設(shè)計(jì)如下:
(1)掌握文法及其所描述的語言(源語言定義)。
(2)對(duì)PL/0語言或自定義語言(如C—子集)完成詞法分析器,主要包括編制一個(gè)能夠分析數(shù)字、標(biāo)識(shí)符、主要運(yùn)算符和主要關(guān)鍵字的詞法分析程序。有能力的學(xué)生可適當(dāng)擴(kuò)充語言定義,如增加數(shù)據(jù)類型、增加for語句、增加函數(shù)調(diào)用等。
(3)掌握計(jì)算機(jī)語言的語法分析程序設(shè)計(jì)(與屬性文法)的實(shí)現(xiàn)方法,設(shè)計(jì)實(shí)現(xiàn)一個(gè)能進(jìn)行語法分析(并生成三地址代碼,如四元式碼)的編譯程序。
(4)掌握解釋程序的實(shí)現(xiàn)方法,設(shè)計(jì)中間代碼解釋器,實(shí)現(xiàn)一個(gè)能對(duì)前述所生成的中間代碼進(jìn)行解釋執(zhí)行的程序。
(5)書寫實(shí)驗(yàn)報(bào)告,并給出正確和錯(cuò)誤的測(cè)試用例。
目前編譯原理教學(xué)效果的評(píng)價(jià)主要由兩部分組成:一是學(xué)生的考試,考試成績由平時(shí)作業(yè)成績、測(cè)驗(yàn)成績以及期末考試成績組成,這是對(duì)學(xué)生成績的評(píng)定;二是教務(wù)處組織的對(duì)教師教學(xué)效果的評(píng)價(jià)。此外,還應(yīng)建立以產(chǎn)出為導(dǎo)向的課程目標(biāo)達(dá)成度評(píng)價(jià),根據(jù)每年的達(dá)成度結(jié)果對(duì)課程進(jìn)行適當(dāng)調(diào)整。編譯原理為計(jì)算機(jī)科學(xué)與技術(shù)的專業(yè)基礎(chǔ)類課程,對(duì)應(yīng)畢業(yè)要求的指標(biāo)點(diǎn)分別為(1)、(2)和(3)。其中,(1)是對(duì)畢業(yè)能力的強(qiáng)支撐,(2)和(3)是對(duì)畢業(yè)能力的中支撐,以試卷、作業(yè)和平時(shí)測(cè)驗(yàn)作為評(píng)價(jià)依據(jù),以學(xué)期考試作為評(píng)價(jià)方式,以課堂講授、課后作業(yè)和學(xué)期考試作為達(dá)成途徑。近兩年考題與畢業(yè)能力達(dá)成關(guān)系見表1。
近兩年的課程達(dá)成度見圖1,在進(jìn)行達(dá)成度評(píng)價(jià)過程中,經(jīng)分析發(fā)現(xiàn)存在的問題是:目標(biāo)(1)相關(guān)的工程基礎(chǔ)知識(shí)掌握較好,而(2)相關(guān)的問題表達(dá)能力和(3)相關(guān)的復(fù)雜計(jì)算機(jī)工程解決能力較弱。
該課程是偏理論的計(jì)算機(jī)專業(yè)基礎(chǔ)課,教學(xué)方式有別于一般課程,學(xué)生需要一定的適應(yīng)期。目前的理論課程和實(shí)驗(yàn)課程的內(nèi)容設(shè)置與最新的學(xué)科發(fā)展和學(xué)生能力培養(yǎng)目標(biāo)不適應(yīng),主要體現(xiàn)在:①注重原理性的知識(shí),缺乏工程性的方法;②注重分析式的教學(xué),缺乏系統(tǒng)性的實(shí)踐與創(chuàng)新。鑒于2015年的達(dá)成度指標(biāo),2016年秋季學(xué)期開始著力解決以上問題,主要采取了如下途徑:在教學(xué)模式上,提出了面向工程的編譯原理教學(xué)模式,構(gòu)思“工程牽引—問題驅(qū)動(dòng)—分析引入—學(xué)用結(jié)合”教學(xué)法,建立“應(yīng)用—問題—分析—?dú)w納”的教學(xué)模式。
表1 近兩年考題與畢業(yè)能力達(dá)成關(guān)系表
圖1 近兩年考題與畢業(yè)能力達(dá)成度對(duì)比圖示
實(shí)現(xiàn)問題牽引式教學(xué),改變重理論弱應(yīng)用、重分析少歸納的狀況,提升學(xué)生對(duì)問題的抽象能力和分析能力。例如,在引入NFA(不確定的有窮自動(dòng)機(jī))實(shí)例時(shí),為學(xué)生講解NFA是如何識(shí)別非負(fù)偶整數(shù)的。對(duì)于給定的整數(shù),圖2給出的NFA似乎具有“智能”,對(duì)于給定的非負(fù)偶數(shù),給出的NFA總能“自適應(yīng)地”找到到達(dá)終態(tài)的路徑。然而,這種智能導(dǎo)致不能夠依據(jù)NFA設(shè)計(jì)確定的程序?qū)崿F(xiàn)非負(fù)偶數(shù)的識(shí)別。NFA的不確定性使FA的設(shè)計(jì)變得簡單,然而這種不確定性導(dǎo)致NFA的程序化變得不可能。因此,要將NFA確定化,轉(zhuǎn)化為與其等價(jià)的DFA。最終,根據(jù)DFA設(shè)計(jì)能夠識(shí)別非負(fù)偶數(shù)的算法并實(shí)現(xiàn)。在講解DFA時(shí),會(huì)通過更多的實(shí)例引導(dǎo)學(xué)生發(fā)現(xiàn)每個(gè)DFA都對(duì)應(yīng)一個(gè)確定的算法,可用于解決一類問題。問題牽引教學(xué)方式能夠激發(fā)學(xué)生的學(xué)習(xí)熱情,提升自我思考的能力,使學(xué)生發(fā)現(xiàn)自動(dòng)計(jì)算的樂趣。
圖2 識(shí)別非負(fù)偶整數(shù)NFA圖示
例如,在LR文法分析引入過程中,可以先給出指定語句的語法分析樹;其次,在語法樹上給出LR分析的過程,逐步引導(dǎo)學(xué)生發(fā)現(xiàn)LR分析的本質(zhì),即找到句柄,最后,在當(dāng)前語法樹上標(biāo)記出何為最左直接短語(句柄)。這種以實(shí)例為引入的教學(xué)方式使學(xué)生從被動(dòng)接受轉(zhuǎn)變?yōu)橹鲃?dòng)思考,提高創(chuàng)新和問題解決能力[6]。此外,在課堂作業(yè)中適當(dāng)增加工程實(shí)際問題的討論與分析,能提升學(xué)生對(duì)課程的學(xué)習(xí)熱情。
基于產(chǎn)出為導(dǎo)向的教育模式對(duì)編譯原理教學(xué)提出了更高的要求,引起了對(duì)課程教學(xué)和考核評(píng)估的新思考。首先,需要根據(jù)專業(yè)畢業(yè)要求對(duì)課程的教學(xué)目標(biāo)進(jìn)行分解。其次,根據(jù)平時(shí)作業(yè)成績、課堂表現(xiàn)、測(cè)驗(yàn)成績、期末考試成績以及實(shí)踐課程的完成情況制定課程目標(biāo)達(dá)成度評(píng)價(jià)體系,根據(jù)達(dá)成度情況對(duì)課程的講授進(jìn)行調(diào)整。OBE教育模式是一種教育范式的革新,希望本文給出的教學(xué)方法和評(píng)價(jià)指標(biāo)為高校的編譯原理課程的教學(xué)提供一些借鑒。下一步希望能根據(jù)畢業(yè)生反饋和企業(yè)反饋給出更全面的課程目標(biāo)達(dá)成度評(píng)價(jià)方法。