閱讀屋>語文> 編譯原理課程的教學分析

編譯原理課程的教學分析

編譯原理課程的教學分析

  計算機語言之所以能由單一的機器語言發展到現今的多種高階語言,就是因為有了編譯技術,它是計算機科學與技術中發展最迅速、最成熟的一個分支。“編譯原理”是計算機專業中一門非常有用的核心課程,綜合運用編譯理論及多門前修課程如“資料結構”、“離散數學”、“作業系統”等課程的相關知識來解決高階語言在機器上編譯的一門課程。該課程的目的是在於系統地向學生講述編譯系統的結構、工作流程以及編譯程式各組成部分的設計原理和實現技術,使學生透過本課程的學習,既掌握編譯理論和方法方面的基本知識,同時也獲得設計、分析和移植編譯程式方面的初步能力,進而提高學生設計多種軟體的素質。

  1當前教學中存在的問題

  由於這門課程理論性強,內容豐富抽象,具有嚴密的邏輯性,使用到其它課程的知識較多,因此成為計算機專業諸課程中既難教又難學的一門課程。目前該課程在教學過程中主要存在以下問題:

  1)課程內容抽象難理解

  編譯程式不同於一般的應用程式,是一個十分龐大和複雜的系統軟體,它所包含的理論知識較多,抽象度也較高,要求教師在有限的課時內將課程內容講解清楚,並使學生接受理解是有難度的。

  2)基於面向過程語言的描述模型

  目前,這門課程中的演算法和模型描述是用PASCAL語言或者C語言等面向過程語言。雖然個別教材加入了少量關於面嚮物件語言編譯技術的內容,那也是稍加點綴而已,用途較小。然而,面嚮物件語言已經成了高校計算機教學的主流語言,社會上大量使用的也是面嚮物件語言,而我們的編譯原理教學仍然沿襲舊的面向過程語言,這種現象嚴重脫離了計算機技術發展和社會實際需要。

  3)課程實驗設計不合理

  目前,大多數高校在“編譯原理”課程的實驗內容上基本上都是要求學生能上機實現一個小型模型語言的完整編譯程式,或者是分四個單獨的實驗(詞法一個實驗,語法三個實驗),它們的'目的是讓學生加深理解一些編譯理論與演算法,這對於一部分學生來說是不能完成的任務,也不能激發他們的興趣(他們認為學習編譯原理就是為了設計編譯器),造成很大部分學生在動手之前就早早放棄了努力,也就不能達到預期的實驗效果。

  4)教學手段陳舊

  目前,“編譯原理”課程主要以理論教學為主,課時主要用於形式語言理論與各種語法分析演算法、語義分析技術的講授上,缺乏對實際編譯器的分析。同時,在講解的時候一般沒有輔之以其它形象生動的教學手段,對學生是採用“灌輸式”的教學模式,而沒有采用“啟發式”、“討論式”等多種教學模式,因此學生覺得授課內容枯燥乏味,激不起他們學習的興趣。

  5)教學大綱統一

  目前,每個高校計算機相關專業包括計算機科學與技術、軟體工程、網路工程等,學生也存在不同的層次包括統招的“一本”、“二本”學生,以及“專升本”學生等。不同專業有不同的培養目標,不同的生源造成學生知識背景和自身素質也有差異。在這種情況下,在“編譯原理”課程教學過程中實行統一的教學大綱顯然不合適。

  6)學生學習興趣不濃

  目前,學生普遍認為學習編譯原理就是為了設計編譯器,而大部分學生今後從事編譯器設計工作的可能性較小,因此覺得沒必要學。另外,目前面向物件的程式設計語言已經成為了主流,認為課程主要講授面向過程的程式設計語言的處理已經落伍,因此失去了學習興趣。

  形成以上這些問題的原因既有主觀的也有客觀的,這些問題在我校的編譯原理教學過程中也都不同程度地存在。為此,對“編譯原理”課程的教學內容和教學方法進行探討是十分必要的、有意義的。

  2需要解決的問題

  1)課程內容的調整

  “編譯原理”課程內容豐富抽象,理論性和邏輯性很強,所以很多學生在學習時普遍感到枯燥、乏味,難理解,激不起學習興趣。為此,需要對課程內容合理安排以便收到較好的教學效果。

  a)抓住重點,分清主次

  由於課程內容涉及較多,學生往往抓不住重點,分不清主次,結果導致勞而無功。為此,需要根據專業的不同,學生層次的不同,在不影響對編譯系統理解的情況下,合理安排授課內容,切不可造成“統一重點的教學”、“統一層次的教學”、“統一大綱的教學”現象。

  b)範例式編譯器的剖析

  為了幫助學生對編譯思想和方法的理解,應在教學過程中增加一部分內容,即對一個範例式編譯器進行剖析。該範例式編譯器應採用教學中涉及到的典型編譯思想與方法。學生在教師的指導下對實際編譯器程式碼進行閱讀,將使學生對抽象的編譯理論與演算法有更深刻的認識,從而達到較好的教學效果。

  c)面向物件式語言的描述模型

  當前,面向物件式語言已成為主流,而目前課程中的內容卻是圍繞面向過程式語言展開的。為此,需要在教學過程中增加一部分內容,即選擇某個物件式語言來描述典型的編譯演算法。但就目前來看,以面嚮物件語言作為源語言來重新組織編譯原理的教學內容並不合適。在教學過程中應向學生指明這一點,使之有個正確的認識。

  2)實踐環節的設計

  “編譯原理”也是一門實踐性較強的課程,只有透過實踐環節才能讓學生加深對抽象理論的理解,培養其分析、設計軟體的能力。為此,必須重視實踐環節的教學,精心設計實驗方案,合理組織實踐訓練(對於不同專業培養目標、不同類別學生素質差異,需設計不同的實驗方案)。

  a)設計合適的實驗內容

  目前,大多數高校在“編譯原理”課程的實驗內容上基本上都是要求學生能上機實現一個小型模型語言的完整編譯程式,或者是分四個單獨的實驗(詞法一個實驗,語法三個實驗)。這樣的實驗內容存在一個缺陷就是不能充分激發學生的學習興趣,因為他們認為學習編譯就是為設計編譯器,而大部分學生以後從事這方面工作的可能性較小。為此,我們需要設計一個能運用編譯理論和技術去解決實際問題的實驗。例如,可以給定一個受限漢語的子集,引導學生用文法去描述它,然後把它應用到一個簡單的自然語言查詢的程式設計中去。

  b)合理安排實驗課時間

  實驗時間安排要具有靈活性,不要一週或兩週一次實驗,這樣可能和授課的理論內容脫節。可以分別在每個實驗的相關內容講解完後安排這四個實驗,並要求學生記錄下每次實驗的輸入和輸出形式,實現理論與實踐的結合。

  c)改進實驗課教學方法

  為了讓實驗能達到預期的效果,需要做以下工作:一是老師在實驗前要將準備好的實驗資料發放給學生,讓學生利用業餘時間分析、設計實驗內容;二是老師指導學生一起討論實驗所涉及的原理、程式模組的功能和部分變數的用途;三是學生在理解的前提下,開始進行實驗,老師隨時進行監督指導。最後,在實驗完成後,老師一定要檢查學生的完成情況,並給予記錄,學生則要記錄下所有的實驗結果。

  3)教學方法的改進

  “編譯原理”課程抽象性和理論性較高,學生普遍感到內容難理解,更不能運用編譯技術所涉及到的思想和方法去解決其他專業問題,學起來枯燥、無味。為此,需要靈活運用多種教學方法,以激發他們的學習興趣和積極性,培養其分析、解決實際問題的能力。

  a)多媒體輔助教學

  “編譯原理”課程涉及到形式語言與自動機理論,主要包括一些經典的語法、語義分析演算法。這些理論和演算法抽象複雜,不易理解。為此,需要藉助多種輔助教學手段,如CAI課件、CAI教學系統和教學網站等。這樣可以把抽象的理論形象化,把知識講解化靜為動,寓教於樂,培養和激發學生的學習興趣。

  b)師生互動式教學

  教學是由“教”與“學”兩方面構成的,師生互動才能“教”、“學”相長,提高教學效果。在課堂上,應採用“啟發式”、“討論式”、“提問式”等多種教學模式,以發散學生的思維,激發他們的思考能力;在課後,應透過教學網站發放調查問卷等形式及時獲取學生對教學活動的意見與建議,學生也可以透過BBS系統進行交流,以便及時發現問題進而改進教學方法。還可以指定課後的時間組織小型的師生面對面交流,一方面是答疑,一方面也可以就編譯領域的一些新問題、新動向進行研討,進一步激發學生的學習積極性。

  4)教材建設和CAI課件製作

  目前為止,國內外已有不少關於“編譯原理”的經典教材,因而我們暫時不打算重新編寫授課教材。但從以上分析可知,目前的課程實驗內容設計卻各不相同,沒有合適的實驗教材,因此有必要根據我院特色來組織編寫“編譯原理”課程實驗教材。同時,我們也將依據我院教學實際,重新合理組織教學內容,圖文並茂,製作精良的CAI課件,以減少板書的時間,提高授課效率。

  5)教學網站的建設

  開發“編譯原理”網路教學平臺,構建良好的網路輔助教學環境,實現學習、答疑、作業和考試等各個教學環節的網路化,教師和學生可以很方便的利用該平臺完成幾乎所有教學活動,本課程教學網站主要將分四大模組:

  a)基本資訊

  包括課程負責人、課程主講人、教學隊伍、自我評價、課程建設規劃、課程教學錄影等相關資訊。

  b)課程建設

  課程概況:課程簡介、課程大綱、教學日曆、教材和參考文獻。

  教學資源:電子教材、電子課件(PPT)、電子課件、參考教案、例題原始碼、習題答案、考試樣卷及參考答案。

  實驗教學:實驗教學大綱、實驗內容、實驗指導。

  線上考試:為學生提供了模擬筆試、模擬機試和線上考試,實現了自動組卷和評分。

  作業練習:提供了各章的練習題、單元測試題。

  作業提交:主要提供了作業的釋出與提交等功能。

  c)BBS論壇

  提供學生、老師相互之間的交流平臺,以便及時發現問題進而改進教學方法和內容。

  d)問卷調查

  在課後,發放調查問卷及時獲取學生對教學活動的意見與建議。

  6)CAI教學系統的研製

  CAI教學系統是輔助教學的一重要手段,透過它可以幫助學生加深對編譯思想和方法的理解與運用,進而培養和激發他們的學習興趣。我們將考慮按照圖1所示的系統結構圖來設計“編譯原理”課程的CAI教學系統。

  基本知識播放:提供每章的基本知識點的查詢和一些基本知識點的程式實現等。

  編譯過程演示:這是CAI教學系統主要模組,提供了詞法、語法、語義分析演算法的動態演示,而且還要動態演示中間程式碼生成、中間程式碼最佳化和目的碼生成的執行過程。

  自我測試:提供題庫,讓學生測試自己對所學知識的掌握情況。

  系統維護:隨著編譯技術的發展,知識的不斷更新,會出現一些新的概念和演算法,因此係統也要隨時增加新的知識點。另外,隨著系統的執行,可能會發現一些不正確的地方,也需要及時修改。

  圖1 CAI教學系統主要模組

  3結束語

  “編譯原理”是計算機專業中一門重要的課程,透過本課程的學習,可以使學生獲得設計、分析和移植編譯程式方面的初步能力。結合實際教學過程,本文分析了“編譯原理”課程教學中所遇到的六個問題,探討了需要解決的五個問題,以期望在今後的教學中能達到較好的效果。

【編譯原理課程的教學分析】相關文章: