林 奕,曾雷杰,張小芳
(西北工業大學 計算機學院,陜西 西安 710072)
面向復雜工程和系統能力的編譯原理課程改革探索
林 奕,曾雷杰,張小芳
(西北工業大學 計算機學院,陜西 西安 710072)
針對工程教育認證標準關于復雜工程問題解決能力培養的需要,結合西北工業大學計算機學院編譯原理課程試點改革實踐情況,分析課程改革面臨的主要挑戰和影響效果的相關因素,探討教學方法、教學內容、考核模式等的適用條件和有效性,提出提高人才培養質量的思路和建議。
工程教育認證;復雜工程能力;編譯原理
中國工程教育認證協會在2016年認證標準中,對“復雜工程問題解決能力”提出了明確要求[1]。從字面意思上理解,對復雜工程能力培養效果的評價,可以從以下兩個角度考慮:
第一,作品足夠復雜(系統能力提升類課程改革的主要目標)。
第二,通過教學過程的實施,使絕大多數學生可以產出復雜作品(工程認證要求覆蓋全體學生)。
目前教學實踐中遇到的問題往往是定義標準容易(達到某個復雜度),達成標準困難(大部分學生無法保質保量達到要求)。最終結果通常只能是降低標準。換而言之,“教學過程的實施”并未提高大部分學生的復雜工程能力。導致這一現象的主要原因在于,現有教學方法過于注重讓學生“記住技術”,而不是通過資料搜集、研討交流、實驗試錯等方式,真正理解技術的內涵與本質。
實際上,工程設計人員在解決真實工程問題時,需要根據用戶需求、時間進度、可用資源、維護成本等多方面因素,綜合運用科學與工程方法,以“提出方案、評價效果、改進方案”的形式對項目進行迭代推進和逐步優化。不僅如此,實際項目中的設計人員往往還要參考大量相似系統的設計和經驗,在經過權衡與綜合后提出或改進設計方案。
從認知模型的角度看,這一過程體現的是“布魯姆分類模型”中高層次的思維活動[2]。傳統教學中采用的“記住算法和公式”“多做習題”等方式,只能以碎片化方式對單項技術進行介紹,無法體現工程活動中的發現問題、解決問題的系統化、動態化思維過程。
本改革希望以編譯原理課程為例,通過實際教學試點實驗,探索導致上述問題的主要因素,并對多種教學方法、考核方式進行嘗試,對這些方式方法的有效性和局限性進行分析,以期找到能夠切實提高復雜工程能力培養效果的有效途徑與方法。
考慮到學生基礎、接受能力和有限學時等限制條件,編譯原理課程改革分為多個階段進行。
第一階段,針對較小規模班級,探索提高最低水平和平均水平的途徑和方法。該階段面臨的主要挑戰有:
(1)缺乏前期改革支撐,學生接受能力存在較大不確定性;
(2)學生其他課程較多(第二屆試點班進行了調整),可投入學習的時間有限;
(3)缺乏相關教學與考核經驗。
第二階段,擴大受益面,研究確保更大規模班級的教學效果。同時繼續探索提高課程難度的有效途徑與方法(最高難度)。
第三階段,覆蓋全體學生。
本課程改革是西北工業大學計算機學院系統能力課程體系改革的一個組成部分[3],小規模試點班階段是改革的第一階段,因此制定了以下有限目標和任務:
第一,重點提高最低挑戰度及其自主達成度,覆蓋試點班全體學生。核心是提高學生基礎能力[4]和已有知識體系教學效果與效率。
第二,嘗試多種教學、考核方法,從學生達成度和教學/學習效率的角度,針對改革限制條件,對這些方法進行初步分析和評估。
第三,通過教學中遇到的實際技術難點和典型學生案例,發現影響教學效果和效率的其他盲點和瓶頸問題,探索可能的解決途徑。
第四,在上述過程中,評價現有教學、指導與評價、考核方法對培養復雜工程能力方面的實際效果,并可能存在的問題。
上述幾條中,第一條是試點班希望達到的教學效果。第二條所采取的教學、考核方法是保證第一條實現的基礎。第三條對所采取方法進行評估和分析,發現影響教學效果和效率的主要因素,為進一步提高挑戰度和學生覆蓋率提供依據和建議。第四條希望分析現有教學、考核方法用于培養復雜工程能力時的有效性與不足。
3.1 試點改革前的基本情況
在本次試點前,學生分為兩個大班,每個大班約100~120名學生。理論課64學時,實驗課32學時(以獨立課程設計形式獨立開課,在理論課結束后下一學期開設)。實驗課采取的實驗策略,是給定詞法、語法的形式化表示,要求學生利用工具生成某種中間表示形式的低級代碼序列。
根據實際教學情況,為加快改革進度,本課程第一階段改革分為3個子階段。
3.2 子階段1(2014年秋季)的改革措施與效果
試點班為教育實驗學院圖靈班大三學生,共4位同學,“子階段1”基本情況見表1。

