資源描述:
《工科生《編譯原理》課程教學的探析和實踐》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、工科生《編譯原理》課程教學的探析和實踐 摘要:針對工科生的特點及其培養(yǎng)目標,將《編譯原理》課程的教學目標定位于“能靈活應用形式語言和自動機的基礎理論來解決計算機工程領域中的相關問題”,并分析和總結了相應的教學手段和實驗教學方案及其實踐效果?! £P鍵詞:編譯原理;教學目標;教學方法;實驗教學 中圖分類號:G642.0文獻標志碼:A文章編號:1674-9324(2013)05-0119-02一、引言6 《編譯原理》是大學計算機專業(yè)本科教育的一門核心課程,它涉及形式語言、程序設計語言、算法和數據結構、體系結構和軟
2、件工程等內容。學生通過該課程的學習,除了應該掌握編譯程序的工作原理和有關算法外,還可以增進計算機科學基礎理論知識,進一步加深對數據結構和算法等課程的綜合理解和靈活應用,以及提高軟件開發(fā)的能力。但是,由于受到教學時數的限制,要全方位地在這些方面去培養(yǎng)學生,是相當困難的,而是要根據教學對象以及對其專業(yè)能力的培養(yǎng)目標,來確定課程的教學內容和相應的教學手段。我們認為:對于理科學生,可偏重于理論研究能力的培養(yǎng),使學生掌握形式語言與自動機的基本理論和常見算法,為從事計算機理論研究打下堅實的基礎;而對于工科學生,可偏重于軟件開
3、發(fā)能力的培養(yǎng),提高學生對數據結構和算法知識的綜合應用能力,以及程序編制能力。本文針對工科生的特點及其培養(yǎng)目標,對《編譯原理》課程的教學目標定位和教學方法進行一些分析和實踐總結?! 《⒔虒W目標 《編譯原理》課程的教學目標一般是使學生掌握形式語言和自動機的基本理論,以及編譯程序有關的算法和開發(fā)方法[1]??紤]到對工科學生的基本要求是能應用基本理論解決工程實際問題,我們要求學生在能正確理解形式語言和自動機的基礎理論基礎上,不僅能掌握其在程序設計語言翻譯中的應用方法,而且能靈活應用于解決計算機工程領域中其他有關問題,
4、例如:命令行處理器、用戶界面等。我們向學生強調,通過學習編譯原理這門課程,掌握編譯程序的基本原理和有關算法只是一個方面,另外一個很重要的方面是培養(yǎng)應用基本理論來解決實際問題的能力,加強數據結構及其算法的綜合應用能力,以及提高編制大程序的能力。在教學內容安排上,我們把重點放在詞法分析、語法分析、語法制導翻譯、符號表和中間代碼生成上,而對代碼優(yōu)化、目標代碼生成、寄存器分配等內容只作概要性介紹?! ∪?、教學方法 ?。ㄒ唬┗橄鬄榫唧w 《編譯原理》課程的內容非常抽象,大多數學生在學習過程中,會對其抽象的術語和符號、以及
5、枯燥的形式化推導過程感到困惑,并漸漸失去學習的興趣和熱情。如果能從具體的例子出發(fā),再抽象出基本概念,就能使學生對抽象的概念有更深刻的理解。 例如,“LR(0)分析”是《編譯原理》課程中非常精彩的一節(jié)內容,但由于涉及“活前綴”、“LR(0)項目”6等許多抽象的術語,學生往往難以理解,特別對“構造識別活前綴的有限自動機”的思想內涵的理解難以透徹。我們在講解時,不是直接給出這些術語的定義,而是從一個LR分析的實例出發(fā),讓學生觀察LR分析過程中分析棧內容的變化及其特征,引導學生發(fā)現(xiàn)“分析棧中的符號串有三種格局:不含有句
6、柄的任何符號;含有句柄的部分符號;正好含有句柄的全部符號?!边@時,可向學生引入“活前綴”和“LR(0)項目”等術語的含義:“活前綴”就是LR分析過程中分析棧中形成的一個符號串,而“LR(0)項目”就是刻畫這個符號串的格局。最后給出“活前綴”和“LR(0)項目”的形式化定義。這種講法,不僅可以使學生對這些抽象概念有具體的感性認識,從而更容易地去理解相應的形式化定義,而且可以培養(yǎng)學生逐步適應形式化描述。接著在講解“構造識別活前綴的有限自動機”時,先讓學生回答“使用LR方法,用給定的一個文法去分析一個符號串時,會有哪些
7、可能的LR(0)項目出現(xiàn),并且這些LR(0)項目是如何遷移的?”,進一步啟發(fā)學生:“一個文法的任何一個句型,它的句柄只可能是這個文法的某個產生式的右部。”。這樣,學生就能較好地理解如何從一個文法求出它的所有LR(0)項目及其遷移關系,進而也能較好地掌握構造識別活前綴的有限自動機的方法。 ?。ǘ╅_發(fā)和使用多媒體教學課件,采取直觀形象的教學方式 對《編譯原理》課程中的一些抽象內容,除了采用“化抽象為具體”的方法6外,我們還開發(fā)了一組多媒體教學課件,用于動態(tài)演示一些較為復雜和難以理解的編譯過程。例如,在用屬性文法描
8、述一個語法制導翻譯過程的教學中,學生很難從一個給定的屬性文法想象出一個具體的翻譯過程。要讓他們用一個屬性文法來定義一個語法制導的翻譯過程,那就更難了。所以,我們針對教材[2]中給出的每個程序結構的語法制導翻譯過程的屬性文法,分別結合一個具體的例子制作了多媒體課件,用于動態(tài)演示在語法制導翻譯的每一步過程中,是如何使用與產生式相關聯(lián)的屬性計算規(guī)則來進行翻譯的。圖1(a)是“控