徐艷群 張斌(南陽理工學院計算機與信息工程學院 河南南陽 473004)
基于 CDIO 教育理念的 “編譯原理”課程教學的探索
徐艷群 張斌(南陽理工學院計算機與信息工程學院 河南南陽 473004)
“編譯原理”是計算機專業中一門非常重要的課程,它最能鍛煉學生的計算思維能力,計算思維能力對從事計算機專業工作的學生將終身受益。但是“編譯原理”課程教學中依然存在一些問題:教學方法陳舊,忽視實踐環節,學生參與意識不強等。本文針對這些問題,在編譯原理課程教學中應用CDIO(Conceive、Design、 Implement、 Operate)教育理念,從理論課教學方法、實踐環節、考核方式等方面進行改革。 實踐證明CDIO 模式在“編譯原理”課程教學中取得了良好的效果。
CDIO教育理念;編譯原理;啟發式教學法;項目教學法
【DOI】10.19312/j.cnki.61-1499/c.2016.09.056
“質量工程”的廣泛實施,各高等院校在計算機專業的人才培養方面做出了很大貢獻,但是畢業生的專業能力相當一部分不能很好地滿足社會需求,究其原因主要是因為現有的教學理念、教學思路存在問題。 最新教育改革成果—CDIO教育模式,實踐證明 CDIO 教育模式先進可行,適合工科教育教學環節的改革。為了培養高素質的計算機專業人才,就需要從課程這個培養人才的課程載體上進行改革,而編譯原理課程作為本專業的重要課程更應該改革。因此本文將CDIO工程教育理念用于編譯原理的教學實踐中,以期取得良好的教學效果。
國際工程教育改革的最新成果--CDIO工程教育模式是以產品研發到產品運行的生命周期為載體,鼓勵學生積極、主動、實踐地投入到課程學習中去,在學習過程中注意專業課程之間的內在聯系。CDIO大綱對專業畢業生能力的考核主要包括基礎知識掌握情況、個人的學習、及實踐能力、團隊協作能力和系統工程能力四個方面。各高校應該按照大綱的要求用綜合有效的培養模式力求在這四方面達到目標要求。
《編譯原理》是計算機專業的一門很重要的課程,課程涉及的理論知識點多,比較抽象,相當一部分算法有些復雜。目前編譯原理課程教學絕大部分采用傳統的教學方式,這種學習方式完全是一種被動的接受知識的過程,學生學完這門課程,不知道一個編譯器到底應該怎么設計?怎樣實現?采用傳統的方式不能充分發揮學生的積極主動性,不利于引導學生去思考,更不利于帶動學生去發現問題、解決問題。針對目前在編譯原理課程教學中存在的問題,筆者將CDIO教育理念引入到編譯原理課程教學中。
為了改善“編譯原理”課程的教學效果,提高學生的實踐能力,我們將CDIO理念應用于“編譯原理”課程的教學中。課程教學中嘗試采用啟發式教學、項目式教學等教學方法;上機實踐方面根據課程內容布置小程序,課程學完后在課程設計中布置綜合性項目。考核方式設置中注重學生的動手實踐能力考察。讓學生親自經歷和體驗編譯的全過程。
1.啟發式教學
啟發式教學是強調學生學習的主體地位,激發學生獨立思考后去解決問題。常見的啟發式教學方法是:創設情境法、問題導向法,行為驅動方法等等。例如在LR(1)分析中采用啟發式教學方法中的問題導向法。
題目:對于以下文法采用LR(1)分析法分析。
G:(0)S'→S (1)S→aAd (2)S→bAc (3)S→aec (4)S→bed (5)A→e
先要求學生采用已學過的LR(0)分析法進行分析。在做題的過程中學生會發現在兩個狀態中出現了移進-歸約沖突,這時候學生就得重新審視這種方法。這時老師引導學生進一步思考采用SLR(1)分析法,介紹SLR(1)分析法,它對于移進項目跟LR(0)完全相同,對于歸約項目需求歸約項目產生式左部非終結符號的Follow集,思考沖突能不能解決?引導學生SLR(1)分析法為什么不行?組織學生分組討論,教師進行歸納補充。引入LR(1)分析法,提供資料讓學生分組自主學習并討論如何采用LR(1)分析法來完成該題。
2.項目式教學
項目教學法是一種綜合實踐性的教學方法,強調學生的主體參與,教師的引導作用,一般在一門課程學完之后才能開展, 是對課程所學內容進一步深入應用,讓學生把課程所學理論與實踐有機結合起來。通過項目實踐,學生不僅掌握了課程內容,而且具備了該課程所應具備的工程實踐能力、團隊協作與交流的能力。因此,在“編譯原理”課程設計中,讓學生動手完PL/0編譯器的設計與開發,它的編譯過程使用一遍掃描方式,核心模塊是語法分析和語義分析器,詞法分析器、代碼生成器分別作為它的一個過程。為了完成相應的項目內容,在平時上課的過程中就會注重介紹PL/0編譯器,幫助學生了解必要的步驟和編碼實現技術。為了培養學生的閱讀文獻的能力,可以提供PL/0編譯器文本供學生閱讀,提醒學生應該先熟悉總體結構,然后理解每個流程的功能、實現方法及各過程之間的相互關系,最后達到深入理解編譯器構造過程和實現技術。PL/0編譯器實現圖如圖2-1所示。項目要求:他包括大綱、內容、組織、進度計劃和實施過程;與此同時,對學生進行分組,每組選一個組長, 在項目中每個團隊成員都有自己的任務和職責;此外,改變過去“填鴨式教育”,以學生為主體主動學習,給學生提供展示的機會,激發學生學習積極性和主動性;項目完成后,每個項目團隊成員進行匯報,演示程序,用幻燈片輔助講解,并且提交項目文檔。項目報告不僅是團隊的結果的展示,同時促進了項目團隊之間的交流和學習。通過項目匯報,也鍛煉了學生的表達能力,增強了學生的自信心。

