朱皖寧 洪蕾

摘要:在當今新工科背景下,應用型本科更加重視基于面向產出的教學理念。大量工科專業的最終產出是綜合利用在大學中學習的全部知識,解決一個復雜工程問題。當前的應用型本科的培養方案是將解決復雜工程問題所需要的全部知識按照遞進的原則分成若干門課程進行教學。但是由于課程之間的承上啟下以及周期過長等原因,導致學生學到后面忘了前面,以至于到了最終綜合的階段無法真正地解決復雜工程問題。文章提出了使用系統性教學的培養方案,可以更加有效地提高學生的最終產出。
關鍵詞:應用型本科;系統性教學;本科生導師制;面向產出;工程教育認證
中圖分類號:G642 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2022)29-0178-00
1 背景及意義
高等教育是向社會輸送人才的最重要的教育階段之一,因此更加偏向培養實踐能力的應用型本科應運而生。而高等工程教育又是其中最重要的一部分[1]。當前的工程教育認證核心培養模式是面向學習產出的教育模式(Outcomes-based Education,簡稱OBE)。對于大量的工科類專業來說,最終的學習產出之一都是解決復雜工程問題的能力[2]。以軟件工程學科為例,最終評價學生畢業的重要標準之一是能否針對給定的課題分析、設計、構建并測試一個復雜IT系統。工程教育認證根據最終畢業要求將學生能力分解為十二條一級能力指標,根據能力指標點將能力層層分解,然后設計大量的課程分別支撐若干條指標點,最終可以支撐完整的畢業要求能力[3]。但是大量緊密相關的課程,在實際的教學中顯得支離破碎。例如軟件工程,大部分學生把相關內容背誦一遍就可以考很高的分數。在對這門課程不斷的教學改革中提出了要將課程實踐加入其中,但是又帶來了學習量過大,而課時量太少,無法完成的問題。數據庫、設計語言、網頁開發、J2EE、Java等課程的相關性極強,但是在每門課的理論或者實踐教學中都很難體現出這一點,例如數據庫的課程設計中只要求數據庫表的設計,而界面開發的課程中又不要求從數據庫中取數據。這就使得學生在學習中缺乏對完整學習體系的認識。一些應用型大學為了解決這一問題,在每學年結束時開一門綜合課程設計,試圖讓學生將所有學過的內容融會貫通,但是教學實踐表明此時學生已經忘記了大量“死記硬背”的課程內容。如何能夠讓學生融會貫通大學期間全部的課程,并能夠合理、綜合地運用所學解決實際的復雜工程問題就成為急需解決的問題。
為了解決這一問題,大量的教師和學者都提出了一系列的解決方案。周天源等提出了將案例教學的模式融入翻轉課堂中,提高了學生學習的興趣并提升了學生解決復雜工程問題的能力[4]。以布魯姆模型構建教學設計,并創建基于OBE的課程評價體系[5]。韋衛等還提出了將畢業設計改為Capstone課程,以提高學生的學習、分析、創新和溝通等能力[6]。鞠小林等提出強化校企合作,使用“3+1”式教學模式,即最后一年在企業進行大量的實習,以提高學生的實踐能力[7]。但是以上的教學模式都很難解決課程與課程間承上啟下的問題,以及前期大量的課程學而不用,到最后一年使用時又得重新學習的問題。因此本文提出使用系統性教學的模式,可以有效地解決以上問題。
2 系統性教學性探索
2.1 系統性教學的定義
系統性教學的教學目標為:讓學生通過系統性教學,將所有所學課程融會貫通,對復雜工程實踐的認識站在一個比較高的位置并且具備實際動手能力。系統性教學即是指將多門相關的課程進行融合,以解決復雜問題為目標,任務驅動為主要教學手段,分組討論加大量自學為教學模式,最終提高學生的自學能力、分析能力、調研能力和合作溝通能力。對于軟件工程學科來說,系統性教學是非常有必要性的,但是實施非常困難。難點在于:時間短暫卻要做比較大型的項目;需要綜合性的知識,對學生知識儲備要求高;需要學生有極高的學習熱情等。
2.2 系統性教學實施方案
要進行系統性教學,首先要讓學生清楚地理解每門課在完整的項目開發中起到的作用。從軟件分析的角度來說,要做到這一點就要自頂向下逐步分析,也就是說課程的學習應該是先從一個完整的項目開始,逐步學習到項目中用到的一個一個知識點。顯然這一學習路線和當前大學開設課程的順序是完全相反的,而且直接讓零基礎的學生進行完整項目實踐是一件幾乎不可能完成的事。因此首先要將能力分為遞進的若干級別,以下以軟件工程專業為例:
第一學年結束時,學生應當可以在需求確定、設計完備的前提下,獨立開發一個完整的小型系統。此系統應包含前端、后端、數據庫的一切代碼。
第二學年結束時,學生應當可以對一個課題進行調研、分析、設計、構建代碼、測試并且可以給出完整的開發文檔。
第三學年結束時,學生應當可以就一個復雜的課題進行抽象的建模,做出創新的解決方案,并以團隊的形式分工合作,最終實現全部的系統。
第四學年,學生進行畢業設計,使用之前所學解決復雜工程問題。
如圖1所示,在每一學期中,除公共基礎課以外只開設2-3門遞進的課程,即一段時間只有一門融合性的課,其課程目標為下一門課的前置條件。例如在大一第一學期開設程序開發初級和程序開發中級課程。每一門課程同樣分解為若干遞進式的課程目標,例如程序開發初級:1)能夠分析對比順序、分支、循環三大結構的簡單算法優劣,可以定量地對算法進行分析,并進行代碼的構建;2)能夠分析問題,將問題分解為若干子問題,并進行分別代碼構建和組合;3)能夠分析線性表問題,對比不同算法處理線性表問題的優劣,并構建代碼實現。容易發現此課程是由原有的高級語言編程和算法與數據結構課程融合而成。算法是程序的核心,數據結構是數據組織的方法,編程方法是具體實現的技術,三者本來就是缺一不可的。因此可以在課程里,將所有的教學內容分解成若干個課題,借由課題逐步深入地進行系統性的教學。
2.3教學方法
以程序開發初級課程為例介紹教學方法。為了能夠快速地讓學生動手,教學方法摒棄了以往的先教半個學期理論,然后上實踐課的方案。核心思想是重視實踐、強調自學、放棄復雜的和重復的語法知識,使用最小語法集教學。
2.3.1重視實踐,強調自學
在長期的教學實踐中我們發現,學生在語言類課程考核優秀的前提下,仍然有可能無法編程。其重要的原因就在于以往的語言類課程重視語法教學,幾乎不講算法和程序設計的思路,理論和實踐嚴重割裂。在教學中我們同樣發現學生在沒有基礎的前提下,完全有能力學會基礎的語法知識。因此在不進行任何語法理論教學的基礎上,可以讓學生模仿已有代碼直接開始寫程序。強調編程思想,程序設計方法和算法,直接從一個學生感興趣的問題開始,例如:若干個數比大小,讓學生在規定時間內說出他認為比較次數最少的方法;畫*表示的三角形等。通過具體問題直接開始寫程序,讓學生仿造程序寫類似的程序,然后再說明每個關鍵詞的含義。總的來說,就是全部的語法知識由學生自學,任務驅動式教學,先拋出問題再學習問題解決的方法,再引申到更加深入的問題上交由學生思考。顯然在這個教學的過程中,問題的設計是最關鍵的點。
2.3.2最小語法集教學
在以往的語言類課程中,常常有為了難而難的語法問題,例如求解y=++x+x++這一類的問題。但是在實際的工程實踐中,為了可讀性往往不會使用特別復雜的語法技巧,因此可以考慮基本不講任何復雜語法技巧,并且不進行語法知識考核,要求學生用最簡單的語句書寫程序,務必簡單清晰,所有人都看得懂。并且一個實際的項目案例中可能只包含了少量常用的語法知識。如果可以單獨將這常用的語法先進行教學,就可以讓學生以最快的速度開始項目實踐。以往的教學活動認為,必須要系統地學習一門語言的所有語法知識,并且弄清楚這些語法的各種變化才能夠寫程序,例如:在循環語句的學習中,C語言分為while、do while、for循環,在以往的教學中不僅討論了3種循環的語法,使用方法,區別,還要討論這三種循環是如何互相變換的。根據最小語法集理論,循環是寫程序必要的結構,但是以上三種語法結構只需要會一種就基本可以寫出任意復雜的循環語句,因此讓學生按照自己的喜好挑選一種進行學習并直接開始寫程序,在隨后的實踐課程中,學生再慢慢地根據實際需求查漏補缺。通過這種模式,只需要學習以往課程中70%的章節,每一章只需要學習1/3的語法內容就足以讓學生開始寫程序,并且因為不考查語法知識,大家都使用較為簡單的寫法,加快了學習的進程。所以才有可能在較短的時間里就能寫出需要的代碼。總結為不重視語法,重視實際的編程能力,在不影響程序運行效率的基礎上,代碼要盡可能地簡單,語法要盡可能地少。
2.4考核方式
在以往的語言類課程中,過于強調語法考核忽略程序設計考核。例如計算機等級考試。過于強調小程序算法的考核而忽略完整項目的考核,例如PAT考試。由于系統性教學方式采用了最小語法集的教學方式,非常強調實現需求的能力,最重要的是考核整體項目完成的能力,包括從調研開始一系列文檔的書寫,分析,設計以及項目實現的能力,應該以項目完成度作為考核的標準。例如:第一學年最后的課程學生應提交帶有圖形界面和數據庫的完整系統;第二學年最后的課程學生應提交帶有輕量級架構的Web開發或移動開發系統,需要有完整的需求分析、系統設計和測試文檔。總的來說,即是不重視理論考試,重點考察實踐能力,尤其是做完整項目的能力。
2.5學生助教制度
在新的教學模式下,由于考核多,而且多為系統開發,考察的是學生的能力而不是簡單的語法知識,所以考核-反饋環節就需要消耗老師大量的時間。如果不能提高師生比例,以上的考核環節就難以完成。考慮到教師不一定都有研究生輔助教學,本文提出可以采用高年級同學助教低年級同學的教學方案,具體方法:
1)在高年級同學中遴選1/10比例的優秀同學,在低年級課程里充當助教的工作,并給予一定的公共服務分數。
2)將低年級同學分組,每組分配一名高年級同學作為學生助教。
3)對于客觀考核的課程,例如C語言或者Java語言課可以采用PTA等在線編程考試系統,由學生助教對低年級學生進行答疑。
4)對于主觀考核的課程,例如軟件工程,由學生助教對低年級學生進行一對一答辯。
5) 學生助教將所有的考核結果定期做成報告匯報給任課教師,以明確課程當前的教學狀況。任課教師可以根據考核結果及時調整教學策略,以達到教學-考核-改進的閉環效果。
3 系統性教學實踐成果
由于大一和大二階段公共課程較多,所以先在大三試點進行了教學實踐。在2015年時,金陵科技學院軟件工程學院開始啟動卓越工程師計劃,在大二結束的階段遴選部分優秀的學生組成卓越班,試點進行系統性教學。時至今日,卓越班著眼于信創方向,每個學期將專業課融合為2門大型的課程。經過統計,卓越班畢業生的平均工資顯著高于其他班級。
2020年時,通過協同育人教改項目,創建了基于東軟平臺的系統性教學虛擬班,在大一入學時就進行報名遴選,迄今為止已申請多項軟著,參加多項學科競賽并獲獎。在2022年度江蘇省計算機設計大賽中,參賽的5組同學均獲獎,并有一組獲得特等獎。
2021年時,在大一上學期的C語言課程中實踐了學生助教制度。遴選了15名大三同學對大一同學進行答疑。除答疑外,還試點了分級教學模式。即根據在線考核結果,將學生分為多組虛擬班,對不同水平的同學采用不同的教學模式。對于成績較好的同學主要教授算法與數據結構,對于成績一般的同學進行編程的強化訓練,對于成績較差的同學重點輔導基礎語法和簡單的編程思想,以達到因材施教的目的。從實際教學結果來看,本屆同學的成績普遍高于往屆。
4 總結
本文提出的系統性教學模式主要是將多門分別開設的課程有機融合成以解決復雜工程問題為目標的綜合性課程,根據深度和難度,將畢業要求分解為大量遞進的教學目標。每個教學目標都以完成實踐項目為考核方式。通過任務驅動的教學模式引發學生對學習的興趣,使用最小語法集進行快速訓練,重點考核系統設計、分析、編程和測試能力而不是基礎語法,通過采用大量的學生助教提高師生比,在教學實踐中得到了比較好的教學成果。
參考文獻:
[1] 王瑞平,孫高飛.工程教育認證背景下“軟件工程”課程改革探索[J].科技與創新,2021(14):145-146.
[2] 趙勝楠.工程教育認證背景下工科專業制訂人才培養方案需求調研——以軟件工程為例[J].科技風,2022(3):43-45.
[3] 肖飛,張海清,李代偉,等.工業4.0環境下軟件工程專業本科畢業生就業能力量化評價方法及實證研究[J].計算機教育,2021(11):176-180.
[4] 周天源,陳茂華,張占強,等.工程教育認證下基于翻轉課堂混合教學模式的探索和應用——以軟件工程課程為例[J].輕工科技,2021,37(3):177-178.
[5] 楊毅剛,孟斌,王偉楠.基于OBE模式的技術創新能力培養[J].高等工程教育研究,2015(6):24-30.
[6] 韋未,張偉鋒,劉遠,等.學分制及capstone課程目標下實施導師制的探索——以華南農業大學水利水電工程專業為例[J].高教學刊,2021,7(12):97-100.
[7] 鞠小林,蔣崢崢,陳翔,等.專業認證背景下軟件工程專業本科教育重構思考[J].計算機教育,2021(9):81-85.
【通聯編輯:王力】