摘要:“編譯原理”是計算機專業的核心理論課程之一,兼具較強的理論性和實踐性。針對實際教學過程中出現的教難、學難、實驗更難的現象,本文闡述了研討式教學模式在該課程教學中的應用。實踐證明,該模式的實施不僅提高了學生對課程知識的掌握程度,而且提高了學生提出問題、分析問題、解決問題的能力。
關鍵詞:研討式教學;編譯原理;教學模式
“編譯原理”是計算機專業的核心理論課程之一,也被視作該專業最難的課程之一,主要介紹了高級程序設計語言編譯系統的構造原理、設計方法以及主要實現技術,綜合了數據結構、計算機語言、算法和軟件設計、離散數學等知識,具有概念多、理論性強等特點。學生通過系統地學習這門課程,不僅能夠了解編譯系統內部的工作原理,而且可以加深對程序設計語言的理解,真正做到知其然,且知其所以然,有助于提高邏輯思維能力、實踐動手能力和綜合運用專業知識的能力[1]。
“編譯原理”課程存在的教難、學難、實驗更難的現象,主要有以下幾方面原因:
(1) 課程直觀性不強且理論性強,通常教學過程并不涉及編譯器的具體實現,因此學生沒有直觀感受,很多理論概念的出現降低了學生的學習興趣,他們甚至認為編譯原理無用,教學效果不理想。
(2) 實踐環節過于薄弱,由于編譯系統的實現涉及到若干課程,綜合性、連貫性均很強,即使在分模塊設計的時候也存在較大難度,因此影響學生動手能力的提高。
1研討式教學模式
現代教育理論認為,教學過程是教與學雙邊互動過程。教學是教與學的統一,教為學而存在,學又要靠教來引導,兩者是相互依存,相互作用,不可分割的統一整體。因此能夠充分挖掘教師和學生潛能的基于建構主義教學理論的研討式教學模式成了教學研究的熱點[2]。
研討式教學模式又稱習明納(Seminar)教學模式,目標是培養學生科學的思維方法,拓寬學生的知識面,使學生了解和掌握如何調研、查閱資料、提出問題、解決問題的思想和方法,提高學生的表達和溝通能力,培養學生的創新和團隊意識[3]。該模式也正符合當今信息時代對大學生學習能力的要求。研討式教學模式的關鍵在于教師和學生角色的轉變,即教師由知識傳授者到學生學習引導者的轉變,學生從知識接受者到學習的積極參與者的轉變。
2研討式教學在“編譯原理”課程中的實施
2.1重構教學內容,確定研討課題
近年來,優秀的《編譯原理》教材層出不窮,教材闡述知識的系統性、科學性均很強,但傳統的課堂教學容易單純以教材內容為主線,按部就班地進行理論教學,讓學生誤以為該課程是純理論、教條化的東西。因此,為適應研討式教學模式的需要,任課教師要對教學內容進行重構,具體措施如下:
(1) 針對課程知識點前后關聯度高且又可分解的特點,將課本知識模塊化[4],即以模塊的形式制定課程的授課計劃,并告知學生,使之明白該門課程的教學任務和特點。“編譯原理”課程大致劃分為編譯基礎理論知識模塊(包括編譯程序概論、文法及語言等)、編譯過程模塊(包括詞法分析、語法分析、語義分析、中間代碼生成、代碼優化、目標代碼生成以及符號表等)、應用知識模塊(主要包括如何將編譯原理及技術設計應用于不同的領域)[5],同時應對每個模塊掌握的程度作出具體要求。
(2) 在課程大綱的框架下,合理分配課堂講授和研討的學時及內容,適當選擇研討課題。初步實施研討式教學時,可采用“抓易放難”的原則,選擇的研討課題應該是學生通過自學、討論和教師的適當指導就可以掌握的,難度不大,難度較大的知識點仍可以按照常規的教學方法講解。
例如,相對于編譯過程中語義分析、中間代碼生成等階段而言,作為編譯過程第一個階段的詞法分析階段要容易得多,其功能是將從左到右的字符逐個讀入源程序,從而識別出一個一個的詞,它所具有的知識遞進性特征使得它非常適合作為一個研討課題,教師可以通過以下步驟引導學生:①即使在沒有學習正則表達式、自動機等基礎知識的前提下,應用前期的專業課知識也可以編程實現一個基本詞法分析器。②通過教師引導、自學或小組討論學習了正則表達式、自動機等編譯技術之后,就可以輕松地實現一個詞法分析器,并且加入編譯技術的程序可讀性好,可擴展性強,效率更高。③進一步要求學生用LEX源程序完成詞法分析器的自動生成。這樣一來,留給學生思考、創新的余地很大,有利于學生深刻認識編譯過程的各個階段。
2.2重視課堂教學,創新組織形式
(1) 確定研討課題只是完成了第一步,此時的課堂教學更為重要,一定要加強教師的引導作用。任課教師在讓學生了解授課計劃的同時,應同步設計出課前閱讀提綱,包括章節知識體系、重點難點、知識的應用范圍和研討問題,促使學生帶著問題去探究、消化和總結。
(2) 目前,很多學校的上課班級規模偏大。以筆者所在校為例,一次課程達90余人,要做到真正的研討型教學存在很大困難,因此需要對教學的組織形式加以創新。比如對基礎性知識采用大班講授,而研討型的專題課采用10~20人的小班,學生3~5人一組,按照研討課題的要求查閱資料、共同討論,并且以報告的形式匯報。當然,實施過程中也存在問題,如有的同學因為基礎不好對課程不感興趣。筆者認為,實施分層次引導和教學是較為有效的方法,可以依據學生接受新知識的能力和學習基礎提出不同的要求。
2.3加強學生實踐,強調分工合作
“編譯原理”是一門對實踐性要求較高的課程,因此研討式教學同樣延伸到了實踐教學環節,任課教師對每一個研討課題均作出明確要求,以小組合作的形式展開學習,學生們各有分工、彼此交流,在一定的時間期限內完成從題目分析、查閱資料、模塊劃分、編譯知識運用、代碼編寫、報告撰寫等工作,體會課題研究的全過程,獲得在傳統教學模式中獲取不到的經驗和成長體驗。比如應用知識模塊中有一個實例,利用編譯知識構造一個計算器,要求程序能夠根據用戶輸入的復雜算術表達式自動計算出結果,同時能夠進行簡單的表達式正確與否的判斷,題目涉及到了詞法分析、語法分析、語義分析等知識,是如程序設計、數據結構等前期專業課程的綜合運用,研討團隊的工作方式讓學生的動手實踐能力得到提升,培養了學生的創新和團隊意識。
2.4做好分析總結,完善考核機制
學生就自己的研究內容、問題的解決方案與大家分交流和討論,是研討式教學中一個非常重要環節。在這個環節中,教師和學生一起聽取成績優秀團隊的報告,并提出問題要求解答。比如在涉及到編譯系統符號表的研討課題中,因為符號表貫穿整個編譯過程,是連貫上下文進行語義檢查、語義處理、生成代碼和存儲分配的主要依據,如何更有效地組織符號表中的符號表項,是采用線性表,還是二分法和散列法呢?類似這樣的問題可以讓學生更加深入地理解課程內容,總結課題探究中存在的不足;教師同樣也可以對課題加以分析總結,作出總結性報告,不僅可以不斷地完善研討課題,還有助于學生對整個知識體系的把握。
研討式教學模式必須建立與之相適應的考核方法,教師要對學生在整個課題探究、研討過程中的表現以及在團隊中的表現有充分了解,作出適當的評價。
3結論
針對“編譯原理”課程既有深厚的理論基礎,又有豐富的實踐背景的特點,筆者在教學過程中部分采用研討式教學,對于教學雙方產生了很大影響。對學生來說,不僅提高了對課程知識的掌握程度,而且充分提高了學習積極性和提出問題、分析問題、解決問題的能力;對教師而言,研討式教學模式對教師提出了更高標準,要求教師不斷跟蹤學科的研究前沿,更新和充實課程的教學內容,促進自身素質的提高。
參考文獻:
[1] 何炎祥,伍春香. 計算機專業不需要開設編譯原理課程嗎?[J]. 計算機教育,2009(4):61-62.
[2] 馮阿芳. 基于建構主義學習理論的《編譯原理》課程教學改革[J]. 繼續教育研究,2009(8):149-150.
[3] 葉國榮,陳達強,吳碧艷.高校本科生教育中研究型教學模式探討[J]. 中國高教研究,2009(3):90-91.
[4] 劉兵,姜淑娟.“編譯原理”研究性教學的探索與實踐[J]. 計算機教育,2007(11):28-30.
[5] 張素琴,呂映芝,蔣維杜,等. 編譯原理[M]. 2版. 北京:清華大學出版社,2007.
Exploration in Seminar-oriented Teaching of “Compiler Principle” Course
XU Zhen-qiang, HOU Hui-fang
(School of Information Science and Engineering, Henan University of Technology, Zhengzhou 450001, China)
Abstract: Compiler principle course is one of the core theoretical curriculums which perfectly combines the theory and practice. The paper analyzes application of seminar-oriented teaching methodology in this course aiming at solving the difficulties occurred during teaching and experiments, which prove to be effective not only in enhancing students’ mastery of the course but also in improving their abilities to raise, analyze and solve problems.
Key words: seminar-oriented; Compiler Principle; teaching mode