韓士元 藺永政 周勁 孫潤元
摘要:針對編譯原理課程教學(xué)內(nèi)容抽象、算法復(fù)雜等特點及教學(xué)實際,充分探討MOOC教學(xué)模式與編譯原理教學(xué)過程交叉、融合的可能,提出基于MOOC教學(xué)模式的、適于面向?qū)ο蟾呒壵Z言的編譯原理分階段課程教學(xué)方案,旨在充分發(fā)揮MOOC教學(xué)模式在編譯原理教學(xué)環(huán)節(jié)中的作用,在提高學(xué)生專業(yè)學(xué)習(xí)能力的同時,重點培養(yǎng)學(xué)生從代碼優(yōu)化的角度審視大型軟件開發(fā)過程,培養(yǎng)學(xué)生提出問題、解決問題的科研思維。
關(guān)鍵詞:MOOC;編譯原理;分階段教學(xué);面向?qū)ο蟪绦蛟O(shè)計
0.引言
MOOC(massive open online course,大規(guī)模在線開放課程,簡稱幕課)因其在高校知識資源整合和共享方面具備的天然優(yōu)勢,近年來備受全球教育界的重視,甚至形成了席卷全球的“數(shù)字海嘯”,代表了現(xiàn)階段高等教育發(fā)展的前沿和趨勢。同時,素有“計算機科學(xué)與技術(shù)皇后”之稱的編譯原理屬于計算機專業(yè)核心課程之一,是計算機基礎(chǔ)科學(xué)研究與實踐應(yīng)用之間的一座橋梁。然而,編譯原理教學(xué)內(nèi)容抽象、理論性強、算法復(fù)雜、難于理解,教師對理論知識講解難度較高。因此,如何結(jié)合MOOC教學(xué)模式重組編譯原理教學(xué)內(nèi)容,不僅是MOOC模式優(yōu)點在計算機類教學(xué)過程中的體現(xiàn),也是編譯原理課程發(fā)展自身、完善自我的需要。
1.基于Mooc的編譯原理分階段教學(xué)設(shè)計
考慮編譯原理課程內(nèi)容抽象、理論性較強、涉及算法較多等特點,結(jié)合MOOC教學(xué)模式的優(yōu)點,旨在更加合理、有效地整合教學(xué)資源、共享知識,筆者設(shè)計了一種基于MOOC的編譯原理分階段教學(xué)模式。教學(xué)形式方面,以傳統(tǒng)教學(xué)模式穿插MOOC視頻教學(xué)展開,重點關(guān)注MOOC在重點知識點講解過程中的作用;教學(xué)內(nèi)容方面,分階段講授理論知識的同時,基于面向?qū)ο蟾呒壵Z言設(shè)計課程實踐內(nèi)容,實現(xiàn)基礎(chǔ)與實踐并重。
1.1第一階段:面向?qū)ο蟾呒壵Z言的描述、自動機構(gòu)造、詞法分析
1.1.1理論知識講授
以面向?qū)ο蟾呒壋绦蛘Z言詞法分析為例,講述編譯原理詞法分析階段在整個編譯過程中的核心任務(wù)以及解決問題所用的經(jīng)典算法。
(1)依據(jù)面向?qū)ο蟪绦蛟O(shè)計語言詞法規(guī)則,設(shè)計每類單詞的正則表達式;
(2)講解以正則表達式為源頭,轉(zhuǎn)換為非確定有限自動機(NFA),處理NFA,使其確定化、最小化,最終生成DFA的整個過程;
(3)確定有限自動機(DFA)之間的轉(zhuǎn)換算法;
(4)講解由正則表達式為源頭,最終獲取最簡DFA的相關(guān)算法及步驟。
其中,NFA和DFA生成過程中保存單詞類別信息,狀態(tài)合并時也將單詞類別集合合并,以便在使用DFA分析單詞時得到單詞類別,這一點也是對目前單詞識別算法的改進。針對多個NFA合并必然產(chǎn)生沖突的情況,即在某個終態(tài)會產(chǎn)生多種單詞類別的選擇,這時采用人工干預(yù)的方法,一般以長單詞優(yōu)先、短單詞類別優(yōu)先。
1.1.2實踐環(huán)節(jié)設(shè)計
根據(jù)本階段講授的理論知識,設(shè)計課程實踐環(huán)節(jié),主要實現(xiàn)對輸入面向?qū)ο蟪绦蛟创a文件的預(yù)處理,多NFA合并為一個NFA,并最終確定、化簡處理過程,處理形式最終以DFA五元組形式存儲于二進制文件中。通過實踐環(huán)節(jié),學(xué)生能進一步掌握詞法分析中的算法思想,進一步深化詞法分析中處理源程序的過程及相互關(guān)系,鞏固所學(xué)知識。
1.1.3 MOOC展示
本階段教學(xué)內(nèi)容將錄制視頻著重講解次有正則表達式轉(zhuǎn)換到DFA的整個流程及核心算法,使學(xué)生能夠通過觀看視頻對此部分內(nèi)容進行預(yù)習(xí)、掌握,之后通過翻轉(zhuǎn)課堂的形式解答學(xué)生的問題和學(xué)習(xí)難點。同時,教師錄制視頻詳細講解編譯器實現(xiàn)過程中,本階段所涉及的編程知識,使學(xué)生能跟隨視頻內(nèi)容學(xué)習(xí)相關(guān)內(nèi)容。
1.2第二階段:面向?qū)ο蟾呒壵Z言的文法設(shè)計、語法分析
1.2.1理論知識講授
語法分析方面,主要涉及面向?qū)ο蟮奈姆ǎ悺⒗^承、重載、虛函數(shù)、接口、屬性、事件、委托等的處理。以c#高級語言為例,重點講述針對面向?qū)ο笳Z言各類語法的相關(guān)文法設(shè)計;了解消除左遞歸及提取左公因子的相關(guān)算法,進一步處理文法;以LL(1)、LR(I)、LALR(1)經(jīng)典算法為例,講述以詞法分析程序翻譯的“單詞符號序列”為輸入,將單詞作為語句成分進行語法檢測,若裝配的語句成分符合語法規(guī)則,則進行相應(yīng)的翻譯,進入第三階段,若不成功,則說明不符合c#的語法規(guī)則。
1.2.2實踐環(huán)節(jié)設(shè)計
消除左遞歸及提取左公因子之后的文法,構(gòu)造LL(1)語法分析表,其中主要包括兩個符號集合FIRST(α)和FOLLOW(A);在此基礎(chǔ)上構(gòu)造LR(1)分析表,主要采用構(gòu)造項目規(guī)范族和“展望”搜索方法;最終依據(jù)LL(1)和LR(1)分發(fā)構(gòu)造文法總控程序,依據(jù)分析表分別進行遞歸下降分析和從左到右、自上而下的分析,將單詞符號序列裝配成語句成分,并進行語法檢查。
1.2.3 MOOC展示
本階段教學(xué)內(nèi)容將錄制視頻著重講解LL(1)、LR(1)、LALR(1)算法的基本思想及實現(xiàn)過程,實現(xiàn)此部分教學(xué)資源的共享和利用,并以翻轉(zhuǎn)課堂的形式答疑,解決學(xué)生碰到的實際問題,同時錄制視頻詳細講解編譯器實現(xiàn)過程中語法分析部分的具體實現(xiàn)。
1.3第三階段:中間代碼、目標(biāo)代碼生成及優(yōu)化
1.3.1理論知識講授
中間代碼生成方面,著重講解中間代碼的三元式、四元式、逆波蘭式表示方法,并講述控制語句的翻譯;在代碼優(yōu)化方面,掌握基本的劃分方法以及DAG圖的優(yōu)化算法,實現(xiàn)代碼的初級優(yōu)化;針對面向?qū)ο蟮某绦蛟O(shè)計過程中擴展中間代碼的表示方法,實現(xiàn)對于各類面向?qū)ο笤氐拿枋龊捅磉_;目標(biāo)代碼生成方面,因為MSIL是一種面向?qū)ο蟮恼Z言,不同于指令和匯編語言,需要重新設(shè)計生成算法。
1.3.2實踐環(huán)節(jié)設(shè)計
在實現(xiàn)階段一、階段二實踐環(huán)節(jié)的基礎(chǔ)上,本階段進行整合處理,實現(xiàn)簡單數(shù)學(xué)表達式的中間代碼生成程序,并進行代碼的初步優(yōu)化。
1.3.3 MOOC展示
本階段教學(xué)內(nèi)容將錄制視頻著重講解中間代碼生成核心算法的基本思想及實現(xiàn)過程,從而實現(xiàn)此部分教學(xué)資源的共享和利用,并以反轉(zhuǎn)課堂的形式答疑,解決學(xué)生碰到的實際問題。
2.成績考評、教學(xué)反饋及效果評價
2.1成績考評形式
考評是教學(xué)中的一個重要環(huán)節(jié),它對教學(xué)組織形式、教學(xué)內(nèi)容等具有客觀的評價作用,是引導(dǎo)、激勵、督促學(xué)生學(xué)習(xí)并了解學(xué)生掌握知識情況的重要手段,也是教師進行自身評定、課程改革的重要依據(jù)。傳統(tǒng)的考評過程存在種種弊端,如考試作弊、考試形式單一、教師工作繁重等,我們針對編譯原理課程特點,運用MOOC教學(xué)模式和分階段教學(xué)模式,采用分階段紙質(zhì)考試形式,結(jié)合課堂答疑表現(xiàn)、實驗實踐完成成績及作業(yè)完成情況等,綜合評價分階段課程教學(xué)模式下學(xué)生對知識的掌握情況,鼓勵學(xué)生把知識的掌握與消化過程放在平時,杜絕考前突擊的情況發(fā)生。同時,階段性收集學(xué)生給予任課教師的建議及意見,做出定量、定性評價,對下一階段課程教學(xué)進行及時完善和修改,從而促進教學(xué)質(zhì)量的改進。
2.2教學(xué)反饋
課程教授過程中,應(yīng)充分注重學(xué)生的反饋,及時調(diào)整教學(xué)方法和策略,提高教學(xué)質(zhì)量。
2.2.1學(xué)生反饋
通過課堂教學(xué)反饋信息表收集學(xué)生對課程內(nèi)容和教師工作的意見和建議;通過作業(yè)、實驗報告了解課堂和實踐環(huán)節(jié)的執(zhí)行情況;通過課下任務(wù)的完成情況了解擴展和創(chuàng)新能力;通過QQ群、郵件等輔導(dǎo)答疑形式及時進行交流;通過個別交流了解個性發(fā)展;通過學(xué)生評教了解整體教學(xué)狀況。
2.2.2自我反饋
教師課后反思,整理思路,修正課件,調(diào)整計劃,通過結(jié)課后的課程總結(jié)進行教學(xué)反思。
2.2.3教師反饋
應(yīng)與聽課教師進行交流,吸取意見和建議;分析由教學(xué)督導(dǎo)員提供的反饋信息。通過以上多種形式的反饋,可以促進教師及時發(fā)現(xiàn)教學(xué)中出現(xiàn)的問題,更新教學(xué)資料及視頻,及時調(diào)整教學(xué)方法、教學(xué)手段和措施,提高教學(xué)質(zhì)量。
2.3效果評價
筆者提出的教學(xué)模式已經(jīng)在濟南大學(xué)連續(xù)實施三屆,我們從教學(xué)方式、課程內(nèi)容、實踐環(huán)節(jié)及考核手段等方面進行改革與探索。根據(jù)考核成績可以看出,相較于傳統(tǒng)的教學(xué)方法和考核模式,采用分階段教學(xué)模式后,學(xué)生對編譯原理課程的總體把握性增強了,普遍反映對知識的掌握更加扎實,實踐能力具有較大提高。同時,教師對本門課程的把握、教學(xué)過程中的問題有了更清晰的認識,教學(xué)效果有很大提高。
3.結(jié)語
針對編譯原理課程內(nèi)容特點及考核形式,我們在現(xiàn)實教學(xué)過程中,結(jié)合具體情況,對教學(xué)過程進行了改革和調(diào)整,重新組織了教學(xué)內(nèi)容和實踐環(huán)節(jié),增加MOOC在教學(xué)環(huán)節(jié)中的作用,并上調(diào)了實踐環(huán)節(jié)在編譯原理課程中的比重,以期學(xué)生整體上把握編譯原理的理論知識,提高編程能力,激發(fā)學(xué)生的自學(xué)能力和求知欲,更好地培養(yǎng)學(xué)生的科研思維。