引言
“編譯原理”是計算機科學及相關專業的一門重要的專業課程,在計算機科學中有很重要的地位和作用,被列入國家ACM91教程。編譯原理與其他計算機科學密切相關,其技術在很多領域有著廣泛的應用,如軟件工程、逆向工程、軟件再工程等[1]。設置該課程的目的在于系統地向學生介紹編譯系統的結構、工作原理以及編譯程序各組成部分的基本原理和實現方法,使學生通過本課程的學習,在掌握編譯原理的理論知識和實現方法的基礎上,具有分析、設計、實現小型編譯系統的能力,為以后從事計算機軟件開發工作及理論研究工作打下堅實的基礎。
“編譯原理”課程教學存在的現實問題
眾所周知,“編譯原理”是計算機科學及相關專業的一門重要的專業課程,由于涉及形式語言,有窮自動機等抽象內容,學生學習過程中存在著一定的困難,作者通過主講本課程的體驗以及對學生學習的調查和學生反饋情況的分析、總結,發現“編譯原理”課程教學存在著如下的現實問題:
1.大多數學生沒有明確學習的意義
學生普遍認為學習該課程僅是為了構造編譯程序,認識不到其在理解軟件理論和方法上的重大的潛在價值。這些都足以證實很多學生沒有明確學習本課程的意義所在。
2.學生缺乏學習的興趣和熱情
由于本課程具有一定的理論深度和難度,學生學習時存在著一定的困難,經常有學生反映課堂上都聽懂了,課后復習時又不清楚了,老師講的例題都聽明白了,自己做習題的時候又不會了。長期以來,學生在心里上慢慢對該課程產生畏懼,在這種畏懼心里的驅動下,學生對該課程的學習失去興趣和熱情。
對“編譯原理”教學改進的方法
針對以上學生學習過程中存在的問題,作者結合自身的實際教學提出了以下幾方面的改進方法。
1.明確學生學習的意義
本課程的很多理論既抽象又繁雜,比如:形式語言,而這些理論又恰恰是本課程的重點、難點所在。因此作為主講教師,首先應該讓學生明確的認識到學習本課程的意義。第一:提高“計算機思維”能力。那么,什么是“計算機思維”能力呢?對現實問題進行抽象化和形式化表示是進行計算機問題求解的基本途徑。計算機科學與技術學科要求學生具有這種抽象化和形式化思維的能力。稱這種能力為“計算機思維”能力。編譯器的設計過程應用了“計算機思維”的方法和思想,對計算機科學人才特需的“計算機思維”能力進行培養。第二:“編譯原理”對很多領域理論的研究具有深遠的意義,如計算機軟件技術領域,計算機系統結構領域,人工智能系統的機器學習領域,并行處理技術領域等。
2.走出純理論教學的誤區,結合客觀事實激發學生的學習興趣和熱情
在“編譯原理”課程的第一章第一節里,首先介紹的內容就是“什么是編譯原理?”。對于這樣一個抽象的概念,在學生對編譯原理完全沒有了解的情況下理解這個概念是非常困難的。為了闡述清楚這個問題,我們先回顧這樣一個客觀事實:世界上存在著多種多樣的自然語言,比如漢語、英語、法語、阿拉伯語等。在不同語言的人之間要交流思想必須在兩種語言之間進行互譯。對計算機有所了解的人都知道,在計算機系統里,所有的信息都是由“0”和“1”表示的,而我們在編寫程序的時候,并不是用低級語言描述的,是用如C語言、DELPHI、JAVA等高級語言描述的,這些語言的語句不是由“0”和“1”組成,而是由含有“if”、“for”、“while”等關鍵字,標識符以及特殊符號等組成的。那么,如何讓計算機“讀懂”,并“執行”這些語句代碼呢?這里就存在著一個翻譯,這個翻譯就是編譯程序。理解了編譯程序的功能,編譯程序的概念自然很容易理解了。這一客觀現實在教學中的運用,達到了簡化編譯課程認識的目的,而且更容易被學生所理解和接受,在腦海中留下深刻的印象,學習為以后更多理論的做好鋪墊。
3.以學生為主,師生互動的教學模式
現代教育理論“建構主義”的教學理論有著非常積極而廣泛的影響,它是針對傳統教學的弊端而提出的。傳統的認識論和認知科學認為,知識是對外部客觀世界的被動反映。因此,教學的目的就是使學生通過課堂教學過程(講授,即灌輸式)獲得現實映像,這種教學模式最終導致的是學生被動的接受與模仿再現。而建構主義教學觀則認為,教學過程是教師和學生對知識進行合作性建構的過程,而不是客觀知識的傳遞過程[2]。教師應組織和引導學生們討論和交流,共同建立其學習群體并成為其中的一員,共同對課程所涉及內容進行討論。
在這一理論指導下,在教學過程中,作者改變傳統教學中老師講、學生聽的教學模式,對于內容較為簡單的章節,采取問題解決式教學模式,老師事先就這些章節提出具有啟發式意義的問題,學生在學習中通過解決問題,理解相應的概念、理論,建立良好的知識結構。學生在學習的過程中提出的問題,老師不能簡單的作以回答,而是在課題上展開問題的討論。在討論的過程中讓學生自己總結結論,從而進一步加深對理論知識的理解和認知。
4.采用多種教學方式,增強教學效果
由于本課程涉及形式語言、有窮自動機等抽象內容,學生在學習過程中接受起來比較困難。為了提供學生的學習興趣、增強課堂教學效果,將教學過程中一些需要教師在黑板上動態演示的過程做成CAI課件,比如:字符串的動態識別過程;文法的預測分析表的構造過程以及動態顯示文法的分析過程等。這些課件在教學過程中的演示,有助于加深學生對所學知識的理解。
現在正在建設的“編譯原理”網絡課程,除了將現實教學中的課堂講授、作業、答疑等環節全部在網絡課程中給予實現外,還提供了課程的教學大綱,參考資料等諸多信息,為學生在課堂以外的自學、復習提供豐富的學習資源。
5.思考題和習題的靈活運用
對于每一個重要知識點,作者在教學過程中均設置有典型的思考題及習題,以幫助學生加深對相關知識點的理解和掌握。學生在做思考題和習題過程中,能真正認識到自己在相關知識掌握上的不足。教師在學生做完思考題和習題之后,針對學生普遍存在的問題重點講解,做到學生真正理解的目的。對于準備考研的學生,這些精心設置的思考題和習題對他們復習和應對考試都有很大的幫助。
總結
以上結作者的教學心得,提出了編譯原理課程教學中存在的問題,探討了“編譯原理”教學改革的方法。這些教學方法的運用,為作者順利的、高質量的完成教學任務提供了很大的幫助。為了能夠進一步的豐富教學內容,提高教學質量,還需要不斷的實踐和積累。
參考文獻:
[1]呂映芝,張素琴,蔣維社.編譯原理[M].北京:清華大學出版社,1998.42.
[2]溫彭年,賈國英.建構主義理論與教學改革-建構主義學習理論綜述[J].教育理論與實踐,2002.23(5):17-22.
[3]何炎祥,伍春香.現代教學理論指導下的“編譯原理”教學綜合改革[J].計算機教育,2005.3:10-13.
[4]陳火旺,錢家驊,孫永強.程序設計語言編譯原理[M].北京:國防工業出版社,2001.
作者單位:陜西科技大學電氣與信息工程學院陜西西安