圖2-1: PL/0編譯程序的實現
3.上機實踐
為了讓學生在系統學習編譯原理的章節之前, 對編譯原理獲得一些感性認識和初步了解,世界著名計算機科學家N.Wirth編寫的“PL/0編譯器”是對編譯程序的總結和實施的過程分析說明,作為學生閱讀PL/0語言編譯器文本的提示,便于建立整體的概念。編譯原理的教學內容包括詞法分析、語法分析、語義分析和中間代碼的生成、代碼優化和目標代碼生成等。實驗內容選擇PL/0語言的編譯程序,原因是PL/0語言功能簡單,結構清晰、易讀, PL / 0編譯器可以充分體現一個高級語言的編譯器實現的基本技術和步驟。結合PL/0編譯程序的設計與實現要求學生對給定的PL/0源程序進行詞法分析、語法分析、語義分析和中間代碼生成等,從而理解每個過程的功能和相互聯系及實現技術,作為拓展內容可以讓學生用C語言或者Java對PL/0編譯程序進行改寫,這樣可以讓學生體會到各門課程之間的聯系,做到對知識的融會貫通。為了提高學生學習的目的性和主動性,在編譯原理課程每次講理論課前先介紹要求學生完成的實驗內容,并分組討論。在每次實驗前給出實驗要求讓學生討論需要掌握哪些內容并列舉出來,上課時教師根據學生們需要學習的內容進行講解并適當拓展。讓學生體會理論知識在實踐中如何用?為什么需要學習這些理論知識?從而改變學生以往被動接受知識的習慣,讓學生有目的地、積極主動地參與到實驗中,參與到課堂中。
4.考核方式
“編譯原理”課程考核一般采用閉卷考試方式,基本決定學生最終期末成績,平時成績基本按考勤、提問等核定,只占到10%-20%。這種方式考核的是知識而不是能力。CDIO工程教育理念要求從四個維度考核,重點強調實踐動手能力。因此在編譯原理的考核方式上進行改革,采用注重過程評價的評價方式。過程評價主要包括和項目評價和實驗評價。實驗評價:對每個實驗的實驗目的、實驗步驟、實驗結果進行考核;項目評價:以項目團隊為單位考核,對項目的實施情況、團隊協作情況、項目答辯和項目文檔等進行評估;期末理論考試在總成績中的比重最多不超過50%。 其中項目的實施情況包括詞法分析部分、語法分析部分、語義分析和中間代碼生成部分、代碼優化部分、目標代碼生成部分等綜合確定。
為了量化編譯原理課程改革情況,我們按照CDIO教育理念的目標設計了一份調查問卷,主要從四個維度進行考量:(1)課程知識掌握情況;(2)解決具體問題的能力;(3)團隊協作與組織能力;(4)工程系統化情況?;厥諉柧斫y計結果表明:學生通過課程實踐,基本能夠掌握課程要求的大部分知識,并且能夠活學活用;通過上機和課程設計,項目實踐動手能力大大提高,學會了分析問題、解決問題,及團隊合作;具備了該門課程的工程應用能力。
CDIO教育理念是一種先進實用的工程教育模式,將CDIO理念引入到“編譯原理”課程教學中,對課程從教學方法、上機、考核方式方面進行改革和嘗試,實踐證明了CDIO模式在教學實踐中取得不錯的教學效果。隨后我們將繼續深入探討CDIO在課程教學中的應用。
[1]李桂玲,朱曉蓮等.基于CDIO理念的“數據結構”課程教學的探索[J].中國教育信息化,2015(24):50-52
[2]張運濤.基于CDIO工程教育模式的AutoCAD課程教學改革初探[J].安徽科技學院學報,2010(3):60-62
[3]薛健飛,林凌敏.基于CDIO的行業特色高校的可持續發展研究[J].教育與職業,2011(4):72-75
[4]李震平;李曉霞;魏紅君;CDIO模式下C語言教學項目專業化研究[J].河北工程大學學報(社會科學版),2012(1):121-124
徐艷群(1978—)女,陜西韓城人,講師,碩士,研究方向:計算機應用。