彭 夢,謝 雅
(湖南工程學院 計算機與通信學院,湖南 湘潭 411104)
作為面向對象的程序設計語言,Java程序設計教學具有理論抽象難懂、知識點多、實踐性較強等教學特點[1-2]。針對這些教學特點,國內外各大高校開展了大量的相關研究,從理論上提出了一些解決方案,如基于項目的教學方法、基于案例教學方法、結合在線資源的教學方法、互動教學方法等[3-5]。但是這些Java教學方法和措施都通過加大資源和時間投入來提高教學質量,由于受課時壓縮、實驗條件、學??荚u標準、教師自身素質等諸多因素的影響,學生的學習興趣得不到有效培養,教學效果受到嚴重的影響。具體表現在以下幾方面。
1)課堂教學沒有按照學生的興趣發展來靈活運用教學方式,抽象理論沒有結合學生的環境背景產生共鳴,缺乏趣味性。
首先,Java程序設計概念多且較抽象,純面向對象編程理論和編程思想非常難懂,比如多態的意義和應用、接口的意義和應用、泛型的意義和應用等,這對大多數學生來說是一種新的體驗和挑戰。然而,傳統Java課程的教學方式大多采用灌輸式的教學方法進行教授,忽略了學生的個性發展和綜合素質的培養,難以培養學生的實踐能力與創新能力[6-7]。
其次,在 Java程序設計教學過程中,課堂教學大多是按教材的編排章節、講解理論知識,理論教學與學生的生活情景脫節,使課堂教學抽象、枯燥。因此,學生在學習中逐漸喪失興趣,學生的知識運用能力培養的效果不甚理想[8-9]。
2)實踐教學的環境配置不合理,實踐教學的內容脫離應用場景,激發不了學生學習 Java的興趣。
傳統Java實踐教學環境的配置層次度不夠,不同類型的實踐教學環境呈現扁平化布局,不能形成一種逐次遞進的教學環境運用機制。在這種缺乏層次導向的教學環境體系中,學生的實踐培養容易出現階段性斷層,嚴重阻礙了學習興趣發展的連續性。
其次,目前很多高校Java語言實踐教學缺乏計算思維能力的培養,實驗內容一般是為了驗證書本理論知識的可行性而設計,脫離了實際的應用背景,激發不了學生的學習興趣。這種缺乏應用導向的實踐教學不利于學生綜合素質的培養,導致學生根本無法理解該門課程的精神意義關鍵所在,學生的動手與動腦相結合的實踐運用能力得不到有效的培養。
課堂教學是課程教學的基礎,是學習知識的源頭。從課堂教學內容和課堂教學方式出發,培養學生對Java課程知識學習的興趣,能將對課程知識學習的興趣轉化為動力,應采取基于興趣驅動的改進方法:基于情景感性認知的課堂教學內容改進、基于個性分類的課堂教學方式改進。
2.1.1 基于情景感性認知的課堂教學內容改進
采用基于情景感性認知的教學,在課堂教學中將知識點涉及的實例整合成一個情景體系,通過具體情景對抽象的知識點進行演繹,從感性層面上進行關聯,分別使用夸張趣味的情景實例、學生生活情景實例、基于情景的教學資源3種方式,提高學生對知識的感性認識,從而升華到理性認識,見圖1。

