徐 慧, 顧 頎,周建美
(南通大學 計算機科學與技術學院,江蘇 南通 226019)
我國有300 多所高校開設軟件工程專業,每年培養30余萬畢業生[1],2017年軟件人才職位需求居職業招聘崗位之首,但從就業結果來看,畢業生就業能力與企業需求之間,存在較大差距。如何才能解決人才需求的難題,培養出具有較強實踐能力的軟件工程人才呢?參加工程教育認證被認為是一個很好的途徑。
《工程教育認證標準(2016 版)》[2]對學生畢業要求的12條中,與專業課程教學直接關聯的有以下5點。
(1)工程知識:能夠將數學、自然科學、工程基礎和專業知識用于解決復雜工程問題。
(2)問題分析:能夠應用數學、自然科學和工程科學的基本原理,識別、表達、研究、分析復雜工程問題,以獲得有效結論。
(3)設計/開發解決方案:能夠設計解決復雜工程問題的解決方案,設計滿足特定需求的系統、單元(部件)或工藝流程,并能夠在設計環節中體現創新意識。
(4)研究:能夠基于科學原理并采用科學方法研究復雜工程問題,包括設計實驗、分析與解釋數據,并通過信息綜合得到合理有效的結論。
(5)使用現代工具:能夠針對復雜工程問題,開發、選擇與使用恰當的技術、資源、現代工程工具和信息技術工具,包括對復雜工程問題的預測與模擬,并能夠理解其局限性。
上述5點,明確表明除系統的理論學習外,實踐教學環節起到至關重要的作用。標準對計算機類專業的補充規定中對實踐教學進一步細化,指出實踐教學體系要包括“實驗課程、課程設計、現場實習”,還要開展“科技創新、社會實踐等多種形式的實踐活動”,由此可見,認證標準將培養學生的工程實踐能力放在十分重要的地位。
智慧來源于知識,但知識不會自然而然地達成智慧,需要通過實踐活動對知識“內化”和“活化”,起關鍵作用的是人的實踐經驗[3]。課程設計是與課程教學緊密相關的實踐環節,是學生獲得專業實踐技能的重要一步。
課程設計,是課程的綜合性實踐教學環節,會用到課程的許多知識點,引導學生從全局的觀點認識課程的精髓和本質,指導學生將所學的知識綜合應用于軟件開發過程中。課程設計具有以下特點:
(1)綜合性。項目設計需要綜合整個課程知識,甚至多個學科,可以培養學生綜合運用知識的能力。
(2)開放性。學生圍繞問題進行探索,學習形式不再局限于課堂與教師的指導。
(3)自主性。時間較長,學生自由、自主地分組學習,根據自己的理解發揮想象力,從而促進學生創造能力的發展。
課程設計一般安排在課程結束后的學期末,時長1周或2周。實施過程見圖1。

圖1 課程設計過程
教師發布課程設計任務,說明課程設計要求,進行必要的考勤與巡視,對學生問題進行必要的解答,對課設成果進行檢查,系統演示與問答,審閱課設報告;根據出勤情況、系統驗收情況及報告,給出成績。
學生選擇課設任務,查閱資料,分析、設計、編碼、實現;課設中,出現問題,可能會求助于指導教師;系統設計完成后,接受指導教師的檢查與現場問答;根據要求,撰寫課程設計報告。
課程設計中存在的異常現象有:
(1)方案少[4]。一個題目,少則十幾人,多則幾十人做,導致學生偷懶、抄襲。
(2)進度異常。課程設計,是一個包括需求分析、數據結構設計、算法設計、編碼、調試與測試、撰寫報告等環節的循序漸進的過程。有些學生在驗收那天突然完成整個設計,但對過程中涉及的問題,一問三不知,只會運行程序[5]。
(3)報告質量差[4]。部分學生的設計報告內容只是源程序和運行截圖,且版面質量差、作圖不規范。
(4)放羊式指導。整個過程幾乎沒有監控管理工作,也鮮有指導工作,放任學生自行完成。
課程設計達不到預期目標,引起教師的深思,因此各種方法被提出,以改進課設,如項目驅動的課程設計[6]、啟發式教學的課程設計[7]、串聯式課程設計[8]等。事實表明,這些理念與方法還不足以解決問題。
課設效果差的主要原因有:
(1)不夠重視。課程設計一般為考查課,不需要考試,能力差的學生怕吃苦,經常拷貝應付。教師給予實踐性教學環節的通過率較高,部分學生存在僥幸心理,不認真對待課設。
(2)過程監督不力。課設一般安排在課程結束后或學期末。此時,教師的業務工作較多,無暇顧及。部分教師認為,課程設計不同于上課,應該由學生自主完成,無須多管。
課設第一天,教師通常會進行開工講解,如講什么內容以及講解的效果,對學生課設有很大的影響。講解除任務布置外,建議講清以下內容。
1)目的與要求。
目的與要求通常寫在課程設計大綱及實施計劃書中,必須向學生闡述與說明,使學生明白課程設計的目的是什么,最低要求是什么,做成什么樣是好的課程設計。
2)課程設計任務。
教師因學生能力的差異性,教師給出難易程度不一的任務,供學生自主選擇,是被普遍采納的方法。教師任務講解不能講得太簡單,示范性、啟迪性地剖析與講解任務,分析設計要點,提示任務所需的知識,幫助學生判斷任務的難易程度及正確選擇任務。
3)設計內容。
實踐應用研究集中在基礎教育階段,高等教育階段研究較少 從時區軸線圖可以看出,高中物理、小學數學、高中數學等學科關于深度學習的思維能力研究較多,并從2012年延續至近期。在深度參與聚類內容下,有關高職學生學習方式的研究在2017年才略有。
該部分要講清楚整個課設的任務,引導學生遵循系統開發的方法進行課設工作,如數據結構的課程設計,需設計的內容有:
(1)問題分析和任務定義:充分分析和理解問題,明確問題要做什么?限制條件是什么?
(2)邏輯設計:根據問題描述中涉及的操作對象定義相應的數據類型,按照以數據結構為中心的原則劃分模塊,畫出模塊之間的調用關系圖。
(3)詳細設計:定義相應的存儲結構,寫出主要算法的偽代碼,并對數據結構和基本操作作出進一步求精。
(4)程序編碼:把詳細設計的結果進一步求精為程序設計語言程序。
(5)程序調試與測試:以增量的方式自底向上劃分模塊。調試正確后,認真整理源程序及其注釋,形成格式和風格良好的源程序清單和結果。
(6)結果分析:分析邏輯正確性,分析算法的時間、空間復雜性。
(7)編寫課程設計報告。
4)進度安排。
進度安排是設計任務時間上的執行序列。明確的進度安排,不僅進一步強調了課設工作內容,也給學生每天的工作確立了目標。說明要凸顯設計,引導學生以正確的步驟進行系統設計。例如1周的數據結構課程設計,任務進度表見表1。
5)報告要求。
具有撰寫設計報告或技術總結報告的能力,不僅是專業認證中明確提出的要求,也是學生必須具備的基本能力。要提高學生課設報告的質量,必須明確并仔細講解報告要求,報告要求見表2。
6)成績評定方法。
人的向好性,決定絕大多數學生會向好成績努力。課設開始,有必要講清成績的評定標準。
(1)及格:原創性少,系統邏輯正確,進度推進正常,報告合格。

