編譯原理實驗課程教學設計的改進論文

編譯原理實驗課程教學設計的改進論文

  編譯原理課程是計算機科學與技術專業的重要專業課之一,課程內容抽象,理論性較強,學生普遍反應難學難懂,為此設定一定課時的實驗課,有助於幫助學生深入理解概念,提高學生的邏輯思維能力、實踐動手能力,有助於切實有效地提高學生的專業素質。目前編譯原理課程的實驗設計通常是要求學生實現一個比較完整的編譯程式,或者將其拆分成詞法分析實驗、語法分析實驗和語義分析實驗等幾個部分,實驗內容具有一定的難度,讓很多學生知難而退,難以達到預期的實驗效果。究其原因是在實驗設計上與學生的實際情況之間出現了諸多偏差,需要對實驗的設計和組織進行改進,以更好地提高編譯原理實驗課的教學效果。

  1編譯課程實驗的問題

  1.1學生對課程實驗定位存在認知誤區

  在教學實踐中發現很多學生對編譯原理實驗課程的認識上存在很多誤區,這些認識誤區如果不加以及時糾正,加上課程內容抽象、邏輯性強等特點,很容易加重學生的畏難情緒,產生一系列不利於課程學習的消極負面影響。

  一種認識誤區是簡單地認為編譯原理的學習目的就是設計和開發編譯器,認為畢業後很少有從事編譯器研發的機會,所以得出課程學了沒用的錯誤結論。實際上編譯原理包括的形式語言、自動機理論等語言定義、翻譯與實現的基礎知識,可以讓學生領悟到計算機理論的精髓,可以讓學生從程式編譯的角度重新審視軟體的開發,有助於提高學生對軟體設計開發的認識,對於今後從事應用軟體、語言開發平臺甚至系統軟體的開發等都是非常有好處的。

  另一種認識誤區是將編譯的實驗混淆於普通的程式設計實驗,將實驗重點沒有放在演算法的設計、原理的理解上,而是迷失在具體程式碼實現的細節上。編譯原理課程是一個綜合性的專業課,編譯程式使用的一些資料結構和演算法是“資料結構”、“離散數學”以及“演算法設計與分析”等課程相關知識的典型應用 ,能夠進一步加深了學生對相關課程知識的綜合運用和專業素質的提升。

  1.2實驗內容設計缺少層次性

  通常的編譯原理實驗課的教學設計,是將學生已經學過的一種高階語言的詞法和語法進行簡化,作為實驗的模型語言。針對編譯過程的詞法分析、語法分析、語義分析與中間程式碼生成、目的碼生成的四個重要階段,每個階段分別設計一個或多個實驗題目,最終合成一個完整的編譯程式。這樣設計實驗的好處是與授課內容緊密結合,模組分解清晰。但存在的問題是儘管對高階語言進行了簡化,每個實驗仍然存在著一系列的“難度階梯”需要學生跨越,如果在實驗的設計上僅從學科的理論體系上考慮,忽視了學生知識和能力水平的不同層次,只是一種理想化的設計,執行起來勢必難以達到預期的實驗效果。

  以詞法分析的實驗設計為例:實驗要求是給出某模型語言的文法規範,要求編寫該語言的詞法分析程式。輸入源程式檔案,輸出關鍵詞、專用符號以及其它標記。實驗過程是編寫主函式getToken,透過從檔案中讀取字元到緩衝區中並由C語言字元的狀態轉換圖流程判斷返回一個字元(Token)。分析出來的單詞主要分為關鍵詞,專用符號,標記符號等。

  這個實驗是編譯階段的第一個實驗,在學生對編譯程式理解不深,很多思維方式和知識框架還沒有建立起來的情況下,給很多學生設定了一系列障礙,如形式化語言、有窮自動機的理論等,每一個障礙對於初學者都難度不小,這些問題同時出現在一個實驗中,會使相當大一部分學生因難度過大而失去學習興趣。實際教學中學生對編譯程式的認知是循序漸進的,很多概念和原理的理解不可能一步到位。而且學生的知識結構、能力水平參差不齊,有的學生的先導課程如《資料結構》、《高階程式設計語言》等知識學得不牢固,有些甚至已經淡忘,因此在設計實驗時需要首先弄清楚學生的情況,然後再“對症下藥”有側重點地進行實驗內容的設計。

  1.3實驗的組織形式比較單一

  編譯原理的實驗組織形式通常是在機房每個學生一臺計算機,實驗課程開始後教師介紹實驗內容、實驗目的和實驗要求等,然後每人獨立完成,從設計到實現都由學生自己進行,教師在實驗過程中隨時解答學生的疑問,最後學生除錯完成程式後撰寫實驗報告,教師根據學生的程式和實驗報告給出分數。這樣的實驗組織和成績的評判形式比較單一,整個過程由教師主導,能夠訓練學生個體的獨立思考能力和動手能力,但學生之間的交流不夠,實驗課的大部分時間都是學生埋頭寫程式,實驗課氣氛比較枯燥沉悶,對學生團隊協作能力的訓練不夠。

  2實驗教學設計的改進

  2.1消除學生的認識誤區

  針對學生簡單地把編譯原理課程侷限在編譯器設計上的認識誤區,教師在授課和實驗過程中需要注意結合實際中運用編譯技術的例項,比如常用的文字編輯工具中,很多帶有字詞的檢查和校驗功能,這就是編譯原理技術中詞法分析技術的具體應用;很多應用系統中對使用者輸入的字串進行規則檢查時常用正則表示式;網路搜尋引擎對文件資源進行特徵分析、提取與描述等工作中都用到編譯的相關知識……透過各種現實生活中的例項讓學生明確編譯原理所學習的知識不僅是計算機專業理論知識的重要組成,而且編譯程式所使用的一些原理、方法和技術在非編譯系統的實際應用中也發揮了很大作用。

  在進行實驗設計時,除了原理性實驗,可以根據學生的興趣,安排一些應用型的實驗,如簡單的智慧輸入法的實現、識別某些單詞的簡單聊天機器人程式等,這樣的小實驗可以激發學生的學習興趣,學生在這些應用性趣味實驗中遇到了困難,自然會進一步深入學習教材中的原理,這樣對基礎理論的掌握也會更加牢固。

  2.2實驗內容的改進

  國內外的一些經典教材中,通常會採用一種模型語言的編譯程式作為例項,如呂映芝等人編著的《編譯原理》是以PL/0語言的編譯程式為範例,Alfred V. Aho等人編著的《編譯原理》先透過一個小的編譯程式範例給學生帶來對編譯程式的直觀感受。透過例項的學習,可以降低學生的學習難度,也可以輔助學生對原理加深理解。在設計實驗時,可以更大地發揮這些例項的作用,事先讓學生閱讀這些例項的原始碼,然後增加一個準備性的實驗,要求學生結合已經學習過C、C++或JAVA等高階程式設計語言,自行對詞法規則和語法規則的簡化和裁減,設計出適合自己實驗難度的模型語言,並給出文件描述。透過安排這個準備實驗,促使學生複習必須的基礎知識,增加學生查閱資料的能力和閱讀原始碼的能力,在學生的認知結構上起一個鋪墊的作用。

  詞法分析、語法分析試驗是編譯原理實驗的重點。在實驗內容上,對一些比較複雜的實驗進行拆解。詞法分析實驗可以拆分成三個小實驗:設計源程式掃描器,去除空格和註釋及其他無關字元後得到單詞的集合;用自動機識別無符號數或某類單詞;設計識別關鍵詞、識別符號等其他型別單詞的識別程式。對語法分析實驗,可以首先以典型的算術表示式文法為例,設計一個算術表示式文法的遞迴子程式分析實驗,然後在此基礎上安排其他的語法分析實驗。這樣在內容上也分成了若干層次,更加符合由簡單到複雜、由特殊到一般的認知規律,也能夠滿足不同知識結構和能力水平的學生在實驗中都能得到鍛鍊提高的目的。

  實驗難度的設計上應該體現出層次性,形成“階梯狀”的難度層次。每個實驗要求分為基本要求、較高要求和探索性實驗要求三個層次,基本要求即最低要求,所有學生都能完成的難度,鼓勵成績中上的學生完成較高要求,採用成績加分、表揚等一些激勵機制,提高興趣,為一些學有餘力的同學準備探索性實驗。既能讓優秀的學生“吃得飽”,也保證讓所有學生“吃得了”,避免一部分學生因缺乏難度挑戰失去興趣而另一部分學生因門檻太高而無從下手的情況發生。比如在“利用自動機識別無符號數”的實驗設計上,基本要求是能夠識別整數,較高要求是識別帶小數的無符號數,更高要求是能識別帶指數形式的無符號數,將這一實驗題目分成三個層次後,不同學習水平的學生都能夠在一個學時內完成實驗,對自動機這一重要工具也有了初步認識,達到了實驗目的'。

  2.3實驗組織形式的改進

  在實驗的組織上可以採用協同式學習,以小組為單位,透過教師所提供的實驗任務進行分析、討論,明確需要解決問題的方法,經過一系列的協同學習活動,完成既定的任務,加深對所學知識的理解。這種組織形式可以培養學生的團隊協作能力和學生之間的相互交流和相互學習。因為學生之間的年齡相仿、認知水平相似,交流起來會更加順暢和有效。在這個過程中能夠提高學生的參與感,而且透過團隊協作解決困難,會給學生更多的積極反饋和成就感。

  在實驗內容的設計上,要便於學生進行協同工作,具有可操作性和合作性,確保小組中每個成員的任務飽滿。在小組分配上,根據學生的興趣讓其自由結合小組,再根據學生的學習能力做適當調整,根據學生的性格特質等不同特點讓其在小組中承擔不同角色,如設計人員、開發人員、文件撰寫人員以及兼任的彙報答辯人員等。實驗實施階段是協同模式中最重要的一個階段,在這個階段小組要對下達的實驗任務進行分析,明確任務的基本要求,掌握解決問題的方法及需要具備的知識,在教師的幫助指導下進行小組的內部分工及職責的落實,進行協同學習,同時教師要對學生實驗完成情況進行及時的檢查和指導,直到最終共同完成小組的任務。

  傳統的獨立模式的實驗中對學生的評定比較簡單,根據個人的完成情況給出成績。採用分組式協同模式後,實驗成績的評判要做相應的調整,不僅要考核每個學生自己承擔的任務完成情況,還要考核小組共同完成情況。考核的內容仍然包括程式和實驗報告,但除了對每個學生獨立完成的程式模組進行檢查外,還需要對小組共同完成的整個任務情況進行驗收,可以採用彙報和答辯的形式進行,每個小組推選答辯人在面對所有學生進行彙報,然後接受教師和其他小組的提問並進行答辯,最終成績的評定除了個人評定之外還有小組評定,對小組成績進行排序以鼓勵小組間的競爭。

  3總結

  為了在編譯原理實驗課中達到教學目標,根據發現的問題對實驗課教學設計進行改進:採用應用型實驗激發學生的興趣,消除對課程的認識誤區;重新設計和組織實驗內容,更加符合學生的學習規律;採用協同方式組織實驗培養學生的團隊合作能力。這些改進措施已經在教學實踐中採用,結果表明有助於降低學生學習過程中的困難,增強學習興趣,提高實驗教學的質量。

最近訪問