吳 勁,周 帆,王瑞錦,羅緒成
(電子科技大學 信息與軟件工程學院,四川 成都 610054)
在OBE(Outcomes-Based Education,成 果導向教育)模式中,教育者必須對學生畢業時應達到的能力及其水平有清楚的認知,然后尋求設計適宜的教育方法和手段來保證學生達到這些預期目標[1]。OBE理念從傳統的“以教師為中心”轉向“以學生為中心”,強調教學目標要先于教學內容,掌握學生現有的學習能力水平,圍繞實現學生畢業時應達到的能力和要求進行反向教學設計,教師循序漸進地進行“以學生為中心”的教學活動。
OBE工程教育模式是一項時間跨度長、牽涉面廣、改革縱深大的綜合教育改革,OBE不是對原有教學薄弱環節的縫縫補補,也不是在教學、課程或產學研教育中移入OBE的某個要素,而是以OBE蘊含的理念為指導,在充分借鑒、整合CDIO改革經驗的基礎上,對培養目標、課程內容、教學方法和教學評價進行變革[2]。
OBE設計思路如圖1所示,按照“反向”設計思路,首先確定專業人才培養目標,根據培養目標,細化到畢業要求;按照畢業要求,確定課程體系,再根據不同課程教學內容和知識、能力培養要求,確定課程教學方法。在有效保障的基礎上,通過多元評價來評價人才培養效果的達成情況,并在此基礎上,形成教學反饋與改進措施,指導培養目標、畢業要求、課程體系以及教學方式的調適,形成持續改進、動態調整的人才培養機制[3]。
培養目標(Program Objective,PO)包括3個具體方面:知識結構、能力結構和素質結構,知識結構包含PO1(具備自然科學知識)、PO2(具備專業基礎知識)、PO3(具備專業知識);能力結構包含PO4(獲取知識的能力)、PO5(應用知識的能力)、PO6(團隊協作及項目管理的能力);素質結構包含PO7(科學素養與職業道德)、PO8(人文素養和社會責任感)、PO9(創新意識和國際競爭力)。

圖1 OBE設計思路
以電子科技大學為例,軟件工程專業的畢業要求(Graduation Requirements,GR)分為了12條,每一條畢業要求又分解成幾個指標點。程序設計與算法基礎課程支持培養目標PO2和PO5,對應支持兩個畢業要求:GR1(具備較完整的軟件工程知識結構,能夠將數學、自然科學、專業知識用于解決復雜軟件系統問題)的指標點GR1.2(掌握軟件工程、計算機及相關的基礎知識,能將其應用于軟件工程中的系統架構、網絡通信、支撐平臺等問題);GR5(能夠針對復雜軟件系統,選擇與使用合適的開發環境、工具與技術標準,進行模擬和測試,并對輸出結果進行分析,得出相應的評估結論)的指標點GR5.2(能夠根據軟件系統的應用場景,選擇合適的開發環境、工具與技術標準進行軟件系統的開發)。
課程根據需要支撐的培養目標和指標點,確定課程目標(Curriculum Objective,CO):CO1,了解軟件工程、計算機的基本概念;CO2,掌握結構化程序設計方法;CO3,選擇合適的開發環境、工具,用C語言進行軟件系統的開發;CO4,訓練學生的邏輯思維能力,培養其嚴謹的思維方式和良好的程序設計風格。
按知識點把課程分成9個課程模塊(Curriculum Modular,CM):CM1,程序設計導論,了解計算機系統的基本構成,程序運行的基本原理,C語言的歷史和特點;CM2,掌握C語言的格式化輸入輸出方法;CM3,掌握C語言的表達式的使用方法;CM4,掌握程序的3種基本結構——順序結構、分支結構和循環結構;CM5,掌握C語言中的基本數據類型;CM6,掌握數組和結構這兩種數據類型,能夠應用這兩種數據類型來描述實際應用中的數據;掌握這兩種數據類型的成員訪問方法;CM7,正確理解指針的概念、掌握兩個運算符*和&的用法,熟練掌握指針與數組的關系,能運用指針解決實際問題;CM8,函數,掌握函數的定義和調用,領悟參數傳值和傳址的本質,學會使用模塊化程序設計解決問題;CM9,掌握字符串的用法,掌握字符串數組和字符串指針。
課程支撐的培養目標、畢業要求及其指標點與課程模塊的關系見表1,程序設計基礎課程模塊CM1、CM2、CM3、CM4、CM5支撐課程目標CO1、CO2,支撐畢業要求GR1的指標點GR1.2,支撐培養目標PO2;課程模塊CM6、CM7、CM8、CM9支撐課程目標CO3、CO4,支撐畢業要求GR5的指標點GR5.2,支撐培養目標PO5。