圖1 基于情景感性認知的教學改進方案流程圖
首先,采用夸張和趣味情景的類比實例來激勵學生的感性認知,在短時間內加強學生對抽象理論的感性認識,提高學生對知識的敏感度。例如講解“父類引用指向子類對象”這一抽象概念時,為了激發學生的興趣,引入平時學生上廁所時只顧著帶報紙而忘記帶衛生紙這么一個喜劇性的情景案例。讓學生發揮想象力思考怎么解決這一問題,引導學生將實際問題中“報紙替代衛生紙”的現象與理論知識中“父類引用指向子類對象”的概念之間建立聯系。同時指出這種場景下報紙失去了原本的閱讀功能,因為子類“報紙”被當成了父類“紙張”來使用,只具備紙張的屬性和功能。同理,反過來引入普通紙張無法代替鈔票的功能去購物這一極端夸張的情景案例,通過闡述父類“紙張”不具備子類“鈔票”的購物屬性和功能,解釋“子類引用不能指向父類對象”這一抽象概念的深層理論原因。
其次,由于講授者和學習者在知識儲備和生活閱歷上存在較多差異,講授者所舉的類比實例有時無法在學習者中引起共鳴。因此,應通過接近學生生活情景下的類比實例,加強學生對知識的直觀性和感性認識,提高學習的動力和熱情。例如,在開始講授接口的概念時引入“USB接口設計”案例。U盤、打印機、移動硬盤都是USB設備,不同的USB設備有不同的驅動程序,但都繼承了同一個USB接口標準,并實現了USB接口的功能。講授完Java接口編寫法則后,學生會自然而然地將接口的設計原理運用到實際的問題中,編寫接口繼承代碼實現各種USB驅動程序的設計。因此,通過在學生頭腦里建立一個與自身生活情景相關的“知識—實例”聯想框架體系,將大大提高學生的知識運用和動手能力。
最后,基于情景制作趣味小視頻和動畫,將知識點和多種教學媒體資源相結合,通過文字、語音和動畫等多種媒體交互刺激的形式,將大量的知識點生動感性地呈現給學生。例如,在講授數據流和處理流的區別時,利用動畫演示自來水通過普通水管和套接在水管上的過濾器時產生的不同效果,使學生將上述情況歸結為數據流和處理流兩種抽象類的使用原理和使用規則。教學資源對其他教學環節起到了支撐作用,因此對教學資源的優化運用和整合,將大大提高Java教學質量和效果。
2.1.2 基于個性分類的課堂教學方式改進
學生的個性發展各有差異,導致其對教學方式喜好不同,表現為對某一種教學方式接受程度高、興趣較強。依據學生的人才類型,學生的個性和興趣會呈現類內聚合、類間發散的特點,因此應按照學生的興趣和個性發展,靈活分類運用教學方式。對不同類型的人才培養合理運用不同教學方式,將大大提高教學效率和單位時間的學習產出。
基于個性分類的教學方式改進措施,根據人才的個性類型適當調整各種教學方式在人才培養過程中所占的比例權重,既兼顧傳統的專業理論知識教學,又能滿足人才分類的個性化教學的需要。例如,對于學術研究型人才,重在培養科學創新,應該增加問題探索型教學方式的比例,通過設置一些細節難點問題,引導學生自主進行探索;對于工程型技術人才,重在培養綜合能力和運用實踐能力,應該增加項目驅動型教學方式的比例,通過將項目和知識點結合起來進行講授,引導學生將課本知識應用到實際項目;對于應用型技術人才,重在強調新技術和新成果的推廣,應該增加實踐操作型教學方式的比例,通過介紹前沿發展的技術和問題,引導學生擴充自己的知識視角。
實踐教學是培養知識運用能力和創新能力的主要平臺,從實踐教學的教學模式和體系配置出發,培養學生對Java課程知識運用和創新的興趣,將對課程知識運用的興趣轉化為動力,并采取相應的改進方法:小步快跑的實踐教學模式改進和進階式教學環境的實踐教學體系改進。
2.2.1 小步快跑的實踐教學模式改進
案例教學模式是實踐教學最為有效的教學模式之一,但傳統的案例教學中案例的安排不合理,往往不是案例設計得太難使學生無從下手,就是案例設計得太容易使學生的分析解決問題的能力沒有得到應有的鍛煉和開發,從而失去學習興趣。
現有研究表明,學生的學習是一個循序漸進的過程,從知識概念的理解到知識運用和創新是一個知識能力從低級形態向高級形態的漫長演變,書本上的理論知識需要多次強化鞏固才會內化成學生自己的知識體系,而不是一蹴而就的過程。因此,針對案例教學的不足,采取小步快跑式的實踐教學培養模式,通過多頻率、低強度地重復運用Java知識點去分析解決問題,在學生頭腦里建立一個兼具深度和廣度的“知識—案例”聯想框架體系,使學生克服對運用Java編程解決實際復雜問題的恐懼。
該模式不是讓學生從頭到尾解決一個復雜的案例,而是首先通過教師設計多個案例的初級解決方案引導學生思考問題,然后學生獨立進行二次分析完成剩余程序,從而實現能力提升,逐步提高學生對多個知識點的綜合運用能力,見圖2。每個案例學習不僅培養了學生對新知識點的運用能力,更重要的是鞏固強化了原有知識運用的廣度和深度,通過多次“小步快跑”獲取穩定牢固的長足進步。學生在迭代解決案例的過程中通過一點點進步的積累,逐步獲得運用越來越多的知識解決復雜問題的個人成就感,大大提高了學生對專業知識學習的興趣。

