期刊VIP學術指導 符合學術規范和道德
保障品質 保證專業,沒有后顧之憂
編譯原理是計算機專業的核心課程,其教學效果不僅影響學生對本門課程知識的掌握與理解,對學生的專業素養養成也至關重要。
《編譯原理》課程一直是作為大學本科計算機專業培養專業素養的必修課程。該課程不僅教授學生掌握編譯相關的基本理論知識和實際操作技能,而且通過課程學習,進一步培養學生自主學習和自主思考的能力,使得學生能夠經過獨立思考,利用計算機解決實際問題,獲得可持續發展的計算機應用能力。
一、編譯原理分級教學的必要性
1.編譯原理課程教學目標需要分級實施。從課程體系總體設計看,編譯原理課程的主要教學目標之一是使學生在系統的級別上重新認識算法和程序,提升學生的系統能力。實際上,除了這些之外,還在于進一步培養學生的形式化描述能力:如何給出問題的形式化描述,基于這種描述設計出自動化處理的過程,最后實現“自動計算”。[1]在理論課程中學習了形式化描述的編譯理論之后,一定要依賴于實際的實踐操作,才能深化理論認識,鍛煉形式化思維,提高學生的動手能力,從而達到計算思維的培養。
2.編譯原理實踐課程教學呼喚因材施教。編譯原理的實踐課程,是對學生前期大學所學知識的綜合應用。有程序設計基礎,數據結構,離散數學等等。如果學生前期課程學習得很扎實,已經具備了一定的程序設計思想及抽象思維,那么,在這個課堂上,則比較容易上手,能及時完成老師布置的任務。如果學生在前期沒有打好扎實的基礎,將會由于前期知識的欠缺,無法將一些知識綜合應用,實驗幾乎就無從下手。要么依賴組內的其他同學的工作,自己混雜其中坐享其成;要么就直接放棄,破罐子破摔。這與我們掌握“編譯原理”中的基本概念、基本理論、基本方法,在系統級上再認識程序和算法,提升計算機問題求解的水平,增強系統能力,體驗實現自動計算的樂趣的專業培養目標是相去甚遠的。[1]不同的職業,不同的工作崗位,不同的社會層面,對計算機的“自動計算”能力的要求是不相同的。因此,我們不能按單一的模式培養人才,不能用單一的標準衡量人才。教育也是一種產業,市場需要我們提供多種規格的產品,我們就應該以市場為導向,及時調整我們的教學計劃和教學方法以為市場服務。
二、編譯原理實踐教學分級構想
鑒于學生基礎水平參差不齊,部分學生反映編譯原理實驗難度偏大,而少部分學生又能又快又好地完成實驗任務。為了避免優秀學生不能發揮所長,而較差的學生又無法完成實驗內容的情況,我們調整了“齊步走”的教學方式。通過設置高、中、低三種級別的實踐內容,使學生在系統地學習過本門課程之后,能夠熟練掌握編寫編譯器的原理及技術,如自動機理論、LL與LR分析法、代碼優化與生成等,并能了解大型系統軟件的特點和開發方法,促進學生軟件開發能力、問題求解能力的提高和計算機科學思維的培養,使學生能夠運用計算機思維,利用以“語言轉換”為核心的問題求解方式,將所學知識靈活應用于今后的工作中。
1.激發優秀學生自主創新。優秀的學生對所學基礎知識掌握較為扎實,動手能力強,具有強烈的上進心,好奇心,自主學習能力較強,具有一定的創新欲望。為了讓這類學生能夠物盡其用,人盡其才,可以根據他們的專長及喜好專門為他們設計或自創實踐課題,更應該激勵他們自己設計一些課題來實現。在項目的實施過程中,老師和學生一起分析、討論、研究項目的功能需求,再一起探討設計項目的框架,最后就交由學生自己去實施,完善。項目考核重過程而輕結果。例如,在作品的設計及實現中是否包含有創新思維,所做的工作與前人所做的相比有何改進,在自己的基礎上有什么突破,通過此項目得到什么啟示等等。[2]允許學生創新失敗以積累經驗,成績以優和良為主,以打消學生的后顧之憂。
2.強化普通學生工程應用。大部分學生對于老師交給的基本任務,基本能夠自己完成;對于一些有挑戰性的任務,也能自己在尋求幫助中完成;或者能夠在已有的東西基礎之上做一些修改,使之更加完善。但是缺乏一些創新思想,必須在老師的指導下才能完成。對于這部分學生,老師的指導舉足輕重,若太抽象,理解起來就比較困難;若太詳細,就直接照搬,基本不經自己大腦的思考。這兩種情況均不能調動學生的學習積極性,還會讓學生越來越討厭這門課。因此,可以考慮結合編譯原理的理論知識,設計可以解決實際問題的小程序,以加強編譯和學生自身之間的聯系,以增強個人成就感。例如,設計基于表達式的計算器,特殊文本編輯器,高級語言轉換工具等等。或者以任意一門小語言為研究對象,實現其編譯前端以及對應編譯算法。實施中,其中的一些細節可以咨詢老師或者同學,但是,必須自己親自完成整個程序,走遍項目過程中的每個階段。同時主要依據學生完成的產品質量以及過程控制來進行考核。如,所設計軟件的健壯性,完整性,穩定性如何;軟件開發過程中,小組成員之間的協調情況,分工情況是否合理。以避免組內成員之間分工不均、過度依賴,必須體現按勞分配的思想。成績以良和中為主。
3.鼓勵較差學生鞏固提高。有少部分學生由于前期的知識不夠扎實,獨立編寫一個稍微大型的程序比較困難。這部分同學讓他們從頭到尾的來完成一個編譯前端或者編譯算法,基本是不現實的。有些同學甚至無法讀懂稍微復雜的程序。他們大多比較自卑、敏感。雖然有一定的學習愿望,但是由于知識的連貫性,讓他們想學卻沒有辦法再學懂。對于這部分同學,可以閱讀老師指定的編譯器源程序,畫出程序流程圖,理解編譯器的工作方式,找出一些算法在編譯程序中的具體應用;或者,能夠完成老師給定的程序框架中的一些語句、函數等部分代碼。考核主要依據學生具體的理解以及進步大小來評定,以及格和中為主。對于那些本身基礎非常薄弱的同學,要對他們的進步及時鼓勵與肯定,強調有付出就有收獲,以令其對學習還能保持信心。
三、分級教學中遇到的問題及解決方法
可以肯定地說,通過分級教學,多數學生能夠在適合自己的學習環境中快樂地、自主地學習,每一個人的能力得到最大限度地發揮,個人成就感獲得極大滿足,教學效果良好。但是,在具體的實施過程中,還是有一些問題需要引起重視。
1.分級的基礎是了解學生。分級必須建立在對學生必須了解的基礎之上。[3]對于大學老師,一般都不可能從頭到尾的教某個班的本文由學生,所以在課程剛開始的時候不能隨意的將學生定級。可以在第一次實驗之后,根據第一次實驗的檢查情況,再結合自愿推薦的原則對學生進行分組。而且,在后續實驗過程中,教師可以適時調整級別,以調動學生積極性。
2.考核應體現按勞分配的思想。在成績評定上,既不能打擊基礎較差的學生的學習積極性,也不能忽視較優秀的同學的學習積極性[4]。不能僅僅看到學生的進步就隨意加分,更不能因為學生選擇了高難度級別的實驗,就直接打高分。考核應該重過程而輕結果,盡可能做到公正公平,體現按勞分配的思想,讓學生明白,一定要有付出才會有收獲。成績評定最好是以小組答辯的方式進行,以老師評分加上各個小組的同學評分綜合得到。要得優秀的同學必須公開答辯,以接受全部同學的監督,同時也為大家樹立了學習的榜樣,還能鍛煉學生的表達能力、演講技巧及心理素質。
3.教師業務能力應該逐年提高。在分級教學模式下,對于學習興趣足、學習能力強的學生,教師為了滿足學生的需求,必須深入研究教學內容,精心選擇實現內容,并盡量積累相關資料,與學科前沿和實際應用相結合,從而拓寬學生的視野,激發學生的想象力和創造力。分級教學既有利于激勵教師提高業務水平,又有利于教師樹立成就感,在良好的師生互動中,體驗到作為老師的價值。[5]通過編譯原理實踐課程的教學現狀分析,提出了編譯原理實踐教學分級教學的構想。并對分級教學實施過程中遇到的問題提供了解決參考。實踐表明,該方法應用于編譯原理的實踐教學,能夠較大幅度的激發學生的學習動力,提高解決實際問題的能力,提升專業素養。這也是我國因材施教思想的體現與實施。