表1 “子階段1”基本情況
本階段試點目標是探索案例教學和全實驗室教學模式,并研究其中影響教學效果和效率的主要因素。
1)改革措施。
(1)實驗室授課:首次嘗試理論和實驗指導均在實驗室開展,指導學生通過查詢資料開展研討和自學。
(2)課程內容調整:針對理論和編程基礎薄弱(離散數學下學期才學)的特點,以案例代替理論推導(原型系統介紹,給出自動機、遞歸下降等實現案例),并采用逆向分析法增加高級/低級語言對應關系等內容,解決學生不了解匯編等問題[5]。
2)效果分析。
(1)總體效果:學生基本均可完成一個小型語言的編譯器,但學生作品的規模和質量均不理想。
(2)措施優缺點分析見表2。
3.3 子階段2(2015年春)的改革措施與效果
針對大班,研究分組研討對教學效果和效率的影響。“子階段2”基本情況見表3。

表2 “子階段1”改革措施效果分析

表3 “子階段2”基本情況
我們嘗試采取“組分裂互助模式”,對自動機、LL和LR算法、語法制導的中間表示生成中的核心內容進行教學。具體方式如下:
(1)針對詞法、語法核心算法和模型,進行案例引導的教學。
(2)采取迭代式分組教學模式——即講解案例后,統計完全理解的學生數后分組,保證每組有一名完全理解的學生擔任主講,講完后再統計、再分組。
“子階段2”改革措施效果分析見表4。

表4 “子階段2”改革措施效果分析
3.4 子階段3(2015年秋)
2015年秋季,我們選拔了12名大三普通班的同學和10名大三教改班同學進行試點,基本情況見表5。

表5 “子階段3”基本情況
為提高學生參加積極性和教學效果,本試點班提前一個學期開課,學生如有困難允許退出并參加2016年春季的正常課程和考試。20位同學完成,2位同學退出。本次試點目的在于提高作品規模和難度,并保證絕大多數同學完成任務。“子階段3”改革措施效果分析見表6。
1)提高最低挑戰度及其自主達成度,覆蓋試點班全體學生。
作品品質和學生完成率達到預定要求。除兩位同學因其他課程較重等原因退出試點班,其他同學均完成任務。12位同學程序規模在1 500~2 500 LOC之間。4位同學達到2 500~4 000 LOC(均有較強基礎,4人中1名為圖靈班同學)。3位同學達到800~1 500 LOC(此處LOC為去除注釋、空行后的純代碼行)。從結果看,圖靈班和普通班同學差異并不顯著。
2)所采取的全實驗室教學、調整的課程內容、組分裂互助模式、作品評價方式等措施,對提高理論教學效率和效果有顯著的正面作用。
(1)在大多數學生基礎不強的條件下,仍可全部達成預定目標(符合工程認證關于最低標準覆蓋全部學生的要求)。
(2)學生上課前的編程和理論基礎,對能夠達到的最高標準關系密切,與大部分同學所能達到的標準關系不顯著。
(3)4位同學可獨立完成任務,大部分同學在老師或同學幫助下可以完成任務。只有2名同學須教師主動關注并在關鍵點上提供較多幫助,過關后在自信和能力方面得到提升,無須過多關注即可完成任務。分析這一現象的原因,除學生基礎外,學生是否善于溝通交流和教師是否能夠及時發現“卡殼”的學生,是最為關鍵的因素。基于作品測試和評價的模式,可讓教師及早發現問題并提供幫助。
3)新發現的瓶頸問題和典型案例。
(1)沒有預料到“學生溝通與交流能力”成為影響教學效果的主要因素。印證了“及早發現問題”是提高作品完成率的關鍵因素。
(2)是否能夠鼓勵學生互助,是提高教學效率的關鍵。
(3)建立對每個學生學習過程及時評價和指導的機制,是避免互助變成“互抄”的關鍵。此方法雖然教師工作量較大,但不僅可避免“程序檢測技術”無法應對源頭多樣性帶來的漏檢問題[6],而且也符合解決復雜工程問題的漸進與迭代過程的特性。
(4)驗證了案例教學可極大提高作品完成度。但過細的案例會抑制學生主動性,降低學生水平區分度。下一階段改革,我們將探索解決這一難題的方法。
(5)學生規模擴大是影響教學效果的關鍵因素。本次試點在對教學內容和方法改進后,應可適用于小規模自然班。然而對大規模的班級來說,教師可投入時間和實驗室規模(決定了課外實驗時間)將是最大瓶頸問題。這可能是目前很多學校在實施系統能力改革時所面臨的最大挑戰,也是我們下一階段試點的核心目標,重點將放在探索一條低成本、可操作的解決途徑。

