李志敏 黃蘭英 熊曾剛
摘要:為提高編譯原理課程的教學(xué)效果,提出基于CDIO工程教育模式的課程教學(xué)方案,闡述編譯原理“案例驅(qū)動、模仿提升、資源開放、協(xié)作學(xué)習(xí)”的教學(xué)方法,說明教學(xué)實施過程中面臨的“雙師型”教師隊伍建設(shè)和學(xué)生實習(xí)實訓(xùn)平臺建設(shè)等問題與對策。
關(guān)鍵詞:編譯原理:CDIO工程教育模式;課程教學(xué);項目實訓(xùn)
引 言
當(dāng)前,社會經(jīng)濟發(fā)展對計算機科學(xué)與技術(shù)專業(yè)人才的能力與素質(zhì)要求總結(jié)起來主要有如下5個基本層面。
(1)具有扎實的專業(yè)基礎(chǔ)知識和終生學(xué)習(xí)的素質(zhì)
(2)具有工作經(jīng)驗和較強的工程應(yīng)用能力。
(3)善于溝通協(xié)調(diào),具有團隊合作能力。
(4)具有較強的自學(xué)能力和實踐創(chuàng)新能力。
(5)具備責(zé)任心強、認(rèn)真負(fù)責(zé)、有擔(dān)當(dāng)、能吃苦耐勞等意志品質(zhì)。
根據(jù)上述人才的市場需求,計算機科學(xué)與技術(shù)專業(yè)畢業(yè)生還存在不能滿足市場人才需求的狀況,反映在計算機專業(yè)的教學(xué)上,面臨如下困局:課程與課程、教師與學(xué)生、學(xué)校與企業(yè)之問相對獨立,缺少協(xié)作,沒有形成人才培養(yǎng)的合力二要打破困局,必須明確課程教學(xué)是教學(xué)質(zhì)量彤成的“第一現(xiàn)場”,也是影響人才培養(yǎng)質(zhì)量的關(guān)鍵環(huán)節(jié)。改進課程教學(xué)方法是提高人才培養(yǎng)質(zhì)量的必由之路 。
編譯原理課程具有抽象模型復(fù)雜、概念繁多、算法多樣、理論性強等特征。編譯器設(shè)計是課程的難點之一,構(gòu)造完整的編譯器技術(shù)難度大,學(xué)生畢業(yè)后很少有人從事這方面的工作,這就造成很多學(xué)生課程學(xué)習(xí)目標(biāo)不明確、不知道學(xué)什么、為什么學(xué)、怎么學(xué)的局面。此外,課時少、內(nèi)容多、教學(xué)內(nèi)容和方法不能適應(yīng)編譯技術(shù)發(fā)展的要求、學(xué)生課外主動學(xué)習(xí)的積極性不高,也是編譯原理課程教學(xué)效果不佳的原因之一。
實際上,編譯原理作為計算機科學(xué)與技術(shù)專業(yè)的重要專業(yè)課程,在計算機專業(yè)人才培養(yǎng)上有著極其重要的作用。通過該課程的學(xué)習(xí),學(xué)生可以得到如下6個方面的訓(xùn)練 。
(1)掌握和理解編譯系統(tǒng)的結(jié)構(gòu)、工作流程以及編譯程序各組成部分的設(shè)計原理和實現(xiàn)技術(shù),獲得分析、設(shè)計、實現(xiàn)和維護編譯系統(tǒng)的初步能力。
(2)程序設(shè)計語言、操作系統(tǒng)、計算機原理和體系結(jié)構(gòu)等課程是編譯原理的先修課程,編譯原理課程的學(xué)習(xí)可以加深學(xué)生對這些先修課程的理解,提高知識的綜合應(yīng)用能力。
(3)提高對計算機軟件和硬件系統(tǒng)的總體認(rèn)識,具備建立抽象模型和編程實現(xiàn)能力。
(4)編譯原理課程中的編譯器架構(gòu)設(shè)計、算法設(shè)計等內(nèi)容,可以為畢業(yè)生今后從事相關(guān)專業(yè)的工作打下堅實基礎(chǔ)。
(5)課程中的經(jīng)典語言分析方法對于設(shè)計一些實用工具和軟件,如自然語言理解、網(wǎng)絡(luò)信息處理、網(wǎng)絡(luò)協(xié)議的分析與實現(xiàn)等,都是必備的基礎(chǔ)知識。
(6)構(gòu)造編譯器的實踐過程是軟件工程的成功案例,讓學(xué)生獲得開發(fā)大型應(yīng)用軟件的經(jīng)驗。
1 CDIO工程教育理念簡介
CDIO 工程教育模式是能力本位的培養(yǎng)模式,其優(yōu)勢在于讓學(xué)生以主動、團隊合作、課程與課程之問有機聯(lián)系的學(xué)習(xí)方式,獲取與工程實踐相關(guān)的知識與能力。CDIO培養(yǎng)大綱將工科畢業(yè)生的能力分為工程基礎(chǔ)知識、個人能力、團隊合作能力和T程系統(tǒng)能力4個層面,大綱要求以綜合的培養(yǎng)方式使學(xué)生在這4個層面達到預(yù)定目標(biāo)。只有把知識、能力、社會需求融合起來,以能力為導(dǎo)向,以學(xué)科知識和社會需要為依托,整合課程組織結(jié)構(gòu),才能培養(yǎng)出符合社會經(jīng)濟發(fā)展要求的工程技術(shù)人才。CDIO工程教育以實際應(yīng)用項曰的開發(fā)過程為主線,提煉出項目開發(fā)經(jīng)歷的構(gòu)思、設(shè)計、實施、運行4個主要環(huán)節(jié),培養(yǎng)學(xué)生系統(tǒng)開發(fā)的能力 。實施CDIO工程教育模式,基本原則是落實“做中學(xué)”以及“基于項目的學(xué)習(xí)”,它體現(xiàn)了現(xiàn)代工程師所應(yīng)具備的服務(wù)于現(xiàn)代工業(yè)產(chǎn)品從構(gòu)思、設(shè)計、實現(xiàn)到運行的全過程所必須擁有的基本能力。
2 基于CDIO工程教育模式的編澤原理課程教學(xué)方法
課程教學(xué)改革從以下4個方面展開。
1)學(xué)生分組,導(dǎo)入項目。
課程教學(xué)以項目導(dǎo)入的方式開始,首先鼓勵學(xué)生搜集編譯基礎(chǔ)理論和技術(shù)在計算機應(yīng)用領(lǐng)域的成功案例;其次引導(dǎo)學(xué)生搜集開源的編譯工具,按照支持的源語言和語法分析方法分類。以上兩項前期工作對應(yīng)CDIO模式的構(gòu)思部分,需明確客戶的需求,考慮技術(shù)、企業(yè)戰(zhàn)略和制度等因素,不斷改進概念、技術(shù)和商業(yè)計劃。
項目的最終目標(biāo)是用C語言編寫一個PL/O語言處理系統(tǒng)。在教學(xué)過程中,學(xué)生分成若干個項目組,在教師的指導(dǎo)下編寫項目計劃書,劃分項目的功能模塊;指定各個模塊的負(fù)責(zé)人,模擬實際項目開發(fā),進行分工協(xié)作。
2)案例驅(qū)動,模仿提升。
CDIO工程教育模式要充分體現(xiàn)“做中學(xué)”,以“項目案例”為載體組織整個教學(xué)過程,以案例開發(fā)過程安排教學(xué)內(nèi)容,靈活運川啟發(fā)式和研究性的教學(xué)方法。課程教學(xué)要為學(xué)生構(gòu)建項目開發(fā)的情景,調(diào)動學(xué)生的主動性與參與性,提高學(xué)生的實踐創(chuàng)新能力。在編譯原理課程教學(xué)過程中,我們發(fā)現(xiàn)有些學(xué)生學(xué)習(xí)缺乏積極性和主動性,課外缺少自主訓(xùn)練和探索,雖然通過了課程考核,但是實際只了解到一些基本概念和零碎的知識斷點,不具備運用所學(xué)原理和技術(shù)進行編譯器開發(fā)的能力。
為了培養(yǎng)學(xué)生“構(gòu)思一設(shè)汁一實現(xiàn)一運作”編譯系統(tǒng)的技能,我們將編澤原理的學(xué)習(xí)過程分為模仿和提升兩個階段。
(1)模仿階段的主要目標(biāo)是以PL/O語言處理系統(tǒng)為案例,引導(dǎo)學(xué)生學(xué)習(xí)基礎(chǔ)知識,掌握基本算法,激發(fā)學(xué)生興趣。項目開發(fā)分為8項子任務(wù),這些任務(wù)可在教師的指導(dǎo)下完成 。
任務(wù)1:安裝測試用C語言實現(xiàn)的PL/O語言處理系統(tǒng);完成PL/O語言語法的EBNF描述。
任務(wù)2:PL/O編譯程序中詞法分析程序的設(shè)計和實現(xiàn)。
任務(wù)3:PL/O編譯程序中語法分析程序的設(shè)計和實現(xiàn);自頂向下遞歸調(diào)用子程序的方法。
任務(wù)4:PL/O編譯程序中語義分析和巾間代碼生成。
任務(wù)5:PL/O編譯程序中符號表的設(shè)計與實現(xiàn)。
任務(wù)6:PL/O編譯程序中運行時的存儲組織。
任務(wù)7:PL/O編譯程序中的目標(biāo)代碼生成。
任務(wù)8:PL/O編譯程序各階段整合運行,編寫PL/O語言使用說明書。
教師可展示用C語言實現(xiàn)的案例,要求學(xué)生模仿整個實現(xiàn)過程,用Java語言再次實現(xiàn)PL/O語言處理系統(tǒng)。學(xué)生則通過此案例,模擬項目開發(fā)全過程。
(2)提升階段的主要目標(biāo)是讓學(xué)生學(xué)習(xí)編譯器開發(fā)的流程,學(xué)會運用編譯技術(shù)進行項目開發(fā)。本階段分為以下幾個步驟。
步驟1:編譯器程序設(shè)計提高。定義一個待實現(xiàn)的源語言,如PL/O語言的擴充或者C語言的一個子集,要求學(xué)生用C或者Java實現(xiàn)編譯程序。
步驟2:編譯技術(shù)擴展。引導(dǎo)學(xué)生學(xué)習(xí)面向?qū)ο笳Z言編譯技術(shù),如收集整理開源編澤器GCC的資料,描述GCC的總體結(jié)構(gòu)、編譯流程、代碼組織。
步驟3:編譯器實用工具。引導(dǎo)學(xué)生學(xué)習(xí)嵌入式系統(tǒng)編譯器及其工具的應(yīng)用開發(fā),包括C和Java編譯器開發(fā)。
步驟4:項目實訓(xùn)。引導(dǎo)學(xué)生利用編譯技術(shù)進行項目開發(fā),如設(shè)計開發(fā)C語言程序設(shè)計自動評分系統(tǒng)、基于語法分析技術(shù)的企業(yè)名稱識別算法、基于語義分析的數(shù)據(jù)驅(qū)動型漏洞檢測方法、編譯原理在通信協(xié)議轉(zhuǎn)換中的應(yīng)用、編譯原理在反病毒技術(shù)中的研究和應(yīng)用等。
3)開放資源,自主協(xié)作。
CDIO注重自主學(xué)習(xí)能力的培養(yǎng),提升學(xué)生獨立解決問題的能力,同時也重視團隊協(xié)作精神的培養(yǎng),發(fā)揮團隊的力量,協(xié)同工作完成任務(wù)。
網(wǎng)絡(luò)環(huán)境下的自主和協(xié)作學(xué)習(xí)要求教師提供充分的網(wǎng)絡(luò)資源。在教學(xué)中,課程組搜集整理了國內(nèi)外編譯原理課程的教學(xué)資源,整理了各種實用編程語言及其表示規(guī)則,設(shè)計了適合學(xué)生需要的“做中學(xué)”項目和任務(wù),并在課程的教學(xué)網(wǎng)絡(luò)平臺共享,通過開放資源和自主協(xié)作的學(xué)習(xí),鼓勵學(xué)生在課外通過網(wǎng)絡(luò)和移動設(shè)備開展學(xué)習(xí)討論,用課外學(xué)習(xí)彌補課程學(xué)時的不足;通過課外自學(xué),充分發(fā)揮學(xué)生的主觀能動性,鍛煉學(xué)生“自主設(shè)計、自主實現(xiàn)、自由探索”,引導(dǎo)和鼓勵學(xué)生積極組織并參與項目組的學(xué)習(xí)和研討活動,讓個人融人項目團隊,提升整個團隊的工程實踐能力。
4)考核評價,多點多面。
CDIO注重工程實踐能力的培養(yǎng),工程實踐能力是各種能力的綜合體現(xiàn),因此考核評價要兼顧這種特性。
所謂多點主要是指編譯原理具有紛繁復(fù)雜的知識點,因此對知識點的考核應(yīng)以促進學(xué)生主動學(xué)習(xí)、研究性學(xué)習(xí)為目的,注重對學(xué)習(xí)過程的考查。教師可通過查看學(xué)習(xí)記錄、平時作業(yè)和練習(xí)情況,考核學(xué)生對基本知識點的掌握情況;通過小組活動記錄,查看學(xué)生在項目組討論中的活躍度,了解學(xué)生提出問題的數(shù)量和質(zhì)量以及解決問題的思路,考核學(xué)生的知識整合和應(yīng)用能力。
所謂多面主要是指編譯原理課程在培養(yǎng)學(xué)生實踐創(chuàng)新能力方面具有多面性,因此考核評價方式要有利于培養(yǎng)創(chuàng)新能力、實踐技能、解決實際問題能力,從多個層面開展。教師可通過對項目構(gòu)思與設(shè)計展示、子項目實施情況、項目匯報與答辯、學(xué)生的自評與互評、教師與企業(yè)工程師的評價等多種方式考核學(xué)生的專業(yè)知識、個人自身能力、團隊合作能力、設(shè)計項目和開發(fā)系統(tǒng)能力。
3 CDIO模式編譯原理教學(xué)實施過程中存在的問題與對策
1)“雙師型”教師隊伍的建設(shè)問題
目前,從事編譯理論研究和技術(shù)開發(fā)的教師不多,有編譯器開發(fā)經(jīng)驗的教師比較缺乏。編譯原理課程“雙師型”教師隊伍奇缺。
湖北省教育廳和湖北工程學(xué)院制定政策,資助并鼓勵青年教師進入相關(guān)企業(yè)與工程師合作解決實踐中的技術(shù)難題。同時,湖北工程學(xué)院每年派出專業(yè)課青年教師到武漢大學(xué)、華中科技大學(xué)等高校進修深造。通過這兩個途徑,學(xué)??梢越鉀Q“雙師型”師資隊伍建設(shè)的問題。
2)學(xué)生實習(xí)實訓(xùn)平臺的建設(shè)問題。
畢業(yè)生就業(yè)難和符合市場需求的應(yīng)用性人才短缺問題一直是高校、用人單位和畢業(yè)生共同的困擾。學(xué)生綜合能力是就業(yè)成敗的關(guān)鍵因素,CDIO工程教育模式強化工程應(yīng)用實習(xí)實訓(xùn)平臺的建設(shè),希望為解決這種困擾提供幫助。
湖北工程學(xué)院與中國航天三江集團公司合作共建的工程實踐教育中心和湖北工程學(xué)院國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目已獲得教育部批準(zhǔn)。在此基礎(chǔ)上,計算機學(xué)院已經(jīng)與國內(nèi)10余家IT企業(yè)和科研機構(gòu)合作共建實習(xí)實訓(xùn)基地,校企合作層面深化,操作方案細(xì)化,實現(xiàn)與行業(yè)需求的無縫對接。
4 結(jié)語
基于CDIO工程教育理念的編譯原理課程教學(xué)方案的改革,推動了算法與程序設(shè)計課程群、操作系統(tǒng)、計算機組成原理、軟件工程實踐等計算機類專業(yè)核心課程的建設(shè),大幅度提高學(xué)生的創(chuàng)新實踐能力。2014年,湖北工程學(xué)院畢業(yè)生就業(yè)率超過95%,考研錄取率超過20%;非畢業(yè)班學(xué)生在各類軟件設(shè)計大賽中獲得湖北賽區(qū)一等獎10項,全國總決賽獎項10項。