劉振華,林傳文,林文海,池凌鴻
(1.合肥學院人工智能與大數(shù)據(jù)學院,合肥 230601;2.合肥學院能源材料與化工學院,合肥 230601)
Java語言是軟件工程行業(yè)最常用的語言,據(jù)統(tǒng)計80%的軟件企業(yè)以Java為主要開發(fā)語言。為了培養(yǎng)Java工程師,多數(shù)高校均開設了Java課程群,一般包括Java程序語言、Java Web、JSP編程、Android移動應用開發(fā)、Java EE,而Java語言是該課程群的核心基礎。實踐教學是Java課程的重要環(huán)節(jié),直接影響學生的實踐能力、工程化素養(yǎng)和就業(yè)水平。隨著技術進步和軟件工程化的發(fā)展,傳統(tǒng)教學模式已經(jīng)難以適應生產力的發(fā)展需求,學校和企業(yè)之間的鴻溝越來越明顯,加上國家政策適時導向,極大推動了Java教學改革。雖然新的教學理念和理論已基本形成,但由于傳統(tǒng)教學模式深入人心,加上師資等客觀條件受限,不少舊的教學體制和政策仍在繼續(xù)。因此新的教學模式和方法還處于探索階段,尚未定型。
趙炬明[1]在《論新三中心:概念與歷史—美國SC本科教學改革研究之一》一文中以創(chuàng)新的意識提出了SC(Student-centered)改革的三個核心觀點:以學生發(fā)展為中心、以學生學習為中心、以學習效果為中心,稱為“新三中心”[2],并在2018年進一步完善了這一理論。近年來,隨著工程教育認證、一流課程、金課等對教學改革的推進,涌現(xiàn)了MOOC、翻轉課堂、興趣激發(fā)、項目牽引、過程評價、結果導向、持續(xù)改進等諸多新型教學模式、理念和措施,總體上正是由“老三中心”向“新三中心”的轉變。
近年來,Java教學改革的研究雖然都在有意或無意圍繞學生學習過程、學習效果和學生發(fā)展的“新三中心”理論開展,但大多沒有真正從“新三中心”理念出發(fā)進行系統(tǒng)的思考和設計,其改革存在深度不足、可操作性差等問題。本文從“新三中心”思想出發(fā),以培養(yǎng)學生工程化能力為導向,分析學生和工程師之間的角色差異,提出了理論和實踐混合式教學模式,以客觀教學實踐為基礎,給出了具體可行的教學方案。
綜觀已有相關研究,基本上都是從技術手段、教學理念、教學模式、教學方法、項目實踐、組織形式、評價機制等多個方面提出實踐教學改革或改進的方法,但多數(shù)研究僅給出一些新的理念而無具體的實現(xiàn)方法,或者方法則需要投入巨大的人力物力,在當前條件下并不可行。較具啟發(fā)價值的代表性成果有以下幾個。
郭艷燕[3]提出基于TPACK 模型的程序設計實驗課程混合式教學改革,分析了傳統(tǒng)教學中Java實驗課存在課時不足、定位不準、形式單一、反饋不足、評價簡單等問題,提出了有關在線教學、實驗題型設計、實驗教學設計、評價方法等指導性意見。但其偏向理論和原則設計,沒有提供具體操作方法。
林菲等[4]認為以ACM比賽為基礎的實踐訓練有較大的局限性,難以培養(yǎng)學生解決工程問題的能力,并提出了以項目為基礎的“六元融合”實驗教學改革,即“項目引領—翻轉教學—個性培養(yǎng)—任務驅動—結對編程—過程考核”融合教學,利用MOOC、項目驅動、組隊實踐等方法提升實踐能力,取得良好的效果。
諶衛(wèi)軍[5]提出“以學生為中心”“以編程思想和實踐訓練為重點”的授課理念,結合教學實際,具體闡述“重思想、重實踐”的教學理念,分析了Java教學中的重點、難點,設計了具有趣味性的實踐項目,針對Java實踐教學設計、實踐和課后評價給出具體方法和示例,對當前教學改革較具啟示性。
李東明等[6]提出通過建立項目案例庫、建立開放實驗課題、開放實驗平臺、改革考核制度等方法激發(fā)學生學習興趣,提升學生實踐能力,取得了較好的效果。
索望等[7]、姜大志等[8]基于CDIO模式開展探索了Java教學改革,分析了當前教學中存在的目標不清晰、項目案例設計不合理、教學方式單一、師生缺乏溝通等問題,提出機房授課,采用完整的工程項目案例實踐、強化過程考核等改革方向,但具體的設計不清晰。
丁振凡等[9]提倡在教學和實踐中啟迪學生思考、反思,通過培養(yǎng)學生計算思維提升實踐能力,通過網(wǎng)絡化教學手段增強師生溝通,具有一定的效果。
張義[10]對比了安徽工程大學與美國UB(University of Bridgeport)大學的Java教學的差異,美國大學特點是教學師資投入大、嚴格小班教學、課堂以討論和答辯為主,實踐難度和強度兼?zhèn)?,考核偏重于過程,其教學理論更接近MOOC和翻轉課堂,對我國程序設計語言教學有非常好的借鑒意義。
馬瑞敏[11]提出以項目驅動,采用“分階段漸近式”的實驗教學法,分層次設計實驗項目,逐步提升項目復雜度,同時建立系級大學生創(chuàng)新創(chuàng)業(yè)實驗基地,為學生提供實踐環(huán)境。
梁春燕等[12]基于學習共同體理念開展了引導式教學設計,希望通過共同體優(yōu)勢互補、互相促進激發(fā)學生學習興趣,但在具體設計中共同體的理念未能深入。
戴長秀[13]為解決Java課時不足問題,提出重塑課程鏈,將C語言、C++課程替換為Java中高級課程,總課時擴展至2~3個學期,以增強Java的深度,但此法擠壓了C、C++的課時,勢必導致學生對程序語言的原理理解不深,欲速不達且后勁不足。
盧冶等[14]面向應用型大學建設研究了Java課程群的設置、教學設計等,引入了校企雙導師指導,強調過程考核,壓縮了實驗學時,理論學時提升到64學時。
總結針對Java實踐教學的改革主要有以下幾種類型:(1)引入新的教學理念。如CDIO、OBE、以學生為中心、工程認證模式、學習共同體、能力導向等。(2)新型項目案例教學。已有教學改革中大都重視項目案例,具體實施時的教學設計多種多樣,簡要統(tǒng)計有以下幾種。一是單個項目案例貫穿學期:為解決學生實踐項目體量不足的問題,將一個中型項目劃分為多個模塊,每個階段實現(xiàn)一個模塊功能,最終拼裝起來,在課程結束時完成整個項目的開發(fā);二是項目興趣激勵:通過生活中能接觸到的、學生感興趣的項目實例開發(fā)激發(fā)學生的興趣;三是項目涵蓋法:在實驗教學中除驗證性、設計性實驗外,用若干個小項目覆蓋所有知識點,將Java知識學習和實踐相結合;四是項目案例法:建立項目案例庫,為工程化培養(yǎng)提供支撐。(3)引入信息化技術。通過引入教學管理系統(tǒng)、“互聯(lián)網(wǎng)+”等課程輔助系統(tǒng)增強師生交流,提升教學管理效率,引入Java教學平臺、Java機試系統(tǒng)為學生提供實踐平臺。(4)新型教學模式。引入MOOC、SPOC、翻轉課堂等新型教學模式,是教育教學由“老三中心”向“新三中心”遷移的具體實現(xiàn)[1-2]。(5)革新評價體系。將以往期末主導轉變?yōu)檫^程主導,增加過程考核的次數(shù)、形式和比重,重視實踐考核,通過引入機試系統(tǒng)或實驗答辯增大實踐比重,降低理論考試和期末考試比例。(6)重塑教學各個環(huán)節(jié)。除了革命性的手段外,還可以深挖教學各環(huán)節(jié)潛力,在教學上破解Java教學難點,精心設計實踐環(huán)節(jié)。(7)建設創(chuàng)新平臺。設立開放性課題,建設開放的實驗平臺,鼓勵和激發(fā)學生興趣。
“新三中心”理論的提出,為當前Java教學改革指明了方向。但就客觀情況而言,針對Java教學的理論模式有較多研究,受限于教育系統(tǒng)體制改革的漸進性要求及傳統(tǒng)教學思路的影響,要實現(xiàn)以學生為中心設計教學方案仍面臨以下問題。
縱觀各高校Java理論課時安排一般在30~50學時,面對龐大的Java知識體系,教師僅能做到對各部分“點到即止”,學生停留在“學會”層次,既不能深入Java體系,也無法達到融匯創(chuàng)新,不利于學生的深入學習和長遠發(fā)展。
從各高校開課數(shù)據(jù)來看,Java課程常安排在1~4學期,該階段同時安排了大量的基礎課、通識課和公共課,留給Java課程的時間非常有限,學生有效學習時間較少。在已有大量針對MOOC、翻轉課堂的改革研究中,均未能考慮學生的時間分配問題[15]。
基于過程評價、學習反饋的教學改進需要大量的師資投入,而國內大學的師生比普遍不能滿足小班教學,助教投入較少,基于過程評價的教學無法實施。以30人的教學班級為例,每周開展一次評價活動,每個學生的評價耗時1小時/周計算,每周僅過程評價需要花費30小時,加上教學設計和教學改進等,每周在課堂教學以外消耗時間大約在60小時,遠遠超過每周40小時的工作標準。
學生的實踐能力來自于項目的規(guī)模和代碼量,部分Java教學停留在傳統(tǒng)程序設計類語言教學模式上,一方面設計型實驗量不足,造成學生的程序設計能力弱;另一方面缺乏一定體量的項目,造成學生實踐能力弱。
已有研究中,有項目驅動式[8]、項目案例式[4]等較大規(guī)模的項目培養(yǎng)學生實踐能力。具體做法是選取中等以上體量規(guī)模的項目案例貫穿整個教學過程,將項目劃分為多個模塊,學生在不同的教學階段完成相應模塊。這一方法存在三個問題:(1)項目訓練不具備系統(tǒng)性和綜合性,學生缺乏成就感和整體認知;(2)實驗過程先難后易,輕重倒置,不符合知識傳授與能力培養(yǎng)的一般規(guī)律,如在實際教學中,通常是讓學生在前期設計后臺邏輯,在后期設計圖形界面,而對于軟件設計工作來說,設計難點和重點在后端設計,圖形界面一般并沒有太多難點;(3)缺乏設計性工作訓練,不利于學生提升核心能力。
與C語言等程序語言課程不同,Java課程的目標是培養(yǎng)學生實用性、應用型和工程化能力。Java課程在計算機專業(yè)課程體系中有其特殊性,課程學習一般安排在C語言、C++、數(shù)據(jù)結構課程之后,也有高校安排在C語言課程之后,是由基礎程序設計向應用型程序設計轉變的關鍵,是應用型課程體系的基礎?;谶@個目標,Java語言教學的培養(yǎng)目標包含:(1)培養(yǎng)程序設計基礎:程序語言的基本語法、執(zhí)行流程,培養(yǎng)學生基礎編程能力、算法設計能力。(2)培養(yǎng)面向對象思想:介紹面向對象體系,包括類、對象、接口等概念和封裝、繼承、多態(tài)等特點,培養(yǎng)學生面向對象思想,轉變以往面向過程的思考和設計方式。(3)培養(yǎng)可視化編程能力:培養(yǎng)學生可視化編程能力,包括多線程、事件、GUI界面、Java類庫、時鐘等,使學生形成可視化編程思維理念。(4)培養(yǎng)工程化能力:通過較大規(guī)模的項目鍛煉學生的工程化能力,具備初步的工程化研發(fā)理念、熟悉項目研發(fā)流程、熟悉團隊配合。
針對以上問題,為在有限時間內提升學生學習效果,可以從課堂和項目實踐兩方面進行改革。一是在課堂教學上取消實驗課,將實驗課時合并到課堂教學中,改變以往理論和實驗脫離的教學模式,以實踐為核心建立理論與實踐混合式的互動課堂,通過“邊聽邊練”、理論結合實踐加速學生理解和掌握,提升學生的學習效率;二是在項目實踐上建立設計性題庫和遞進式項目案例,設計逐層遞進、逐步升級的項目案例,保證學生在有限時間內完成具有較大體量的項目,真正培養(yǎng)學生的工程實踐能力。
受“理論課+實驗課”教學體制約束,當前的Java教學分為理論課時和實驗課時,理論課以講授為主,實驗室開展實驗驗證和設計。理論課“只聽不練”,實驗課“只練不聽”,理論與實踐相互獨立。
針對以上問題,可以創(chuàng)新性地取消實驗課,將驗證性實驗放到課堂上現(xiàn)場進行。采用教師“邊教邊指導”,學生“邊聽邊練”的即時訓練模式。以合肥學院為例,2017級、2018級、2019級軟件工程專業(yè)的學生,筆記本電腦持有率達到100%,完全具備在課堂上開展實驗的條件。課堂教學以代碼編寫演示和學生實驗為主,兼顧少量的理論講解。課堂時間安排如表1所示,在每個演示講解之后,讓學生立即動手練習,通過動手加深理解,最后對現(xiàn)場演練中出現(xiàn)的問題加以講解。
表1 混合式課堂時間安排
混合式課堂方案實踐了“新三中心”的理論,以學生狀態(tài)、學生學習為核心,改革方案具有以下優(yōu)勢。(1)補足理論課時不足:實驗課時通常占總課時的一半,如清華大學Java總學時80,其中理論48學時,實驗32學時;中國科技大學Java總學時70,其中理論40學時,實驗30學時。取消實驗課后,理論課時增加近1倍。(2)提升學生課堂參與度:課堂上有近半時間由學生主動參與實踐,現(xiàn)場開展師生互動交流,將學習的主動權交給學生。(3)提升學習效率:課堂的理論和結論由學生通過實踐推導和驗證,記憶更牢固,領悟更深刻。經(jīng)過實踐操作后,課下時間幾乎不需要再次復習。(4)激發(fā)學生學習興趣:混合式課堂以實踐引導理論學習,避免了單純理論講授的枯燥性。通過動手實踐能夠激發(fā)學生的成就感,從而激發(fā)了學生對Java學習的興趣。以上方法從2019年起應用于合肥學院軟件工程專業(yè),取得了顯著效果,學生的課堂參與度大大提升,2018級軟工程專業(yè)Java課程的程序設計實踐參與率接近97%,2019級參與率接近100%,2020年課堂將進一步優(yōu)化。
綜合性項目是Java實踐能力質變的關鍵,但在實際教學中,現(xiàn)實課堂綜合性項目要么難以開展,要么體量不足,主要原因是綜合性項目涉及的知識較多,在新課初始階段難以開展,在新課即將結束時又沒有足夠的時間完成,呈現(xiàn)了學生有限時間與項目規(guī)模之間的矛盾。
而如果采用遞進式的項目案例,針對同一個項目,在課程學習的過程中不斷完善,最終形成一個規(guī)模較大的實用性軟件,并且在每個階段都保證了項目的完整性和繼承性。必須注意的是,項目案例設計需要遵循以下“六性”準則:(1) 覆蓋性:項目案例所用知識能夠與知識點相匹配;(2) 完整性:每一項目都是具備獨立功能的完全軟件,學生完成后具備整體感和成就感;(3) 遞進性:每一項目都是在上一項目基礎上的優(yōu)化,在降低學生工作量的同時不影響實踐效果;(4) 實用性:系統(tǒng)在完成后具備一定能力,可引發(fā)學生的成就感;(5) 開放性:系統(tǒng)具備創(chuàng)意、創(chuàng)新可發(fā)揮的開放式空間,提高學生的積極性;(6) 復雜性:項目必須保證具有一定程度的復雜性和代碼量,否則不足以培養(yǎng)學生實踐能力。
下面以“實驗報告管理系統(tǒng)”為例來說明項目案例的設計(如圖1)。綜合性項目按由易及難、由簡至繁,層層遞進式設計,共分為5個層次:查重關鍵技術、師生管理系統(tǒng)、報告查重系統(tǒng)、報告管理系統(tǒng)、GUI報告管理系統(tǒng),每一系統(tǒng)都是以上一系統(tǒng)為基礎,通過應用新增知識點對系統(tǒng)進行能力提升。綜合性設計項目共4個可選項,選擇其中一個項目開展需求分析和軟件設計工作,形成完整的設計文檔和使用說明文檔。
圖1 遞進式綜合項目案例設計
4.2.1 Console報告查重關鍵技術 運用字符串模式匹配算法,編程實現(xiàn)查重關鍵技術系統(tǒng)。給定兩個字符串或兩段文件,通過分解和比較,找出兩個字符串相重復的字段或語句,輸出重復字段和在兩個文件中所處的位置,現(xiàn)階段文件允許使用屏幕輸入的方式。
4.2.2 Console師生信息管理系統(tǒng) 面向高校人員管理,建立管理系統(tǒng)。高校人員分教師、學生、工人等多個類別,除了姓名、年齡、工號/學號等共有信息外,教師和學生還具有不同的職責和屬性。一個教師可以教多門課程,一門課程可以有多位教師教學,一個學生需要學習多門課程,一門課程也會有多個學生學習,使用類、繼承和接口實現(xiàn)。
4.2.3 Console報告查重系統(tǒng) 結合Java常用類,再將師生管理系統(tǒng)與查重系統(tǒng)相融合,建議針對單門課程的報告查重和管理系統(tǒng)。
4.2.4 GUI實驗報告管理系統(tǒng) 將上一版本的報告管理系統(tǒng)升級為圖形界面。
4.2.5 GUI實驗報告管理系統(tǒng)V1 在上一版軟件的基礎,利用Java多線程編程,將軟件功能升級為多個班級、多門課程模式,支持前后臺同時工作,即后臺查重和前臺正??赏瑫r進行。
4.2.6 GUI實驗報告管理系統(tǒng)V2 在上版軟件的基礎上,將報告管理、師生信息、課程信息等硬盤信息存儲升級為數(shù)據(jù)庫存儲。
從圖1中可以看出,除了“實驗報告管理系統(tǒng)”這條主線外,還提供“師生管理系統(tǒng)”支線,在設計案例時可以考慮多條主線,以提供多種選擇。
程序設計類課程需要大量的編程練習,針對學生練習不足問題,面向驗證性和設計性實驗建立系統(tǒng)性、體系化的編程題庫,題庫建設需滿足以下要求:(1)確保每個知識點的覆蓋性:須覆蓋教學重點、難點,并保證覆蓋完整;(2)確保知識結構的全面性:題庫包括Java知識點、算法設計、編程思想訓練、編程規(guī)范訓練等,保證學生培養(yǎng)的全面性。
利用超星平臺的作業(yè)及考核系統(tǒng),每日自動下發(fā)若干道編程題,并利用自動統(tǒng)計、作業(yè)批改、成績統(tǒng)計和作業(yè)分析等功能,可以實時監(jiān)控學生的學習效果,根據(jù)效果及時調整教學進度。
師資是教學活動的保證,在效果評價、交流互動中需要大量的師資投入。助教可以幫助完成實驗答辯、作業(yè)批改、交流互動,并在此過程中完成學習效果的評價,因此,可以建立由高低年級混合的助教隊伍,高年級承擔助教任務,低年級跟隨助教的工作內容,形成具有梯隊的助教隊伍,以保障各項教學活動的進行。同時,為了保證助教的工作質量并能持續(xù)培養(yǎng),應注意建設具有持續(xù)性的助教機制。建立由高低年級混合的助教隊伍,推動良好助學助教傳統(tǒng)的形成。
以上教學改革方案在合肥學院2018級軟件工程專業(yè)3個班級進行了初步實施,原來課程設置為70學時,包括36學時理論、34學時實驗,改革減少了14學時實驗,將這14學時加到36學時理論中,開展了50學時的理論和實踐混合課堂,建成包含400道編程及綜合項目案例的題庫,配備了3個助教。實踐證明,在后續(xù)的Java綜合設計課程中,2018級成績明顯好于2017級,在考核方式、考核教師、課程周期完全一致的情況下,2018級學生成績合格率達到95%,而2017級為83%,充分驗證了混合式課堂和遞進式項目案例能夠有效提高學生的實踐水平。