摘要:“編譯原理”是計(jì)算機(jī)專業(yè)的核心理論課程之一,兼具較強(qiáng)的理論性和實(shí)踐性。針對(duì)實(shí)際教學(xué)過(guò)程中出現(xiàn)的教難、學(xué)難、實(shí)驗(yàn)更難的現(xiàn)象,本文闡述了研討式教學(xué)模式在該課程教學(xué)中的應(yīng)用。實(shí)踐證明,該模式的實(shí)施不僅提高了學(xué)生對(duì)課程知識(shí)的掌握程度,而且提高了學(xué)生提出問(wèn)題、分析問(wèn)題、解決問(wèn)題的能力。
關(guān)鍵詞:研討式教學(xué);編譯原理;教學(xué)模式
“編譯原理”是計(jì)算機(jī)專業(yè)的核心理論課程之一,也被視作該專業(yè)最難的課程之一,主要介紹了高級(jí)程序設(shè)計(jì)語(yǔ)言編譯系統(tǒng)的構(gòu)造原理、設(shè)計(jì)方法以及主要實(shí)現(xiàn)技術(shù),綜合了數(shù)據(jù)結(jié)構(gòu)、計(jì)算機(jī)語(yǔ)言、算法和軟件設(shè)計(jì)、離散數(shù)學(xué)等知識(shí),具有概念多、理論性強(qiáng)等特點(diǎn)。學(xué)生通過(guò)系統(tǒng)地學(xué)習(xí)這門課程,不僅能夠了解編譯系統(tǒng)內(nèi)部的工作原理,而且可以加深對(duì)程序設(shè)計(jì)語(yǔ)言的理解,真正做到知其然,且知其所以然,有助于提高邏輯思維能力、實(shí)踐動(dòng)手能力和綜合運(yùn)用專業(yè)知識(shí)的能力[1]。
“編譯原理”課程存在的教難、學(xué)難、實(shí)驗(yàn)更難的現(xiàn)象,主要有以下幾方面原因:
(1) 課程直觀性不強(qiáng)且理論性強(qiáng),通常教學(xué)過(guò)程并不涉及編譯器的具體實(shí)現(xiàn),因此學(xué)生沒有直觀感受,很多理論概念的出現(xiàn)降低了學(xué)生的學(xué)習(xí)興趣,他們甚至認(rèn)為編譯原理無(wú)用,教學(xué)效果不理想。
(2) 實(shí)踐環(huán)節(jié)過(guò)于薄弱,由于編譯系統(tǒng)的實(shí)現(xiàn)涉及到若干課程,綜合性、連貫性均很強(qiáng),即使在分模塊設(shè)計(jì)的時(shí)候也存在較大難度,因此影響學(xué)生動(dòng)手能力的提高。
1研討式教學(xué)模式
現(xiàn)代教育理論認(rèn)為,教學(xué)過(guò)程是教與學(xué)雙邊互動(dòng)過(guò)程。教學(xué)是教與學(xué)的統(tǒng)一,教為學(xué)而存在,學(xué)又要靠教來(lái)引導(dǎo),兩者是相互依存,相互作用,不可分割的統(tǒng)一整體。因此能夠充分挖掘教師和學(xué)生潛能的基于建構(gòu)主義教學(xué)理論的研討式教學(xué)模式成了教學(xué)研究的熱點(diǎn)[2]。
研討式教學(xué)模式又稱習(xí)明納(Seminar)教學(xué)模式,目標(biāo)是培養(yǎng)學(xué)生科學(xué)的思維方法,拓寬學(xué)生的知識(shí)面,使學(xué)生了解和掌握如何調(diào)研、查閱資料、提出問(wèn)題、解決問(wèn)題的思想和方法,提高學(xué)生的表達(dá)和溝通能力,培養(yǎng)學(xué)生的創(chuàng)新和團(tuán)隊(duì)意識(shí)[3]。該模式也正符合當(dāng)今信息時(shí)代對(duì)大學(xué)生學(xué)習(xí)能力的要求。研討式教學(xué)模式的關(guān)鍵在于教師和學(xué)生角色的轉(zhuǎn)變,即教師由知識(shí)傳授者到學(xué)生學(xué)習(xí)引導(dǎo)者的轉(zhuǎn)變,學(xué)生從知識(shí)接受者到學(xué)習(xí)的積極參與者的轉(zhuǎn)變。
2研討式教學(xué)在“編譯原理”課程中的實(shí)施
2.1重構(gòu)教學(xué)內(nèi)容,確定研討課題
近年來(lái),優(yōu)秀的《編譯原理》教材層出不窮,教材闡述知識(shí)的系統(tǒng)性、科學(xué)性均很強(qiáng),但傳統(tǒng)的課堂教學(xué)容易單純以教材內(nèi)容為主線,按部就班地進(jìn)行理論教學(xué),讓學(xué)生誤以為該課程是純理論、教條化的東西。因此,為適應(yīng)研討式教學(xué)模式的需要,任課教師要對(duì)教學(xué)內(nèi)容進(jìn)行重構(gòu),具體措施如下:
(1) 針對(duì)課程知識(shí)點(diǎn)前后關(guān)聯(lián)度高且又可分解的特點(diǎn),將課本知識(shí)模塊化[4],即以模塊的形式制定課程的授課計(jì)劃,并告知學(xué)生,使之明白該門課程的教學(xué)任務(wù)和特點(diǎn)。“編譯原理”課程大致劃分為編譯基礎(chǔ)理論知識(shí)模塊(包括編譯程序概論、文法及語(yǔ)言等)、編譯過(guò)程模塊(包括詞法分析、語(yǔ)法分析、語(yǔ)義分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成以及符號(hào)表等)、應(yīng)用知識(shí)模塊(主要包括如何將編譯原理及技術(shù)設(shè)計(jì)應(yīng)用于不同的領(lǐng)域)[5],同時(shí)應(yīng)對(duì)每個(gè)模塊掌握的程度作出具體要求。
(2) 在課程大綱的框架下,合理分配課堂講授和研討的學(xué)時(shí)及內(nèi)容,適當(dāng)選擇研討課題。初步實(shí)施研討式教學(xué)時(shí),可采用“抓易放難”的原則,選擇的研討課題應(yīng)該是學(xué)生通過(guò)自學(xué)、討論和教師的適當(dāng)指導(dǎo)就可以掌握的,難度不大,難度較大的知識(shí)點(diǎn)仍可以按照常規(guī)的教學(xué)方法講解。
例如,相對(duì)于編譯過(guò)程中語(yǔ)義分析、中間代碼生成等階段而言,作為編譯過(guò)程第一個(gè)階段的詞法分析階段要容易得多,其功能是將從左到右的字符逐個(gè)讀入源程序,從而識(shí)別出一個(gè)一個(gè)的詞,它所具有的知識(shí)遞進(jìn)性特征使得它非常適合作為一個(gè)研討課題,教師可以通過(guò)以下步驟引導(dǎo)學(xué)生:①即使在沒有學(xué)習(xí)正則表達(dá)式、自動(dòng)機(jī)等基礎(chǔ)知識(shí)的前提下,應(yīng)用前期的專業(yè)課知識(shí)也可以編程實(shí)現(xiàn)一個(gè)基本詞法分析器。②通過(guò)教師引導(dǎo)、自學(xué)或小組討論學(xué)習(xí)了正則表達(dá)式、自動(dòng)機(jī)等編譯技術(shù)之后,就可以輕松地實(shí)現(xiàn)一個(gè)詞法分析器,并且加入編譯技術(shù)的程序可讀性好,可擴(kuò)展性強(qiáng),效率更高。③進(jìn)一步要求學(xué)生用LEX源程序完成詞法分析器的自動(dòng)生成。這樣一來(lái),留給學(xué)生思考、創(chuàng)新的余地很大,有利于學(xué)生深刻認(rèn)識(shí)編譯過(guò)程的各個(gè)階段。
2.2重視課堂教學(xué),創(chuàng)新組織形式
(1) 確定研討課題只是完成了第一步,此時(shí)的課堂教學(xué)更為重要,一定要加強(qiáng)教師的引導(dǎo)作用。任課教師在讓學(xué)生了解授課計(jì)劃的同時(shí),應(yīng)同步設(shè)計(jì)出課前閱讀提綱,包括章節(jié)知識(shí)體系、重點(diǎn)難點(diǎn)、知識(shí)的應(yīng)用范圍和研討問(wèn)題,促使學(xué)生帶著問(wèn)題去探究、消化和總結(jié)。
(2) 目前,很多學(xué)校的上課班級(jí)規(guī)模偏大。以筆者所在校為例,一次課程達(dá)90余人,要做到真正的研討型教學(xué)存在很大困難,因此需要對(duì)教學(xué)的組織形式加以創(chuàng)新。比如對(duì)基礎(chǔ)性知識(shí)采用大班講授,而研討型的專題課采用10~20人的小班,學(xué)生3~5人一組,按照研討課題的要求查閱資料、共同討論,并且以報(bào)告的形式匯報(bào)。當(dāng)然,實(shí)施過(guò)程中也存在問(wèn)題,如有的同學(xué)因?yàn)榛A(chǔ)不好對(duì)課程不感興趣。筆者認(rèn)為,實(shí)施分層次引導(dǎo)和教學(xué)是較為有效的方法,可以依據(jù)學(xué)生接受新知識(shí)的能力和學(xué)習(xí)基礎(chǔ)提出不同的要求。
2.3加強(qiáng)學(xué)生實(shí)踐,強(qiáng)調(diào)分工合作
“編譯原理”是一門對(duì)實(shí)踐性要求較高的課程,因此研討式教學(xué)同樣延伸到了實(shí)踐教學(xué)環(huán)節(jié),任課教師對(duì)每一個(gè)研討課題均作出明確要求,以小組合作的形式展開學(xué)習(xí),學(xué)生們各有分工、彼此交流,在一定的時(shí)間期限內(nèi)完成從題目分析、查閱資料、模塊劃分、編譯知識(shí)運(yùn)用、代碼編寫、報(bào)告撰寫等工作,體會(huì)課題研究的全過(guò)程,獲得在傳統(tǒng)教學(xué)模式中獲取不到的經(jīng)驗(yàn)和成長(zhǎng)體驗(yàn)。比如應(yīng)用知識(shí)模塊中有一個(gè)實(shí)例,利用編譯知識(shí)構(gòu)造一個(gè)計(jì)算器,要求程序能夠根據(jù)用戶輸入的復(fù)雜算術(shù)表達(dá)式自動(dòng)計(jì)算出結(jié)果,同時(shí)能夠進(jìn)行簡(jiǎn)單的表達(dá)式正確與否的判斷,題目涉及到了詞法分析、語(yǔ)法分析、語(yǔ)義分析等知識(shí),是如程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)等前期專業(yè)課程的綜合運(yùn)用,研討團(tuán)隊(duì)的工作方式讓學(xué)生的動(dòng)手實(shí)踐能力得到提升,培養(yǎng)了學(xué)生的創(chuàng)新和團(tuán)隊(duì)意識(shí)。
2.4做好分析總結(jié),完善考核機(jī)制
學(xué)生就自己的研究?jī)?nèi)容、問(wèn)題的解決方案與大家分交流和討論,是研討式教學(xué)中一個(gè)非常重要環(huán)節(jié)。在這個(gè)環(huán)節(jié)中,教師和學(xué)生一起聽取成績(jī)優(yōu)秀團(tuán)隊(duì)的報(bào)告,并提出問(wèn)題要求解答。比如在涉及到編譯系統(tǒng)符號(hào)表的研討課題中,因?yàn)榉?hào)表貫穿整個(gè)編譯過(guò)程,是連貫上下文進(jìn)行語(yǔ)義檢查、語(yǔ)義處理、生成代碼和存儲(chǔ)分配的主要依據(jù),如何更有效地組織符號(hào)表中的符號(hào)表項(xiàng),是采用線性表,還是二分法和散列法呢?類似這樣的問(wèn)題可以讓學(xué)生更加深入地理解課程內(nèi)容,總結(jié)課題探究中存在的不足;教師同樣也可以對(duì)課題加以分析總結(jié),作出總結(jié)性報(bào)告,不僅可以不斷地完善研討課題,還有助于學(xué)生對(duì)整個(gè)知識(shí)體系的把握。
研討式教學(xué)模式必須建立與之相適應(yīng)的考核方法,教師要對(duì)學(xué)生在整個(gè)課題探究、研討過(guò)程中的表現(xiàn)以及在團(tuán)隊(duì)中的表現(xiàn)有充分了解,作出適當(dāng)?shù)脑u(píng)價(jià)。
3結(jié)論
針對(duì)“編譯原理”課程既有深厚的理論基礎(chǔ),又有豐富的實(shí)踐背景的特點(diǎn),筆者在教學(xué)過(guò)程中部分采用研討式教學(xué),對(duì)于教學(xué)雙方產(chǎn)生了很大影響。對(duì)學(xué)生來(lái)說(shuō),不僅提高了對(duì)課程知識(shí)的掌握程度,而且充分提高了學(xué)習(xí)積極性和提出問(wèn)題、分析問(wèn)題、解決問(wèn)題的能力;對(duì)教師而言,研討式教學(xué)模式對(duì)教師提出了更高標(biāo)準(zhǔn),要求教師不斷跟蹤學(xué)科的研究前沿,更新和充實(shí)課程的教學(xué)內(nèi)容,促進(jìn)自身素質(zhì)的提高。
參考文獻(xiàn):
[1] 何炎祥,伍春香. 計(jì)算機(jī)專業(yè)不需要開設(shè)編譯原理課程嗎?[J]. 計(jì)算機(jī)教育,2009(4):61-62.
[2] 馮阿芳. 基于建構(gòu)主義學(xué)習(xí)理論的《編譯原理》課程教學(xué)改革[J]. 繼續(xù)教育研究,2009(8):149-150.
[3] 葉國(guó)榮,陳達(dá)強(qiáng),吳碧艷.高校本科生教育中研究型教學(xué)模式探討[J]. 中國(guó)高教研究,2009(3):90-91.
[4] 劉兵,姜淑娟.“編譯原理”研究性教學(xué)的探索與實(shí)踐[J]. 計(jì)算機(jī)教育,2007(11):28-30.
[5] 張素琴,呂映芝,蔣維杜,等. 編譯原理[M]. 2版. 北京:清華大學(xué)出版社,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