表1 課程支撐關系
OBE工程教育是一個持續改進的過程,它要求建立一種有效的持續改進機制,從而實現如下功能:能夠持續地改進培養目標,以保障其始終與內、外部需求相符合;能夠持續地改進畢業要求,以保障其始終與培養目標相符合;能夠持續地改進教學活動,以保障其始終與畢業要求相符合[4]。課程也在實踐中構建了良性教學質量的持續改進模式,從階段一的CDIO理念與課程的融合,過渡到階段二的打破課程壁壘、多課程深度融合。
對軟件工程專業學生而言,實踐動手能力更多地體現在上機利用程序設計語言解決軟件工程領域的實際問題,為了讓學生能盡快進入角色,需要解決如下幾方面的問題。
(1)理論與實踐聯系不夠緊密。先上理論課、后上機實踐的教學方式,對程序設計類課程而言,特別是對于經過題海戰術洗禮的大學新生而言,很容易讓他們把程序設計課程當成文科課程來學習,背語法、輕實踐。
(2)計算機和軟件知識體系的實踐性、實用性、探索性和趣味性在教學中沒有充分地體現出來。程序設計類語言種類繁多,但就其本質可分為面向過程、面向對象兩類,因此在課程設置上,開設面向過程的C語言程序設計作為入門課程,將面向對象的Java或C++課程作為項目訓練階段的進階課程。
這一階段的具體改革措施如下。
(1)課程針對的是零基礎的大學新生,擔負導論課的要求,引導新生對計算機系統和軟件系統有個初步的認知,引導其課前、課后的自我學習能力。
(2)通過直接在機房上課,講和練緊密結合,幫助初學者學會調試、運行程序,調試時能夠發現錯誤、糾正錯誤,快速提升學生編程能力。
(3)采用螺旋式的方式,先從最簡單的內容入手,在后續章節進行擴展講解,逐漸增加細節。強調軟件工程,著眼于如何運用C語言來處理程序設計過程中產生的問題,強調程序的易讀、可維護。
(4)建立以自動評測系統和實踐動手能力考核為主的多元化考核體系,程序設計課程的考核成績由3部分組成:①Online Judge平臺編程作業成績;②期末考試,題目類型強調學生讀程序、寫程序能力的考核;③綜合實驗成績。
(5)強調程序設計語言的工具特點,要求學生在后續專業課程學習中繼續上機實踐,設計與實現如數據結構、操作系統、計算機網絡等專業課程的內容。
(6)與工程項目相結合,特別是在程序設計的進階課程面向對象程序設計課程中,編寫相對大型的軟件系統,鼓勵學有余力的學生參加各類競賽,在實踐中提升編程能力。
傳統教育的課程教學內容和教學時數是依據教材確定的。按學科需求構建的專業知識結構,被課程割裂成一個個獨立的知識體系,并被固化在一本本“教材”之中[5]。OBE模式的核心就是以學生為中心,激發學生的主觀能動性,促使知識的內涵和外延不斷擴大,如何構建有效的知識圖譜,是教育工作一線的廣大教師需要認真思考的問題。
程序設計與算法基礎是計算導論、C語言程序設計、數據結構和算法基礎等課程內容的深度融合,從構建有效的知識圖譜的角度,打破課程壁壘,對原有課程進行整合,不是簡單、機械地課程內容堆積,而是系統性整合與深度優化。
第一學期開設程序設計與算法I:以程序設計基礎為主,承擔導論課程的任務,適當引入軟件工程、數據結構和基礎算法的內容。
第二學期開設程序設計與算法II:以數據結構與算法基礎為主線,培養學生的計算思維能力。
程序設計與算法基礎課程定位于計算機、軟件工程專業的大學新生,是引導學生建立計算思維方式的重要課程,因此采用“人工智能+教育”新模式,以學生為中心,通過在教學內容、教學手段、系統支撐等方面進行探索和實踐,可以構建基于“人工智能+教育”的以學生為中心的智慧學習生態系統。
該模式以學生為中心、以問題分析為導向,不是讓學生去單純學習語法規則,而是分析和理解為何會形成相應的規則,這些規則可以解決什么問題、不能解決什么問題,怎么基于規則、重組規則解決復雜工程問題。
構建智慧學習生態系統,實現人機合理的分工,將單調、重復的工作交給計算機系統,教師負責具有情感性、創造性的工作,教師通過對學生的學習效果相關數據信息進行采集、分析和評測,實施對學生的精準教學。
課程目標是普惠絕大多數學生,能夠使初期水平不夠的學生,在合理的知識圖譜導航下找到適合自己的學習方式。需要教師探索基于人工智能的新教學模式,重構教學流程,并運用人工智能開展教學過程監測、學情分析和學業水平診斷,建立基于大數據的多維度綜合性智能評價,精準評估教與學的績效,實現因材施教,進行“程序設計與算法基礎”課程“人工智能+教育”模式的探索與實踐。
從2018年秋季學期開始,筆者進行了課程融合后的“程序設計與算法基礎”第一輪實踐,指標點達成度評價依賴課程的達成度,課程的達成度依賴期末考試、平時作業和綜合實驗,其計算方法見表2—表4,筆者以最近一次課程的數據來說明計算方法。
為了強調實踐,期末考試的試題分三大類:①讀程序按要求寫結果;②讀程序補齊代碼(代碼填空);③按要求寫程序。表2是期末考試各個小題對應的課程模塊和課程目標的關系表,并根據相應分數計算出的期末考試達成度。

