劉 磊 郭德貴

“編譯原理”課程是計算機專業必修的一門重要的專業基礎課程,也是計算機系統軟件中非常重要的一個分支,任何計算機語言的實現都離不開編譯技術,因而,作為計算機專業的學生,學習和掌握編譯程序的基本構造原理和實現技術,對今后進一步的學習、研究和工作奠定堅實的專業理論基礎是十分必要的。
吉林大學計算機科學與技術學院軟件教研室多年來一直從事計算機本科生“編譯原理”課程的教學與科研工作,積累了豐富的教學、科研經驗,并取得了多項與編譯課程相關的教學、科研成果,“編譯原理”課程先后被評為吉林大學精品課程、吉林省精品課程和“教育部-微軟精品課程”。
一、注重理論教學
編譯程序不同于一般的應用程序,是一個十分龐大和復雜的系統軟件,它所包含的算法和思想比較特殊,理論性較強,抽象度也較高。學習編譯程序的構造原理和實現技術,不僅可以掌握編譯程序本身的實現技術,同時也能夠提高對程序設計語言的理解,提高語言的設計能力,提高元級程序的設計能力,提高開發大型軟件的能力,能夠培養學生的抽象思維能力和形式化描述能力。吉林大學計算機學院軟件教研室在“編譯原理”課程的教學過程中,注重學生對原理的理解,使學生不僅要做到知其然,更要做到知其所以然。
(1)科學引導,啟發學生積極思維
從知識體系的內部結構入手,抓住編譯過程各個功能階段的內在聯系和規律,通過有目的地設計問題,有意義地提出問題,引導學生的積極思維。把編譯原理中的理論難點、抽象概念通過問題引導呈現出來,學生通過回答問題,從不同的角度尋求解決問題的原則、途徑和方法,從而引導學生獨立分析問題和解決問題,加深對編譯理論和技術的理解。
(2)從知識體系的內部結構入手,培養學生的自學能力
教師通過精心備課,掌握知識的內在聯系,對編譯過程的各個功能階段進行歸納總結。講授時,讓學生掌握編譯原理各個階段的基本概念,基本法則以及它們之間的內在聯系和規律,抓住知識體系的主線,掌握規律性的知識,授之以法,培養學生的自學能力。
(3)實施多媒體輔助教學形式
“編譯原理”是一門理論性強的課程,為了使抽象問題形象化,便于學生對知識點的理解和運用,利用多媒體手段,把原理性的重點知識以動畫、圖形形式呈現給學生,把知識講解化靜為動,寓教于樂,培養和激發學生的學習興趣。
(4)設計課程輔助教學軟件
教研室設計和開發了編譯原理CAI課件-PCMCAI、SNL編譯實例等編譯原理教學輔助軟件,教師在上課時使用這些課件來演示部分關鍵算法和難點,提高了教學效果,學生在課下利用這些課件自動生成各個分析程序,進一步理解基本原理和實現算法。
二、開拓教學內容、擴展學生視野
在“編譯原理”課程的講授過程中,教學隊伍一直堅持教學和科研相結合、理論和實踐相結合、課內和課外相結合,融知識傳授、能力培養、素質教育于一體,將最新教改和科研成果引入教學。
教研室先后承擔了Algol60編譯器、Fortran編譯器、Algol60到Fortran的轉換器等與編譯原理相關的科研項目,目前教研室正在進行ATLAS編譯器項目的設計與開發工作。在教學過程中將這些科研項目中的新思想、新方法、新技術融入到課堂講授當中,不僅加深了學生對編譯基本原理的掌握,而且促進了學生對傳統內容與最新技術成果的理解。例如,在講授語法分析時,傳統的Early算法受當時硬件條件限制,它僅僅是一個理論上的語法分析方法;隨著技術進步,結合ATLAS編譯器項目的設計與實現,Early語法分析方法便成為一個實用、有效的語法分析方法。通過這些內容的講述,將經典編譯理論與現代編譯技術有機地結合起來,激發了學生對編譯新技術的學習興趣。
三、重視實踐能力培養
編譯程序以程序作為操作對象,是一個元級處理程序,它所包含的算法和思想理論性較強,抽象度也較高,并且一個編譯器是由多個完成不同功能、執行在不同階段的子程序組成的,各個階段具有不同的特點,采用比較經典的方法來完成各自不同的功能,即使學生理解了不同階段的各個子程序的功能和特定方法,但如何銜接各個子程序,如何組成一個完整的編譯器,對學生來講,仍可能是一件比較困難的事情。基于此,我們開設了編譯原理實踐課程,培養學生的實踐能力。
實踐性教學的設計思想是使學生透徹地理解編譯程序的原理和思想,系統全面地掌握編譯技術,使學生通過課堂學習,理解編譯原理的同時,注重學生實踐能力的培養,進一步鞏固對知識的理解,通過實際的鍛煉,掌握編譯技術,進而能夠獨立地進行編譯器的設計。
通過多年來的教學實踐以及近五年來關于編譯原理實踐課程的建設,我們取得了一些成效。開設的編譯原理實踐課程,以實際上機實習為主,教師指導為輔,學生在實踐課程中,通過實際動手,把原理性的抽象理論知識具體化和形象化,消化了課堂上、書本中難于理解的概念和方法,全面系統地掌握了編譯器的構造過程。同時,也激發了學生的學習興趣,提高了學生進行更深入學習的主動性。通過一個學期的實習,大部分學生對編譯器的整個過程有了較清晰的理解,靈活地掌握了編譯程序的構造方法和技術,部分學生可以獨立地設計和實現自定義的模型語言,達到了預計的效果。
四、精品課網站建設
針對目前學生人數增多,教學資源不足,學生質量參差不齊,教學質量和效率得不到保證的情況,我們充分利用Internet網絡,建立和實施了網絡課程體系,利用Internet網在信息制造、貯存和遞送方面的優勢,克服了資源不足的缺點,同時也為學生提供了完全個性化的學習環境,發揮網絡教學優勢。具體網址為http://softlab.jlu.edu.cn。
目前已經完成了編譯網絡課程體系的基本功能模塊,構造和實現了一個網絡課程資源系統,具體包括:
(1)“編譯原理”網絡課程內容教學體系
將“編譯原理”的課程概況、課程內容、習題解答、教學錄像、參考資料、實踐課題、編譯實例庫以及CAI課件等內容上網,為校內外學生學習和實踐編譯原理與技術提供理論知識和范例。
(2)完成學生練習系統的構造
通過電子黑板,BBS為學生提供開放的學習時間和空間,促進教師與學生,學生與學生間的相互交流,激發學生學習的主動性,提高學生的實踐能力,更深入地理解和掌握課程內容。
(3)設計實現輔助工具系統
提供電子筆記本,對學生學習情況進行記錄,教師通過對記錄的分析,反饋和改進課程網絡系統,有利于今后的維護工作。
(4)構造網絡管理系統
通過網絡登陸驗證,維護網絡安全,以保證網絡課程體系運行良好。
五、教師隊伍建設
長期以來,教研室一直注重把精品課程建設與高水平教師隊伍建設相結合。“編譯原理”課程已形成一支教師職稱結構、年齡結構、學歷結構、學位結構合理,人員穩定,教學水平高的教學隊伍。教學隊伍成員具有良好的師德,學術造詣高,教學能力強,教學經驗豐富,教學特色鮮明。
編譯課程負責人劉磊教授1997年獲寶鋼優秀教師獎,2005年被評為吉林大學十佳優秀教師,并在學校的教學評估中,多次被評為優秀,受到學校的表彰獎勵,先后主編出版了多部教材,在各級學術期刊和國際會議上發表學術論文60余篇。
六、教材建設
教研室一直注重編譯教材建設,先后在科學出版社、高等教育出版社和機械工業出版社出版了編譯原理方面的著作7部,例如:《Algol60編譯方法》上下冊(1983年,科學出版社)、《編譯方法》(1984年,高等教育出版社)、《編譯原理與實現》(1989年,高等教育出版社)、《編譯程序構造原理和實現技術》(2000年,高等教育出版社)、《編譯程序的設計與實現》(2004年,機械工業出版社)、《編譯原理及實現技術》(2005年,機械工業出版社)等。
目前在編著的由國家“九五”規劃出版的面向二十一世紀教材《編譯程序構造原理和實現技術》基礎上,教研室又新推出了《編譯程序設計與實現》教材,作為“編譯原理”實踐課程教材,也是“編譯原理”課程的配套教材。該教材以實踐培養為重點,針對一個教學語言模型,詳細地介紹了該模型語言編譯器的設計和具體的實現方法。同時,為學生提供國內外先進的編譯教材,供學生選讀。
這些教材一直是高等院校計算機專業普遍使用的教材,也是計算機軟件相關專業的重要參考書籍,至今許多著作經過了多次重印,在國內占有重要的地位。
七、總結
教研室始終堅持吸收最新研究成果和保持自己特色的原則,保證“編譯原理”課程教材內容的先進性和實用性,注重教學方法和教學手段改革,至今,教研室已先后出版編譯相關教材7部,承擔并圓滿完成了多項省部級重點教改項目,發表了多篇教改教研論文,研制了課程教輔軟件,使吉林大學在“編譯原理”課程、教材和教學梯隊建設,以及課程的教學組織管理和學生系統軟件分析能力的嚴格訓練等方面居國內領先行列。