徐勇++蔣宗華++石小艷++吳延輝
摘 要:“編譯原理”課程是介紹高級程序設計語言編譯程序構造的一般原理、基本設計方法,是主要實現技術和形式化工具的一門課程,具有較強的理論性和實踐性。本課程圍繞人才培養目標,在優化課程內容體系的基礎上,側重研究了教學手段和方法,增加了實踐教學環節內容。
關鍵詞:編譯原理;內容體系;教學方法;實踐教學
中圖分類號:G642.0 文獻標識碼:A
編譯原理是現代計算機系統理論的基本組成部分之一,是計算機專業的一門重要專業基礎課,同時也是一門實踐性很強的課程。其中涉及詞法、語法的分析,表格、符號信息的處理方法,清晰有效的算法、描述方法,各種數據結構的運用,自動機理論等編譯技術,作為一門計算機軟件技術課程,內涵極為豐富,因此,該課程可以說是建立在高級語言或匯編語言基礎上,綜合運用編譯理論及多門前修課程如“面向對象程序設計”“數據結構”“離散數學”“計算機原理”等的相關知識來解決高級語言在機器上運行問題的一門課程,其難度較大。通過本課程的學習,學生不僅可以掌握編譯程序本身的基本實現原理和技術,同時也有助于提高其對程序設計語言的理解,提升語言設計及程序設計能力。
1.課程教學理念與目標
高等教育正面臨重大的變革 ,根據學校的辦學定位、人才培養目標要求及生源情況,課程組應及時更新課程內容,拓寬知識范圍,注重理論聯系實際,改進教學方法和手段, 既重視記憶性學習,又重視啟發性思考,更重視運用理論知識解決生產實踐問題能力的培養,并把它作為課程教學改革的基本原則。
課程改革實施過程中,課程組定位“編譯原理”課程的教學指導思想是以介紹編譯理論為基礎,掌握主流編譯技術為主,在學習典型編譯模塊的過程中重點訓練學生的算法設計、分析能力及編程能力。“編譯原理”課程中涉及的算法多而復雜,在算法教學中,應著重闡明算法的深刻含義、功能及描述方法,結合編譯模塊實例,進行推理,對時間和空間復雜度進行分析。
通過本課程的學習,學生可以建立良好的編譯理論基礎,并可初步培養學生在設計、實現、分析和移植編譯程序方面的能力。教學中不求大而全,不過于講究知識的系統性,而是講清楚常用的、核心的知識點即可。教學目標可以歸納為能掌握編譯基本理論,將“編譯原理”課程內容作為程序設計的實訓素材。
具體教學目標為:
(1)了解編譯和解釋的區別。
(2)熟練掌握詞法分析中正規表達式、有限自動機、正規文法三者之間的相互轉換方法。
(3)熟練掌握語法分析中自上而下分析的LL(1)文法和自下而上分析的規范規約及算符優先文法。
(4)在中間代碼生成環節重點掌握賦值語句的翻譯。
(5)重點了解局部優化及循環優化的基本技術。
(6)了解貫穿整個編譯過程的表格處理和出錯處理的一些基本概念。
(7)設計并實現基本編譯模塊算法。
2.課程教學大綱與內容安排
編譯程序常由詞法分析程序、語法分析程序、語義分析程序、代碼優化程序和目標代碼生成程序等五個主要部分組成,[1]這五個部分相輔相成、互有聯系、緊密相關。其中詞法分析程序主要是依據詞法規則從左到右掃描輸入的源程序,進行詞法分析,輸出單詞符號。語法分析程序主要是依據語法規則對單詞符號進行語法分析,輸出由語法范疇構成的語法樹,判斷輸入串是否構成語法上正確的“程序”。語義分析程序依據語義規則把語法分析程序歸約出(或推導出)的語法單位翻譯成一定形式的中間代碼(如四元式)。代碼優化程序依據等價變換原則對中間代碼進行優化處理。目標代碼生成程序把經優化后的中間代碼翻譯成目標程序。在編譯過程中源程序的各種信息被保留在種種不同的表格里,因此在編譯程序中必須含有一組管理各種表格的程序。如果源程序有錯誤,編譯程序應設法發現錯誤,把有關出錯信息報告給用戶,這部分工作由專門的出錯處理程序完成。
總之,“編譯原理”課程內容豐富,具有嚴密的邏輯性,對提高學生計算機軟件素質具有很大作用,可以使學生真正了解計算機的工作過程,認識計算機信息處理的實質,并綜合運用所學的軟件設計技術來分析解決問題,為今后更加深入地學習、探討計算機專業理論知識打下堅實的基礎。
3.教學手段與方法
教學手段與方法是課程建設的重要內容,科學、先進的教學手段與方法是提高課程教學質量的重要保證。課程教學手段與方法的建設要充分體現以學生為主體、以教師為主導,知識、能力和素質協調發展的指導思想,同時要把課程教學手段與方法的建設與現代信息教育技術結合起來。
教學實踐中,課程組越來越體會到教學方法的重要性。將以往的填鴨式教學轉向提問式、啟發式、討論式教學,是非常必要的,而且,在向學生傳授知識的同時,更要注重教會學生學習的方法,學會學習是提高教學效果的有效措施。
根據“編譯原理”課程教學的特點,并通過教學實踐驗證,本課程采用項目教學法,根據學習領域中不同學習情景的教學需要,同時采用任務驅動法、激勵教學法等多種教學方法,能起到很好的教學效果。針對不同的內容、不同難易程度,與其他教學方法靈活配合使用,還注重互動學習、團隊學習、自主學習的運用,教學方法得到了學生的高度認可。
(1)任務驅動的項目教學法。多年以來,任務驅動的項目教學方法在很多課程中被廣泛使用,實踐證明,對于工科課程而言,任務驅動的教學方法具體較為明顯的優點:一是該方法有利于學生把握相關知識點的學習目標;二是可以激發學生的學生興趣;三是便于教師對相關知識點教學效果進行評價。針對“編譯原理”課程內容、課程性質,課程組依據詞法分析程序、語法分析程序、語義分析程序、代碼優化程序和目標代碼生成程序等五個主要編譯模塊,將完整的編譯程序分解為多個小的教學項目,每個教學項目既要完成理論知識點的學習,又要分組完成程序設計實訓任務。
(2)激勵學習、實訓績效的促進教學法。在“編譯原理”課程的成績考核中,平時成績、期末筆試成績各占50%。其中平時考核內容包括對理論知識的掌握、基本編譯模塊算法的設計與實現能力。本課程制訂詳細的平時成績考核辦法,鼓勵學生自主學習、實踐,如果學生已經取得程序員、軟件設計師等資格認證,可在平時成績實訓考核部分獲得滿分。本課程與實踐聯系緊密,如果學生的實訓成果得到了企業認可,同樣可以獲得較高的平時成績評價。
(3)貫徹自主學習與師生團隊共同學習的教學法。本課程教師團隊是一支以中青年教師為主、充滿工作熱情和創新意識、具有愛崗敬業和團隊精神師資隊伍。在教學過程中堅持以學生為主體,以學生活動為主線,將教學過程體現為學習過程。
理論教學部分和教學實訓過程采用分組學習的方式。在教學過程中,教師先設計好課程的教學情境,并對任務學習要求做簡單介紹,讓學生自主獲取任務信息,自主制訂計劃,自主實施計劃和檢測評估結果,學習過程發揮小組團隊的作用。
(4)探索式教學法。在教學實施過程中,充分發揮學生的積極作用。師生共同探討編譯理論知識體系及其演變,也注重對教學方法的共同探索與思考。變演繹思維為歸納思維,變被動學習為主動學習,不僅學習效果好,更能培養學生思維的科學性、嚴謹性,把可持續發展落到實處。
(5)信息平臺的利用。提供比較豐富的教學資源,如教學大綱、教學計劃、電子教案、電子課件和教學視頻等,方便學生自主學習。在學院網站課程論壇中實現教師與學生網上教學交流和互動,課程組老師及時跟進網絡前沿技術,并將內容更新到網站上。
網絡教學平臺及資源在本課程的教學中已經發揮了關鍵的作用,課程教學組成員負責網站的日常維護和教學資源更新,學生每天的正常學習都要在這個平臺上進行,課后師生也經常利用這個網絡平臺進行在線交流、答疑等。
4.實踐教學
實踐教學是編譯原理課程教學過程的有機組成部分。實踐教學內容設置圍繞編譯模塊算法的設計與程序來開展,幫助學生課后進行自主課程設計訓練,鞏固課堂理論知識,提升程序設計能力。課外實踐教學方案內容包括基本知識、基本理論、基本方法、典型教學案例等,方案內容充實、合理,目的性強。
為了提高實踐教學環節的教學效果,課程組將輔導答疑作為實踐教學系統中重要的環節。及時了解并解答學生實踐學習活動中出現的問題,調整并改進教師教學內容和教學方法,這對提高教學質量十分重要。
5.質量監控
科學合理的考試、考核方法對激勵學生主動參與學習、提高課程教學質量十分重要。編譯原理課程要建立符合自身特點的結構化課程考試考核辦法,避免一張試卷定結論的弊端。編譯原理課程詳細地規定了考核方式和成績評定方法, 明確了平時、期中和期末成績所占的比例,把學生平時的自主學習成績納入學生課程學習的總成績。以對學生的知識、能力、素質綜合考核為目標,積極開展考試內容改革,不斷改革考試、考查的傳統模式,探索符合教學內容特點,切合學生學習實際的方法,這樣既有利于檢驗學生的學習成果,又能全面客觀地反映學生學習業績,從而引導學生自主學習,不斷探索,提升自身綜合運用知識的能力和創新能力。
6.教學資源
課程組將編譯原理的課程概況、課程內容、習題解答、教學錄像、參考資料、實踐課題、編譯實例庫以及CAI 課件等內容通過信息平臺,為學生學習和實踐編譯原理與技術提供理論知識和范例。同時組織課程組教師和部分學生將實踐教學過程中的優秀教學案例和素材編寫成課程實踐學習方案講義,供同學們參考學習。
7.小結
“編譯原理”課程改革以教育思想和教育觀念的轉變為先導,通過改革教學內容,改進教學方法和教學手段,加強師資隊伍建設和實踐性教學環節建設,[2]在具體教學實踐中,教師必須堅持每次上課前認真備課,教案每年都認真補充、修改,使其不斷完善。在教學實踐中不斷改進教學方法, 使學生真正感到每堂課都能學到新的知識,從根本上保證課程建設在培養學生能力、知識、素質等方面發揮基礎性的重要作用。
參考文獻:
[1]陳火旺,劉春林,等.程序設計語言編譯原理(第三版)[M].北京:國防工業出版社,2001.
[2]潘懋元,王偉廉.高等教育學[M].福州:福建教育出版社,2013.