表6 “子階段3”改革措施效果分析
4)探索復雜工程問題解決能力的評價、考核方法,系統能力的教學與指導方法。
(1)從“子階段3”的結果看,“能夠構建出較復雜的系統”只是“復雜工程問題解決能力”培養的一個結果。目前教學對于工程能力的培養存在顯著不足,因此必須將工程能力培養融入學習過程中,否則很容易受學習能力限制,被迫大幅降低實驗難度或出現學生完成率低等問題。
(2)本次試點采用的評價、考核方法和實驗階段劃分方式,主要對最終作品進行評價。工程質量等問題顯然只有對工程過程進行管理才能解決,當學生規模擴大后將有更多學生需要被關注,教學方法和手段將是教師能否同時關注這么多學生的主要障礙。
(3)過多、過細的指導會減少學生獨立解決問題的數量并降低問題的難度。如不能對此因素進行控制,最終考核的將是“老師或案例的質量”,從而無法區分學生水平差異,并針對學生差異進行強化指導與訓練。在對2名須教師“主動幫助”的同學進行指導時,采用增量式開發模式使瓶頸突破成為可能。然而一旦突破瓶頸,學生就有信心、有能力完成更高質量的作品。
試點班教學實驗表明:
(1)全部學生的作品規模、難度達到改革第一階段預期目標。
(2)對影響教學效果的幾個可能因素及各教學方法有效性進行分析,得到表7所示的結論。
(3)試點班后期發現學生作品規模雖然有了明顯提升,但暴露了較多的質量問題。如不對工程方法專門指導、bug太多、架構無法擴展等原因導致較多學生放棄對更高難度實驗的挑戰、或因時間不夠而無法調整更高難度任務,降低課程可達成的最高難度與平均難度。

表7 影響教學效果的可能因素
復雜工程需要多方面綜合能力,尤其是對方案、設計、問題的評估和不斷改進,涉及布魯姆分類模型中的高層活動[2]。僅通過對作品結果的正確性或性能測試只能評價學生是否達到標準,不能揭示學生能力成長過程中存在的問題。如果不能發現哪些學生被卡在哪里,將無法提供及時指導,這將影響達成度和作品水平。本次試點班采取的措施,對小規模班級有效性顯著,但用于更大班級時須對所采取的方法和措施進行進一步改進。
[1] 中國工程教育認證協會. 中國工程教育認證通用標準[EB/OL]. [2016-07-30]. http://cn.ceeaa.org.cn/.
[2] Bloom B S, Engelhart M D, Furst E J, et al. Taxonomy of educational objectives: The classification of educational goals. Handbook I: Cognitive domain[M]. New York: David McKay Company,1956.
[3] 姚燁, 林奕, 張凱龍. 計算機學院以學生三大能力培養為抓手推動計算機專業本科培養體系重構[EB/OL]. [2015-06-19]. http:// news.nwpu.edu.cn/info/1002/30180.htm.
[4] 林奕, 康慕寧. 軟件教育新形勢下的編譯原理課程體系改革[J]. 計算機教育, 2011(11): 28-32.
[5] 葛強, 唐慧豐, 王磊, 等. 結合逆向分析的匯編語言程序設計教學方法[J]. 計算機教育, 2016(6): 94-97.
[6] Bowyer K W, Hall L O. Experience using MOSS to detect cheating on programming assignments[C]∥IEEE Education Society. 29th Frontiers in Education Conference. USA: IEEE Press, 1999, 3(13b3): 18-22.
(編輯:彭遠紅)
1672-5913(2017)02-0111-06
G642
西北工業大學2015年度探究式、研究型課程“編譯原理”項目(2015U10M11009);計算機專業教指委2016年“系統能力培養——專業課程體系改革及課程建設”項目試點院校(第一批);計算機專業教指委2016年面向工程教育的本科計算機類專業課程改革項目“面向復雜工程問題構建能力可分解的課程體系”。
林奕,男,副教授,研究方向為海量信息存儲、嵌入式與實時系統,ly_cs@nwpu.edu.cn。