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