圖2 小步快跑的實踐教學模式流程圖
小步快跑式實踐教學培養模式的具體實施步驟分為3步。首先,按照內容將每個案例分為學習模塊和強化模塊兩個部分:學習模塊涉及當前實驗主題對應的知識點,是本次實驗需要重點掌握的新知識;強化模塊涉及其他章節的知識點,是以前案例中需要鞏固強化的已有知識。學習模塊通過拋出問題,引入新的知識點概念,主要鍛煉學生對知識概念的理解和基本運用。強化模塊通過對已有知識點的不斷刷題進行強化訓練,提高知識運用能力的廣度和深度。
其次,教師實現初級解決方案設計,負責完成每個案例中學習模塊的70%代碼和強化模塊的80%代碼,其中強化模塊的空缺代碼主要依據學生以往實驗中出現的錯誤,以查漏補缺的形式進行設計。同時,教師將引導學生掌握問題的解決思路,幫助學生搭建程序的基本框架。
最后,學生根據基本程序框架完成主要業務邏輯處理流程的程序編寫,在二次程序開發時獨立完成學習模塊30%剩余工作量和強化模塊代碼20%剩余工作量。在學習完案例后,通過案例總結將案例中涉及的知識點進行歸納、串聯和體系化,總結各種技術的特點、基本原理、基本開發步驟、相關技術要點。
因此,相比讓學生從零開始解決問題,小步快跑式的實踐教學模式花費同樣的時間,讓學生接觸到4~5倍的相關案例,大大提高了學生知識運用能力的廣度和深度,增強了學生舉一反三、觸類旁通的能力。例如,在實驗主題為“多線程”的案例設計中,使用“太陽系星體運行演示”案例。分析該案例,發現需要解決以下幾個問題:如何定義一個抽象的天體、如何定義地球和月球、如何模擬多個星體各自的運行軌道等。對應到課程中的知識點分別是抽象類、類的繼承、多線程,其中屬于學習模塊的有多線程相關代碼,屬于強化模塊的有抽象類、類的繼承相關代碼,通過這個案例學生既重點掌握了“多線程”新知識點,又鞏固了“抽象類”“類的繼承”等已有的知識點。
2.2.2 進階式教學環境的實踐教學體系改進
依據學生對專業知識體系的掌握程度,將Java語言的學習進度分為初級、中級、高級3個階段,在每個階段學生的關注點會相應發生變化。學習階段等級越高,學生越有運用專業知識解決復雜工程問題的動力和積極性,相應地,越是需要平臺更高、資源更豐富的教學環境為其服務。通過這種層次的教學環境體系引導學習,學生的學習進度按照逐次遞進的方式良性發展。進階式的教學環境體系既能為理論知識轉化為實踐知識提供階梯型的接口,又可以為學生走向企業、走向職場提供了循序漸進的模擬演練平臺。
以學校計算機與通信學院的進階式教學環境建設為例,見圖3,首先在大一階段,全面開展新生Java語言實驗日常訓練活動,每天新生都要強制進入實驗室進行兩個課時的編程設計,極大地提高了學生的動手能力;然后在大二階段,要求所有學生按照自己的興趣和特長加入一個Java主題創新實驗室或競賽興趣小組,以項目和競賽的感性形式直接促進大學生的專業興趣,幫助大學新生構建合理的專業知識結構框架;最后在大四階段,要求參加卓越計劃的所有學生進入相應的校企合作項目小組,去企業學習和鍛煉,提前進行企業需求的對接,培養了學生的全面綜合素質能力和解決復雜工程問題的能力。

圖3 基于學習進度的層次教學環境體系結構
為了驗證教學改進方法的效果,筆者在湖南工程學院計算機與通信學院采集了大量的學生信息進行抽樣調查。本次調查統計了計算機科學與技術專業學生信息,總共樣本數為210份,有效問卷200,對比這些學生在傳統教學和興趣導向教學改進措施后的問卷調查結果。
問卷調查結果表明本文提出的興趣導向教學改進措施提高了學生的Java學習興趣,提高了Java課程教學的質量和效率,見表1和表2。

表1 學習興趣的問卷調查 %

表2 學習時間的問卷調查 %
由表1和表2可知,基于學習興趣驅動的Java教學改進提高了學生的學習興趣,增強了學生的學習主動性和積極性,激發了學生的潛能,將學術和實踐緊密結合,提高了學生對抽象專業理論的感性認識,提高了學生的綜合素質能力,提升了其解決復雜工程問題的積極性。學生與學生之間也相互討論,相互指導,學習氣氛良好。
近3年,筆者已經將興趣驅動的思路和措施融入Java教學活動中,鍛煉和提高了學生的學習質量和學習效率。根據院系近三年參加創新項目、程序競賽和畢業就業情況,湖南省大學生研究性學習和創新性實驗計劃獲批10項,其中在2017和2018年大學生創新創業項目中獲國家級項目2項;2015年到2018年湖南省程序設計大賽中,學生共獲湖南省賽區一等獎 1項,三等獎 6 項;畢業生從事與Java相關軟件開發工作,工資水平比其他計算機類學生高出20%左右。
雖然從傳統教學遷移到基于興趣驅動的教學,教師需要付出更多的努力,但是從目前的教學效果看,基于興趣驅動的教學將學生的興趣特點轉換為學習優勢,實現專業發展和個性發展的協調進步,對于促進知識運用能力和創新能力都有很大的幫助,提高了學生綜合素質能力和解決復雜工程問題的積極性。