表2 期末考試評價

表3 平時作業評價

表4 綜合實驗評價
表3是平時作業評價表,對應了4組實驗,每組實驗又包含若干上機實驗題目,每組實驗對應一個課程目標。所有的上機實驗題目要求學生提交到電子科技大學卓越工程師實踐教育平臺的代碼在線測評系統中,由系統自動根據程序源碼判分,這部分內容允許學生在截止時間之前反復刷分,鼓勵學生積極上機練習實踐。
課程最后有一個綜合應用所學知識點和算法解決實際工程問題的綜合課程實驗,表4中計算了綜合實驗的達成度。
根據表2、表3和表4的內容,可以計算出課程達成度,課程達成度評價見表5。這次的計算模型與課程融合加強了上機實踐環節的考評,對學生的整體能力提升起到了促進作用。CO3指標全部由實踐環節(平時上機作業+綜合課程實驗)支撐,充分體現了新工科的思路,強調做中學。語法基礎部分的權重系數降低,綜合知識應用部分的權重系數升高,進一步鼓勵學生上機實踐。
基于OBE和新工科要求下的課程融合的需要,在原有的“C語言程序設計”課程內容和課程深度上進行了擴展,課程名稱改為“程序設計與算法基礎I”。表6是指標點達成度評價表,表中權重系數指本課程對某項指標點達成度(一個指標點的達成度通常由多門課程支撐)的貢獻度。與課程融合之前比較,語法基礎部分講授進度加快,跟不上進度的學生可以課后學習“程序設計基礎”MOOC課程,該課程在學堂在線與課程同步上線,支持本課程的混合教學模式的嘗試;增加了在線測評系統,平時作業全部提交到在線測評系統上,強化課后上機實驗,強調做中學;在課程和實驗中引導學生理解數據結構和基礎算法的初步應用。

表5 課程達成度評價

表6 指標點達成度評價
電子科技大學信息與軟件工程學院結合國家“卓越工程師教育培養計劃”,堅持以學生為中心、以創新求發展的人才培養理念,培養專業知識厚、綜合素質高、創新能力強、具有良好職業素養、擁有國際視野和社會競爭力強的工程型軟件人才。積極貫徹“學生中心、產出導向、持續改進”三大理念,主動對標《華盛頓協議》和中國工程教育認證標準要求,修訂培養目標、重組課程體系、深化課堂改革、明晰教師責任、健全評價機制、完善條件保障,著力建立持續改進的質量文化,使人才培養質量明顯提升。2016年軟件工程專業一次通過了中國工程教育專業認證協會的工程教育認證。
在OBE模式下,程序設計與算法基礎課程持續改進的第2階段探索與實踐才剛剛開始,課程融合后的第一輪實踐,從達成度計算的結果和學生的評教反饋可以看出效果良好,課程群將再接再厲,持續改進,對課程內容按OBE要求進一步深度融合。