李韋鵬 潘承毅 唐型基
摘要:在互聯(lián)網(wǎng)、大數(shù)據(jù)、云計(jì)算背景下,Java編程語(yǔ)言儼然成了計(jì)算機(jī)類專業(yè)本科教學(xué)的核心基礎(chǔ)課程。本文針對(duì)當(dāng)前高校Java編程教學(xué)中存在的問(wèn)題展開分析,并給出合理建議和解決辦法,對(duì)Java課程教學(xué)改革有借鑒意義。
關(guān)鍵詞:Java教學(xué);教學(xué)改革;OJ
中圖分類號(hào):G424? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)19-0158-02
1 引言
2019年年初的TIOBE排行榜中Java依舊占據(jù)霸主位置,這同Java語(yǔ)言本身面向?qū)ο笥押茫С止ぞ邘?kù)和平臺(tái)多,與web應(yīng)用、大數(shù)據(jù)開發(fā)等領(lǐng)域強(qiáng)相關(guān)等原因密不可分。目前國(guó)內(nèi)部分非重點(diǎn)院校Java課程教學(xué)定位、教學(xué)質(zhì)量與業(yè)界公司java研發(fā)崗用人標(biāo)準(zhǔn)相去甚遠(yuǎn),面對(duì)人才培養(yǎng)模式已明顯偏離社會(huì)實(shí)際需要的事實(shí),教學(xué)改革刻不容緩。
2 教學(xué)現(xiàn)狀與問(wèn)題分析
2.1 教學(xué)目的與定位不明確
Java程序設(shè)計(jì)作為前置核心課程有多重任務(wù):1)培養(yǎng)學(xué)生扎實(shí)的編程技能;2)為學(xué)生的后續(xù)課程做技術(shù)儲(chǔ)備:3)承擔(dān)啟迪學(xué)生OOP思想的工作。因此Java教學(xué)應(yīng)面向工程實(shí)踐,保持授課深度與難度,重點(diǎn)訓(xùn)練學(xué)生解決實(shí)際問(wèn)題的能力。但多數(shù)教師固守“單純掌握一門編程語(yǔ)言”的傳統(tǒng)教學(xué)思維,教學(xué)定位和課程指向不明,內(nèi)容淺顯,知識(shí)結(jié)構(gòu)不合理,導(dǎo)致授課效果不理想,學(xué)生技術(shù)水平提升有限,拖累后續(xù)課程教學(xué)。
2.2 教學(xué)體系陳舊
目前Java課程教學(xué)體系陳舊體現(xiàn)在:(1)課時(shí)分配不合理?;A(chǔ)語(yǔ)法知識(shí)講授時(shí)間過(guò)長(zhǎng),壓縮后續(xù)章節(jié)如:序列化、并發(fā)、JDBC等Java核心技術(shù)授課時(shí)間,以上核心技術(shù)才是一個(gè)Java研發(fā)人員應(yīng)該具備的基本技能素養(yǎng),教學(xué)定位過(guò)低使學(xué)生學(xué)不到真功夫。(2)教學(xué)思維固化。具體表現(xiàn)為:1)教學(xué)模式保守。信息時(shí)代知識(shí)的學(xué)習(xí)具有突然性,學(xué)習(xí)門檻已經(jīng)大幅降低,更加注重學(xué)習(xí)效率,但部分院校依舊按照多年前的教學(xué)大綱和參考教材進(jìn)行教學(xué),排斥技術(shù)論壇和技術(shù)博客,認(rèn)為從網(wǎng)絡(luò)獲取知識(shí)缺乏系統(tǒng)性。技術(shù)學(xué)習(xí)是一個(gè)不斷迭代的過(guò)程,且 IT行業(yè)技術(shù)更新快,要求從業(yè)者具備敏捷學(xué)習(xí)能力,反觀現(xiàn)有編程教學(xué)模式無(wú)法授予學(xué)生類似能力。2)未能做到分層教學(xué)。授課過(guò)程中過(guò)多關(guān)注低水平學(xué)生,無(wú)法保證為有潛力學(xué)生做深入拓展,通過(guò)引入流行開源框架提升教學(xué)質(zhì)量的設(shè)想更無(wú)從談起,使本科教學(xué)同行業(yè)發(fā)展脫節(jié)。(3)教材選擇不合理。自Java誕生伊始人們就在討論構(gòu)建有效的Java教學(xué)培訓(xùn)體系,在參考書籍選擇上早已達(dá)成共識(shí),如《Java編程思想》,《Java核心技術(shù)》《Head first設(shè)計(jì)模式》等作品被列為入門經(jīng)典。這些參考書籍有:零基礎(chǔ)入門,有深度,知識(shí)覆蓋面廣,閱讀量大等共性,但在當(dāng)下追求短平快的國(guó)內(nèi)大學(xué)教育背景下被各類所謂簡(jiǎn)明教程取代。這個(gè)選擇從長(zhǎng)遠(yuǎn)來(lái)看不利于課程建設(shè)和學(xué)生能力培養(yǎng),因?yàn)楹?jiǎn)明教程剝奪了學(xué)生 “從無(wú)到有,由淺入深”的過(guò)程體驗(yàn),導(dǎo)致學(xué)生知識(shí)體系缺乏邏輯性。(4)課程考核體系不完善。目前部分院校Java課程的考核成績(jī)占比重心仍是期末筆試,題型刻板,評(píng)分標(biāo)準(zhǔn)缺乏開放性,淡化實(shí)踐能力考察,進(jìn)而出現(xiàn)學(xué)生實(shí)際編程能力與總評(píng)成績(jī)不匹配的情況。
2.3 教師技術(shù)水平有待提升
本科院校中有行業(yè)經(jīng)歷且技術(shù)扎實(shí)的Java課程任課教師比例不高,多數(shù)教師一直走單純科研路線,少有項(xiàng)目開發(fā)歷練,從工程應(yīng)用角度對(duì)Java語(yǔ)言特性理解深度不夠,在授課時(shí)抓不住重點(diǎn);此外部分教師缺乏對(duì)技術(shù)動(dòng)態(tài)持續(xù)跟蹤的主動(dòng)性,課題結(jié)題即研究終止,例如目前JDK版本已經(jīng)更新到Java10,卻依然介紹已標(biāo)記為legacy的Java5/6中的接口及相關(guān)知識(shí),明顯落伍。
3 教學(xué)改革建議
3.1合理分配學(xué)時(shí)
Java課程教學(xué)改革的第一步是縮減基礎(chǔ)語(yǔ)法類知識(shí)的教學(xué)時(shí)數(shù)。這樣做并非刻意淡化基礎(chǔ)語(yǔ)法知識(shí),相比C/C++,Java語(yǔ)言基礎(chǔ)語(yǔ)法比較簡(jiǎn)單,且大部分高校將Java作為第二門編程語(yǔ)言加入人才培養(yǎng)方案中,在已有編程語(yǔ)言學(xué)習(xí)經(jīng)歷的前提下,通過(guò)類比就能快速掌握其基本語(yǔ)法。節(jié)省下來(lái)的學(xué)時(shí)可以被安排到并發(fā)、網(wǎng)絡(luò)編程等章節(jié)中,為這些實(shí)用性更強(qiáng)、且有難度的核心技術(shù)提供充裕授課時(shí)間,以便教師放慢節(jié)奏做更加細(xì)致和深入的講解。
3.2建立以編程訓(xùn)練為基礎(chǔ)的教學(xué)模式
實(shí)現(xiàn)編程訓(xùn)練為基礎(chǔ)的教學(xué)模式改革的關(guān)鍵是各院校計(jì)算機(jī)類專業(yè)搭建自己的OJ平臺(tái),即自動(dòng)化在線編程評(píng)判。OJ并不是新鮮事物,浙大、北大、杭電等國(guó)內(nèi)一流院校均為先行者,這些學(xué)校的學(xué)生通過(guò)OJ訓(xùn)練在ACM等賽事中取得不俗的成績(jī)。Java教改使用OJ的工作重心放應(yīng)在題目的分級(jí)、分類上,向?qū)W生提供不同難度和種類的題目,做有選擇性、針對(duì)性的訓(xùn)練。OJ能迅速評(píng)判代碼功能正確性和代碼質(zhì)量,幫助學(xué)生直觀了解自身優(yōu)勢(shì)與短板。同時(shí)仿照成熟OJ平臺(tái)運(yùn)維模式,使用積分區(qū)別試題難度和編程水平,憑借積分制給學(xué)生帶來(lái)漸進(jìn)式成就感,促成學(xué)生群體間形成相互競(jìng)爭(zhēng)、相互學(xué)習(xí)的良好氛圍。更重要的是基于積分對(duì)學(xué)生java課程學(xué)習(xí)情況作量化評(píng)價(jià),不再受限于單純的試卷考核,考察方式更加客觀。
3.3 充分拓展學(xué)習(xí)的外沿與內(nèi)涵
依靠OJ系統(tǒng)夯實(shí)學(xué)生Java基礎(chǔ)編程能力后,需利用第二課堂和課外時(shí)間延展學(xué)生學(xué)習(xí)的外沿與內(nèi)涵。內(nèi)涵是指引導(dǎo)學(xué)生投入精力閱讀Java源碼,從API源碼實(shí)現(xiàn)甚至JVM層面去探究Java語(yǔ)言內(nèi)部機(jī)制,升華對(duì)理論知識(shí)的理解。外沿則分為兩個(gè)階段:第一階段是通過(guò)諸如小型CMS、Android應(yīng)用開發(fā)等輕量級(jí)項(xiàng)目實(shí)戰(zhàn),強(qiáng)化學(xué)生對(duì)Java語(yǔ)言設(shè)計(jì)模式、開源框架的應(yīng)用能力,潛移默化地培養(yǎng)學(xué)生OOP思想與抽象建模能力,在不斷試錯(cuò)與爬坑中創(chuàng)建屬于學(xué)生自己的技術(shù)棧,形成對(duì)Java語(yǔ)言的深刻見解;第二階段是鼓勵(lì)學(xué)生加入熱門Java開源項(xiàng)目,在項(xiàng)目建設(shè)中熟悉團(tuán)隊(duì)開發(fā)工具(如git、Maven)的使用,向團(tuán)隊(duì)中更優(yōu)秀的開發(fā)者學(xué)習(xí),在代碼閱讀和編寫中取長(zhǎng)補(bǔ)短,體驗(yàn)團(tuán)隊(duì)開發(fā)模式,拉近課堂學(xué)習(xí)與實(shí)際工程開發(fā)間的距離。應(yīng)該強(qiáng)調(diào)的是,Java語(yǔ)言教學(xué)不應(yīng)該僅限于課堂,工程技術(shù)學(xué)習(xí)的最終目的就是應(yīng)用在現(xiàn)實(shí)生產(chǎn)中,相比之下實(shí)踐實(shí)訓(xùn)對(duì)學(xué)生更加重要,而教師在這個(gè)階段應(yīng)該扮演“引路人”的角色,除在關(guān)鍵節(jié)點(diǎn)主動(dòng)干預(yù)避免學(xué)生陷入技術(shù)陷阱外,盡量以“旁觀者”的身份出現(xiàn),把“發(fā)現(xiàn)問(wèn)題--分析問(wèn)題--解決問(wèn)題--優(yōu)化解決方案--突破自我”這套完整探究問(wèn)題的過(guò)程原原本本地交給學(xué)生自己去完成,而非手把手教學(xué),那樣做不僅違背了大學(xué)教學(xué)的一般規(guī)律,而且十分不利于學(xué)生的獨(dú)立思維和工匠精神的培養(yǎng)。
3.4 優(yōu)化考核方式
配合教學(xué)模式的改進(jìn)優(yōu)化成績(jī)?cè)u(píng)價(jià)體系:1)將平時(shí)OJ練習(xí)得分與代碼質(zhì)量作為基礎(chǔ)編程能力考核的依據(jù);2)將組隊(duì)項(xiàng)目開發(fā)作為實(shí)際技術(shù)應(yīng)用能力作為期末考核的依據(jù);3)整理并精選Java技術(shù)研發(fā)崗位面試題目,將理論考核放在隨堂紙質(zhì)小測(cè)驗(yàn)中完成;三者在總評(píng)成績(jī)中占比為4:4:2,以解決問(wèn)題為導(dǎo)向,全面考核學(xué)生課程學(xué)習(xí)質(zhì)量。
3.5 提升教師素養(yǎng)
教師是教學(xué)工作的主要參與者,如何提升教師自身技能素養(yǎng)是Java課程教改的另一個(gè)關(guān)鍵點(diǎn)。信息技術(shù)領(lǐng)域知識(shí)迭代周期很短,授課教師不能只緊盯領(lǐng)域理論前沿,還應(yīng)關(guān)注實(shí)用技術(shù)發(fā)展動(dòng)態(tài),特別是行業(yè)技術(shù)走向。同時(shí)任課教師需要適時(shí)投入到一線項(xiàng)目開發(fā)中,錘煉編碼能力,保持編碼水平,獲取更多的項(xiàng)目經(jīng)驗(yàn),這樣才能在技術(shù)傳授上有底氣、有故事,而非低水平空洞講解。此外還建議教師可以嘗試摒棄一些與Java技術(shù)發(fā)展趨勢(shì)相悖的思維模式,以空杯心態(tài)接受更面向工程、偏向自主學(xué)習(xí)的Java技術(shù)棧學(xué)習(xí)路線,并結(jié)合實(shí)際復(fù)制到課程教學(xué)中。
4 總結(jié)
前文給出的Java教學(xué)改革措施是一整套教學(xué)體系,操作性強(qiáng)。雖然這套教改方案偏向于工程實(shí)踐,但在實(shí)際落地中應(yīng)該有尺度,否則會(huì)轉(zhuǎn)變?yōu)轭愃凭幊膛嘤?xùn)班的教學(xué)路線:“僅僅停留在傳授知識(shí)的膚淺層面,偏離教育“教人如何學(xué)習(xí)”的初衷。技術(shù)類課程教學(xué)有自身特點(diǎn),不應(yīng)將理論知識(shí)與實(shí)踐實(shí)訓(xùn)人為對(duì)立,任何一個(gè)優(yōu)秀的Java開發(fā)者或者架構(gòu)師,其理論功底與動(dòng)手能力都會(huì)非常扎實(shí),這也是本科Java課程教學(xué)的終極目標(biāo):培養(yǎng)有靈魂、有水平的工程應(yīng)用型人才。
參考文獻(xiàn):
[1] 鄒曉華,陳向堅(jiān). 高校Java課程教學(xué)模式改革探討[J]. 中國(guó)校外教育,2018(22):114.
[2] 魏強(qiáng). Java課程基于工作過(guò)程的項(xiàng)目教學(xué)改革研究[J].數(shù)字通信世界,2018(9):265.
[3] 張會(huì). 《Java語(yǔ)言程序設(shè)計(jì)》教學(xué)改革探索[J].電腦知識(shí)與技術(shù), 2018(14):162-163,166.
[4] 馬丹.Java程序設(shè)計(jì)的教學(xué)思考[J].黑龍江科學(xué), 2018,(19):66-67.
【通聯(lián)編輯:唐一東】