李瑞生
(甘肅政法大學<公安技術學院>,甘肅 蘭州 730070)
教育部高教司吳巖司長提出了“兩性一度”的“金課”建設標準,即高階性、創(chuàng)新性和挑戰(zhàn)度。其中,高階性就是知識、能力、素質有機融合,培養(yǎng)學生解決復雜問題的綜合能力和高級思維。創(chuàng)新性體現在課程內容有前沿性和時代性; 教學形式體現先進性和互動性,不是滿堂灌;學習結果具有探究性和個性化。 挑戰(zhàn)度是指課程一定要有一定難度, 需要學生和老師一起,跳一跳才能夠得著[1]。
程序設計類課程是高等院校工科類專業(yè),尤其是計算機和信息類相關專業(yè)課程的重要組成部分。在人工智能、大數據、云計算等快速發(fā)展和深度普及應用的背景下,程序設計類課程在工科類專業(yè)人才培養(yǎng)中的地位和作用更加重要。 對照“金課”標準,程序設計類課程教學中需改進的方面:(1) 課程體系設計中對學生職業(yè)能力需求考慮不充分,或不能及時跟蹤產業(yè)新需求、 編程技術和應用領域的新變化調整課程設置。(2)按照教材章節(jié)化的編排線性地組織教學內容,教學中的問題(案例)往往僅為驗證編程語法而設計,題目較簡單,與實際應用結合不夠,而且大都具有“良構性”,而源于實際的應用問題往往具有“非良構性”。當學生在遇到新問題時,不能夠有效綜合所學程序設計知識和技能創(chuàng)新性地解決問題。 (3)教學方法上還未徹底實現從“教得好”到“學得好”的轉變。 對學生“拔高性”的創(chuàng)新能力培養(yǎng)不夠。 長期以來,導致學生學習積極性、主動性不高和教學質量降低。近年來,運用基于學習產出的教育(Outcomes-Based Education ,OBE) 理念、 基于問題或案例學習 (Problem-Based learning 或 Project -Based Learning ,PBL)方法的教育教學改革研究和實踐成為熱點[2-3]。
運用OBE 理念和PBL 方法, 從程序設計類課程體系構建、教學方法、學生創(chuàng)新能力培養(yǎng)、教學保障與教學效果評價等方面展開論述,以期建設程序設計類“金課”。
OBE 教育理念自20 世紀80 年代初由美國學者Spady 率先提出后, 很快為教育學界所高度重視和普遍認可[3-4]。OBE 理念倡導結果導向的人才培養(yǎng)。 其中的“結果”應以學生學習課程后對該專業(yè)人才培養(yǎng)目標的達成度和對學生職業(yè)能力的貢獻度來衡量。
對于程序設計類課程體系構建,學校要深入不同專業(yè)的用人單位做深入調研,考察該專業(yè)實務領域對學生程序設計和軟件開發(fā)相關的職業(yè)能力具體需求和典型應用場景,來逆向決定課程體系組成、各課程占比、側重點、課程間的前后銜接關系等;在持續(xù)調研中, 逐漸積累和形成具體課程的實際應用案例庫,便于PBL 教學實施。
2018 年1 月 《普通高等學校本科專業(yè)類教學質量國家標準》頒布,程序設計類課程體系與課程內容側重點設置應在遵循《國標》的基礎上,由學生就業(yè)實務部門專家如資深的軟件研發(fā)工程師、專業(yè)教學指導委員會專家、資深教師團隊、已就業(yè)并具備工作經驗的學生(反饋已學的課程體系能否滿足職業(yè)需求并提出改進意見)共同商定,切實實現課程體系的職業(yè)目標導向和關注學生學習訴求, 讓課程體系設置科學、合理、面向應用實際。
程序設計類課程的設置應緊隨應用需求變化而不斷拓展更新、靈活調整,充分體現先進性和前沿性。根據不同專業(yè)學生職業(yè)能力需求和學生就業(yè)意向,在針對高年級學生開設的專業(yè)拓展課和方向課中靈活增加如嵌入式開發(fā)、Android 應用開發(fā)、Python 程序設計、R 語言數據分析、MATLAB 科學計算與程序設計、安全編程技術等,滿足學生多層次、多領域的程序設計和軟件開發(fā)學習需求。
課程設置中還應考慮課程的體系性,并給學生呈現清晰的學習路線如按“C——>Java SE——>Java EE(或 Java ME 或 Android 開發(fā))” 的路線深入學習某一個系列的程序設計和軟件開發(fā)方法。在課程教學大綱和教學實施過程中,應該向學生介紹“這是一門怎樣的課程,它在專業(yè)中處于什么樣的地位,通過這門課程學習,能夠學到什么和用在什么地方”等。對某門課程的前導、后繼課程做出詳細說明[5]。
PBL 教學就是要緊緊圍繞學生職業(yè)能力需求中的實際問題 (案例) 組織教學內容和開展教學活動。PBL 的關鍵在于問題或案例的質量,PBL 中的問題或案例需要具備真實性、復雜性、非良構性等特點[6-7]。PBL 中的問題或案例不是傳統(tǒng)意義上為驗證理論知識點的例題,而是源于學生職業(yè)能力需求中的實際應用問題及其被分解后得到的子問題。基于高質量的問題(案例)驅動,有利于讓教學內容“實起來”;非良構性的實際應用問題和能夠緊密聯(lián)系產業(yè)前沿的問題具有難度、深度和挑戰(zhàn)度。 以這些問題的解決方法探索和實踐開展教學活動,會促使師生雙方都付出更大努力,讓教師“強起來”,學生“忙起來”;在解決這些問題的過程中,會讓學生具有成就感和頂峰體驗,也更有利于學生創(chuàng)新思維和能力的培養(yǎng);PBL 中的案例源于學生職業(yè)實務中, 從而使得學生更加明確就業(yè)方向,充分激發(fā)學生學習興趣,調動學生學習自主性和內驅力,提高就業(yè)競爭力。
程序設計類課程旨在系統(tǒng)培養(yǎng)學生的計算思維能力,能夠進行問題分析、問題抽象與建模、算法設計、編程解決問題的能力等。從軟件工程的角度看,軟件系統(tǒng)開發(fā)需要經過“需求分析、系統(tǒng)概要和詳細設計、系統(tǒng)實現、系統(tǒng)測試與維護”等環(huán)節(jié);從程序設計方法來看,復雜問題的求解應采用“化整為零,分而治之”的模塊化思想。借鑒軟件工程和程序設計的“模塊化”思想,在教學設計和實施過程中, 將典型的實際軟件應用系統(tǒng)分解為模塊。按照模塊組織所需的知識點和技能點,形成PBL 學習和編程實踐單元。 由于每個模塊的解決都會涉及多個知識點和技能點, 且這些知識點和技能點不是按照傳統(tǒng)的教材章節(jié)次序編排的, 因此有利于學生以問題解決為中心, 將所學程序設計知識和技能網絡化。隨著課程推進,將已經完成的各個軟件模塊逐漸進行組裝,形成完整的軟件應用系統(tǒng)。
翻轉課堂教學模式有利于學生由被動學習轉為主動學習,克服傳統(tǒng)教學“滿堂灌”,以及學生由于缺乏充分預習而與教師在課堂上思維不同步等的缺陷。將學生按3~5 人結為一個學習小組,便于課堂上開展討論和實現互助學習,小組成員輪流擔任組長,協(xié)助教師督查小組成員學習進度和匯總學習難點等。
課程資源建設是翻轉課堂實施的前提。這些資源包括基于學生程序與軟件設計職業(yè)能力需求分析的教學案例庫、 以PBL 組織的知識和技能單元學習素材、教學短視頻(包括案例導入、知識點講解、編程演示)、學習任務書等。學生按照教師布置的學習任務在課前自主學習和完成編程實踐任務。各小組組長匯總本小組成員學習和實踐中的難點, 教師梳理這些難點;課堂上,教師針對普遍難點問題進行重點講解和編程演示,對于個別難點,則通過學習小組內或小組間交流和互相講解、操作演示的方法解決。 教師對學生課前學習和實踐任務完成情況進行檢查、點評和總結,提出復雜度略高于本節(jié)學習任務的問題(如源于程序設計競賽的問題),學生以學習小組為單位,在教師啟發(fā)下分析該問題、開展討論、得出解決方案并進行編程實現;課后,學生繼續(xù)完成課堂上的較難問題的編程實現及教師布置的其他編程實踐任務,完成下一個學習和實踐任務等。每個PBL 單元學習任務結束后,需要對學生進行PBL 單元考核。
實驗教學中,學生根據實驗任務書要求,在每次實驗課前獨立(或小組協(xié)作)完成所有實驗內容,記錄實驗過程和結果,記錄難點問題;實驗課堂上,教師進行普遍實驗難點演示和講解,對于個別難點,教師進行個別輔導,學生繼續(xù)完成實驗難點部分并做詳細的實驗記錄;實驗課后,學生分析和總結本次實驗,提出改進方法,撰寫實驗報告。
美國學者埃德加.戴爾(Edgar Dale)提出的“學習金字塔”(Cone of Learning)理論顯示了采用不同的學習方式,學習者在兩周以后還能記住內容的多少(平均學習保持率)。在該理論中,“討論”、“實踐”和“教授給他人”的學習方式被認為是主動學習方式[9],其平均學習保持率高于被動學習方式。 其中,“教授給他人”的學習方式平均學習保持率為90%。在翻轉課堂模式下,更有利于在課堂中預留出更多時間讓學生進行討論和講解。如教師安排不同學習小組成員分別演示講解對同一問題的不同程序設計與實現方法,以程序實現中的難點、算法效率、是否采用了某種面向對象編程模式、 是否運用了編程思想 (如MVC、ORMapping等)、是否考慮了編程中的安全因素等為主題,組織學生展開討論并得出結論。
一方面,PBL 教學案例源于實際應用問題, 這些問題的解決本身具有挑戰(zhàn)性。 教師在教學活動中,引導學生查閱和學習大量的產業(yè)、學科前沿研究成果和技術,通過師生共同研討、學生獨立或協(xié)作實踐,不斷解決新問題、攻克難問題,可以在課程教學過程中幫助學生逐漸形成創(chuàng)新意識、思維和方法。
另一方面,還需通過軟件項目開發(fā)與學科競賽等“拔高性”教學環(huán)節(jié),持續(xù)推動在育人的全過程、全環(huán)節(jié)中提升學生創(chuàng)新能力的不斷提升[9]。
遵循OBE 理念,以學生未來職業(yè)能力、探索研究能力和創(chuàng)新能力培養(yǎng)為目標,在教師團隊和聘請的軟件研發(fā)企業(yè)工程師(兼任教師)的指導下,組建學生軟件開發(fā)團隊。項目來源可以是教師指導團隊負責承接的軟件開發(fā)項目,教師和研究生科研課題的軟件設計任務, 參與協(xié)同育人的軟件研發(fā)企業(yè)提供的項目,大學生創(chuàng)新創(chuàng)業(yè)項目子問題,大學生程序與軟件設計競賽作品, 開源軟件資源的二次開發(fā)如MATLAB 中各類工具箱、各類智能算法工具包的二次開發(fā)等。 項目來源的多樣性可以促進學生進行跨學科和專業(yè)知識的融合學習,進行多層次(純軟件系統(tǒng)開發(fā)、科學計算、結合人工智能、大數據分析、云計算等新應用領域)的程序或軟件開發(fā),為學生將來就業(yè)或深造提供更好的編程和軟件開發(fā)能力支持。
在軟件項目實施中,給學生劃分角色,如“項目經理”“系統(tǒng)架構師”“系統(tǒng)分析師”“程序員”等。 按照軟件工程方法,讓學生團隊從軟件項目的開發(fā)背景和需求分析起,完成項目概要與詳細設計、算法設計、安全編程設計、數據庫設計、編程實現、系統(tǒng)測試與文檔編寫、系統(tǒng)維護與優(yōu)化等軟件全生命周期的任務。
由教師團隊和聘請的軟件研發(fā)企業(yè)工程師定期以項目開發(fā)培訓和專題報告形式輔導學生;形成研究生、高年級學生帶動低年級學生的“傳、幫、帶”機制。團隊成員中高年級學生給低年級學生進行成果講解展示和項目開發(fā)培訓。
通過軟件項目開發(fā)訓練和實施,教師團隊引導學生追蹤軟件研發(fā)領域新需求、新成果、新技術,鍛煉學生發(fā)現、分析和解決新問題的能力,提升學生團隊協(xié)作、溝通組織能力、創(chuàng)新思維和實踐能力。
目前, 程序與軟件設計類競賽包括ACM 國際大學生程序設計競賽、“中國軟件杯”大學生軟件設計大賽、“藍橋杯” 全國軟件和信息技術專業(yè)人才大賽等;大學生創(chuàng)新創(chuàng)業(yè)類競賽如“互聯(lián)網+”大學生創(chuàng)新創(chuàng)業(yè)大賽、“‘創(chuàng)青春’全國大學生創(chuàng)業(yè)大賽”“挑戰(zhàn)杯”全國大學生課外學術科技作品競賽等;綜合類競賽如全國大學生數學建模競賽、機器人競賽、信息安全競賽等。各類競賽共同特點是題目背景源于生產生活實際,具有“前沿性、綜合性、復雜性”特點。通過組織學生進行這些競賽的籌備、訓練、參賽和競賽成果推廣等活動,可以進一步拓展學生學科視野及提升創(chuàng)新能力。近年來,我校學生在此類競賽中獲得較好成績。
將學生軟件項目開發(fā)以及學科競賽中取得的成果進行整理和系統(tǒng)化,形成案例庫,并將這些案例進行分解和模塊化,融入課程教學內容中,促進了創(chuàng)新創(chuàng)業(yè)與專業(yè)課程教育教學的融合。
鼓勵學生用“路演”方式推廣開發(fā)成果。讓學生在校園、校外、網絡平臺對團隊或自己的軟件開發(fā)及創(chuàng)新實踐成果進行演示、推介,或開展相關經驗分享及科普活動等。 一方面,可以鍛煉學生表達、推介能力;另一方面,有利于學生以后開展相關創(chuàng)業(yè)活動。
高校與知名軟件研發(fā)及教育培訓企業(yè)建立長期協(xié)同育人合作關系,是程序類設計課程能夠實施OBE和PBL 教學的基礎保障條件。 第一,高校通過在企業(yè)開展調研,才能夠準確把握軟件產業(yè)前沿發(fā)展現狀和趨勢,確保對學生職業(yè)能力的準確研判。 第二,“走出去”和“請進來”是提高師資質量的辦法。 “走出去”就是要求目前承擔專業(yè)教學任務的教師到有合作關系的軟件研發(fā)企業(yè)、用人單位調研和掛職,參與軟件研發(fā)等任務,獲取最新地對學生職業(yè)能力的需求和提升教學水平;“請進來” 就是要改革現有師資隊伍組成,聘請軟件工程師和實務人員作為兼職教師,承擔某門課程中部分知識單元的講授和實踐教學任務,定期開展講座,指導學生課外實踐。 第三,遵循《普通高等學校本科專業(yè)類教學質量國家標準》, 在專業(yè)教學指導委員會指導下,由資深專業(yè)教師和軟件研發(fā)企業(yè)工程師聯(lián)合編寫滿足OBE 和PBL 實施的高質量教材——緊緊圍繞學生職業(yè)能力培養(yǎng)需求,體現問題(案例)驅動并定期更新, 最大限度地解決學生所學內容陳舊、與實際需求脫節(jié)的問題。 第四,在企業(yè)中建立學生專業(yè)見習、實習基地。學生通過專業(yè)見習和實習,可以進一步提升職業(yè)素養(yǎng)和能力。
近年來,教育部產學合作協(xié)同育人項目中的實踐條件和實踐基地建設、 教學內容和課程體系改革、創(chuàng)新創(chuàng)業(yè)教育改革項目等子項目的實施,給高校與企業(yè)合作與聯(lián)合培養(yǎng)人才提供了便利和保障。在改善實驗條件和平臺方面,借助企業(yè)技術優(yōu)勢,引進或聯(lián)合開發(fā)程序設計和軟件開發(fā)教學案例庫、在線編程測試系統(tǒng)、程序設計訓練系統(tǒng)等。
程序設計類課程考核由學生課程學習與編程實踐(課前、課中、課后)表現情況+PBL 學習單元考核+期末課程設計考核 (源于OBE 學生職業(yè)能力需求分析的、具有實際應用背景的程序或軟件設計題目)+學生創(chuàng)新實踐(參與課程相關的軟件項目開發(fā)、專業(yè)學科競賽、職業(yè)資格認證)等部分組成,合理確定各部分的成績占比,使得課程考核更具信度和效度,對學生學習質量評價更全面和準確。
以學生課程考核中反映出的問題, 學生的反饋(在校學生和畢業(yè)生對課程的滿意度及建議)、用人單位對人才的滿意度及建議為依據, 形成 “評價—反饋—改進”的閉環(huán),持續(xù)提高課程教學質量。
不斷促進教學和人才培養(yǎng)質量提高是教學改革的永恒主題, 課程教學改革則是實現這一目標的基礎。 在信息化和智能化高度發(fā)展和深度應用的今天,程序設計類課程在工科專業(yè)人才培養(yǎng)課程體系中的地位和作用更加重要。 緊密結合學生職業(yè)能力需求,運用適合程序設計類課程特點的先進教育教學理念和方法,將其貫徹落實到課程教學和人才培養(yǎng)的全過程、全環(huán)節(jié)中并持續(xù)改進,建成“金課”和一流課程,為促進建成一流專業(yè)和培養(yǎng)一流人才做出應有的貢獻。