表1 數據結構課程設計進度表

表2 報告內容及示例
(2)優秀:有創新,系統質量好,進度推進正常,報告優秀。
(3)不及格、中、良,在這兩者之間。
課設的主體是學生,但課設達不到教學目的,其責任主體則是教師。加強過程管理和過程監控,可以解決現在課程設計中的許多問題,也可以按專業認證標準要求的工程知識、問題分析、研究、設計與解決方案及工具使用等方面考量學生。
1)檢查內容。
系統開發需經過分析、設計、編碼、調試測試等過程,基于進度計劃(見表1),進行階段性成果檢查,引導學生按部就班地以規范的步驟進行,體會系統開發的流程。教師每天進行階段性成果檢查,最后進行匯總,掌握每個學生課程設計的進度。
2)匯總表。
一周課程設計的匯總表見表3。任務、完成1、完成2、完成3依次在課設的第2、3、4天前提交。教師在線布置任務作業,學生在線提交,教師每天早晨匯總后,到機房檢查、回饋和指導。

表3 進度檢查表
每日的填寫是每天工作的小結,促進學生主觀上盡力多做。
3)檢查對認證標準中要求的覆蓋。
階段性的檢查,促使學生用已學的知識分析、設計求解課設任務,不偷工減料。
通過加強課程設計的過程監督,可以保障課程設計覆蓋“工程教育認證12條基本要求”中的5條,即工程知識、問題分析、研究、設計與解決方案和使用現代工具。
(1)課設中,要求將相關的數學、自然科學、工程基礎和專業知識,用于問題建模、表達、算法設計;
(2)程序設計中,完全原創很少,查閱文獻必不可少,學生通過查閱文獻與已有的知識,設計方案;
(3)為驗證程序的邏輯正確和性能分析,需建立測試模型,對實驗結果進行正確性、復雜性分析;
(4)課設中,用到多種工具,用編程及調試工具創建系統,用文字編輯、排版及用圖工具撰寫報告。
有了階段性檢查,系統驗收工作中的問題可以減少許多,重點是通過系統演示,查看系統的性能、了解學生的創新性工作。
成績評定中,除了考慮任務難度與工作量、系統性能、學生的創新性工作與報告質量外,建議學生給出“自評分”。絕大多數學生對照成績標準,能根據自己的工作給出一個較“客觀”的分數。一方面讓學生知道,成績不是教師給的,是自己做出來的;另一方面,教師通過自評分,斷定該學生工作內容、態度與報告水準。
工程教育認證明確指出,課程設計是學生獲得實踐技能的途徑之一,可以培養學生的獨立思考能力、講述交流能力、規范文檔的撰寫能力,提高學生的積極性、創造性與團隊協作精神。課程設計覆蓋了工程標準中5項學生畢業要求,只有切實做好了,才能取得實效。
[1]劉永彬, 歐陽純萍, 陽小華, 等. 基于工程教育認證的應用型軟件人才培養模式探索[J]. 高教學刊, 2016(15): 62-64.
[2]中國工程教育認證協會秘書處. 工程教育認證工作指南(2016版)[EB/OL]. [2017-07-13]. https://tmpg.fjut.edu.cn/e5/1e/c4513a58654/page.htm.
[3]陳佑清. 論活動與發展之間的相關對應性[J]. 教育研究, 2005(2): 77-82.
[4]周雙娥, 胡方家. IT 專業課程設計質量存在問題及解決方案[J]. 計算機教育, 2014(7): 99-102.
[5]張震宇, 鄭玉珍,王子輝. 以專業認證為導向的課程教學模式改革[J]. 浙江科技學院學報, 2016, 28(3): 244-249.
[6]朱潔, 王江平, 仝茂海. 計算機網絡課程設計的項目驅動式教學改革[J]. 計算機教育,2013(17): 91-94.
[7]陳潔, 趙姝, 劉曉曼, 等. 計算機組成與體系結構課程設計的啟發式教學[J]. 計算機教育, 2015(13): 19-22.
[8]林耀進, 林夢雷. 軟件工程專業串聯式課程設計探索與實踐[J]. 南陽師范學院學報, 2015, 14(6): 73-75.