張華+李勁+吳成英
摘 要: 針對Java教學(xué),在傳統(tǒng)Java基礎(chǔ)、Java Web兩層課程體系的基礎(chǔ)上加入Java移動(dòng)開發(fā)、大數(shù)據(jù)編程,形成四層課程群,采用拆分案例法貫穿始終,輔以師生互動(dòng)、團(tuán)隊(duì)任務(wù)驅(qū)動(dòng)教學(xué)法為補(bǔ)充,力圖最大程度上培養(yǎng)符合職業(yè)崗位需求的Java實(shí)戰(zhàn)型人才。
關(guān)鍵詞: Java; 課程群; 教學(xué)方法; 職業(yè)
中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2016)04-76-04
Research on career-oriented Java course group construction and teaching method
Zhang Hua, Li Jin, Wu Chengying
(Department of Computer Science and Technology, Hubei Institute for Nationalities, Enshi, Hubei 445000, China)
Abstract: Aiming at the Java teaching, this paper presents a four-tier course group, which in addition to the courses of Java programming and Java Web in the two-tier course group, the courses of Java mobile and programming on Big data are added. The construction of the course group, assisted by the teaching methods of splitting case, teacher-student interaction and team task-driven, will significantly strengthen the students' abilities of engineering practice.
Key words: Java; course group; teaching method; career
0 引言
Java語言是目前世界上影響力最大、最受歡迎的編程語言之一,一經(jīng)Sun公司推出,就得到了計(jì)算機(jī)軟件開發(fā)者的青睞。它所具有的“一次編寫,到處運(yùn)行”的跨平臺性是其他編程語言所無法比擬的。此外,它還具有卓越的通用性、高效性、安全性,廣泛應(yīng)用于企業(yè)信息系統(tǒng)、嵌入式開發(fā)、移動(dòng)應(yīng)用、大數(shù)據(jù)分析等各個(gè)層面,因而擁有全球最大的開發(fā)者專業(yè)社群。過去十年,各高校相繼開設(shè)了Java、Java Web課程,但移動(dòng)互聯(lián)、大數(shù)據(jù)時(shí)代的到來對傳統(tǒng)課程體系提出了新的挑戰(zhàn),同時(shí),日益激烈的就業(yè)環(huán)境對學(xué)生的實(shí)踐能力有了新的要求。
本文提出將Android移動(dòng)開發(fā)、Hadoop大數(shù)據(jù)編程納入Java課程體系,與以前的Java基礎(chǔ)、Java Web共同構(gòu)成課程群,然后以此為基點(diǎn),將實(shí)際工程項(xiàng)目拆分到各個(gè)環(huán)節(jié),讓學(xué)生在逐步實(shí)踐中理解并掌握J(rèn)ava知識體系。
1 Java職業(yè)崗位需求及專業(yè)建設(shè)現(xiàn)狀
TIOBE 2015年6月編程語言排行榜發(fā)布,Java語言仍舊位居榜首[1]。據(jù)IDC統(tǒng)計(jì),目前全球有450萬以上的Java開發(fā)人員,在所有軟件開發(fā)類人才需求中,對Java工程師的需求達(dá)到全部需求量的60-70%[2]。國內(nèi)對Java軟件人才的市場需求同樣廣闊,僅以Alexa最新統(tǒng)計(jì)國內(nèi)排名第一位的智聯(lián)招聘為例,2015年6月發(fā)布的最新數(shù)據(jù)表明,關(guān)于Java招聘的崗位信息就多達(dá)12萬余條,其中J2ee崗位26637條,Android崗位51000條,Hadoop崗位8854條。從以上數(shù)據(jù)可以看出,J2ee需求穩(wěn)定,而Android市場則可以用火爆來形容,因?yàn)镴ava崗位中有將近一半職位來自于J2ee,從某種程度上印證了移動(dòng)互聯(lián)時(shí)代的到來。此外值得關(guān)注的是,代表大數(shù)據(jù)的Hadoop職位在短短幾年時(shí)間從無到有,迅速上升,雖然目前只占Java就業(yè)率的10%,但業(yè)界的發(fā)展趨勢表明大數(shù)據(jù)不單單是“數(shù)據(jù)的工業(yè)革命”,更是一場深刻的科技和產(chǎn)業(yè)大變革的組成部分,因而其未來發(fā)展勢頭會(huì)非常強(qiáng)勁。
為了適應(yīng)軟件行業(yè)對Java開發(fā)人才的需要,國內(nèi)外高校從1997年起就開設(shè)了Java相關(guān)課程,隨著近幾年Java語言的風(fēng)行,高校Java課程開設(shè)率竟達(dá)到了80%以上。從各高校培養(yǎng)方案來看,許多都將Java程序設(shè)計(jì)作為了骨干課,詳見表1[3]。
Java課程的開設(shè)目前還存在以下幾點(diǎn)問題。①課程結(jié)構(gòu)單一。仍然有部分高校還只講授Java知識,稍微好點(diǎn)的,增設(shè)了J2ee課程,對于移動(dòng)互聯(lián)、大數(shù)據(jù)方面沒有涉及,相對于目前社會(huì)的發(fā)展及需求,這是不夠的。②缺乏成套體系。Java基礎(chǔ)、Java Web、Android、Hadoop這些技術(shù)是以Java為核心,在實(shí)際項(xiàng)目中分工合作,按照項(xiàng)目的理念來看應(yīng)該是一條完整的技術(shù)鏈,然而目前高校開課都是分開教授的,甚至是不同方向的老師代課,這會(huì)造成知識缺乏連貫性與整體性。③實(shí)踐性不足。在實(shí)際教學(xué)中,理論課、實(shí)驗(yàn)課分離,即使有實(shí)驗(yàn)、課程設(shè)計(jì)也是分散的知識點(diǎn)或類似學(xué)生管理系統(tǒng)之類的“玩具性”項(xiàng)目,缺乏系統(tǒng)的工程訓(xùn)練,結(jié)果是學(xué)生好像學(xué)了,但一遇到真實(shí)案例,卻感到無從入手。
2 Java課程群體系構(gòu)建
基于以上分析,筆者所在Java教學(xué)團(tuán)隊(duì)以一個(gè)已完成的實(shí)際工程項(xiàng)目“智慧旅游系統(tǒng)”為主線構(gòu)建Java課程群教學(xué)方案。該項(xiàng)目涉及Web開發(fā)、移動(dòng)互聯(lián)及大數(shù)據(jù)分析。首先,在學(xué)生具備大一C++程序設(shè)計(jì)及數(shù)據(jù)結(jié)構(gòu)算法基礎(chǔ)的前提下,大二上開設(shè)Java程序設(shè)計(jì),邊學(xué)習(xí)邊實(shí)踐,分章節(jié)完成從項(xiàng)目拆分出來的一些基本類;然后大二下繼續(xù)學(xué)習(xí)Java Web開發(fā),完成智慧旅游網(wǎng)站系統(tǒng),由于涉及到數(shù)據(jù)存儲,可以實(shí)踐同期開設(shè)的數(shù)據(jù)庫課程知識;接下來,大三上學(xué)習(xí)基于Android平臺的移動(dòng)軟件開發(fā),實(shí)踐部分以大二完成的旅游網(wǎng)站為后臺,通過一定界面同步其中的數(shù)據(jù)到手機(jī)端;最后,大三下學(xué)習(xí)基于Hadoop平臺的大數(shù)據(jù)分析,實(shí)踐部分以前面的網(wǎng)站及手機(jī)軟件為載體,把真實(shí)客戶使用數(shù)據(jù)作為數(shù)據(jù)源進(jìn)行分析與挖掘。這樣,通過將一個(gè)大的真實(shí)系統(tǒng)分拆到各個(gè)課程,邊學(xué)習(xí)邊實(shí)踐,循序漸進(jìn)逐步實(shí)現(xiàn),同時(shí)又把各個(gè)課程聯(lián)系起來,融會(huì)貫通成一個(gè)完整體系,詳見圖1。
[智慧旅游系統(tǒng)][子模塊1
部分系統(tǒng)類][子模塊2
旅游網(wǎng)站][子模塊3
手機(jī)端程序][子模塊4
后臺數(shù)據(jù)分析] [拆分] [Java
核心基礎(chǔ)][Java Web
企業(yè)軟件開發(fā)][Android
移動(dòng)軟件開發(fā)][Hadoop
大數(shù)據(jù)分析] [完成] [完成][完成][完成] [支撐][學(xué)習(xí)路線][前期知識
C++、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫]
圖1 Java課程群體系
⑴ Java基礎(chǔ)
Java語言程序設(shè)計(jì)是計(jì)算機(jī)專業(yè)一門必修課程,也是后續(xù)課程的基礎(chǔ)。Java開設(shè)學(xué)期至少是在第三學(xué)期,所以有前期C++的基礎(chǔ),因而在理解面向?qū)ο蠓矫鏁?huì)比較容易,其中的核心內(nèi)容包括:Java基本語法、Java面向?qū)ο蠡A(chǔ)(封裝、繼承、多態(tài)類、抽象類、接口)、常用類(字符串類、日期類)、異常、集合類、序列化、反射、泛型、多線程、網(wǎng)絡(luò)、設(shè)計(jì)模式等[4],除了各知識點(diǎn)常規(guī)的一些范例代碼外,將圖2中子模塊1的系統(tǒng)類按照各個(gè)知識點(diǎn)分到各章節(jié),讓學(xué)生自己動(dòng)手編碼,當(dāng)一學(xué)期學(xué)完時(shí),系統(tǒng)的一些基本類也就實(shí)現(xiàn)了,從而可以體會(huì)Java的部分編程思想。在編碼過程中,推薦學(xué)生用的工具是EditPlus或者UltraEdit之類的編輯軟件和J2SE API文檔,而把Eclipse之類的高級軟件放在后續(xù)課程采用,因?yàn)槠渥詣?dòng)提示功能不利于初學(xué)者扎實(shí)的掌握基礎(chǔ)知識。
⑵ Java Web工程
Java天生就是為Internet而生,所以基于Java的Web開發(fā)技術(shù)是目前軟件開發(fā)的主流,可以將其設(shè)在第四學(xué)期。涉及到的內(nèi)容包括兩大部分:Java Web基礎(chǔ)、Java Web高級。Java Web基礎(chǔ)包括:Html、Jsp、Servlet編程及配置、JDBC編程及配置、MVC思想;Java Web高級包括:Struts、Hibernate、Spring編程、配置及其聯(lián)合使用。對于編程工具,在Java Web基礎(chǔ)部分延續(xù)Java基礎(chǔ)學(xué)習(xí)時(shí)的工具,只不過API換成了J2ee API;在Java Web高級學(xué)習(xí)時(shí)納入Eclipse開發(fā)工具,便于快速開發(fā)。同Java基礎(chǔ)學(xué)習(xí)一樣,各章節(jié)配備基本練習(xí),同時(shí)也要完成圖2中將智慧旅游網(wǎng)站按照學(xué)習(xí)進(jìn)度拆分出來的各個(gè)小模塊,最終要求在學(xué)期課程結(jié)束時(shí),能實(shí)現(xiàn)該旅游網(wǎng)站,相對于前面的Java基礎(chǔ),這個(gè)課程有“所見即所得”的效果,特別是最后結(jié)課時(shí)能完成一個(gè)旅游網(wǎng)站,對于學(xué)生來說,比較有成就感,從而可以激發(fā)他們的學(xué)習(xí)興趣與動(dòng)力。
⑶ 基于Java的移動(dòng)軟件開發(fā)
移動(dòng)互聯(lián)早已融入現(xiàn)代生活,正如本世紀(jì)之初,各地如火如荼建設(shè)網(wǎng)站一樣,現(xiàn)在流行的是開發(fā)各種手機(jī)業(yè)務(wù)軟件,將Internet延續(xù)到移動(dòng)互聯(lián)網(wǎng)。目前移動(dòng)互聯(lián)領(lǐng)域兩大開發(fā)平臺平分秋色,分別是Google陣營的Android平臺和蘋果陣營的IOS平臺,前者是基于Java的,后者是基于Object C的。考慮到學(xué)習(xí)的延續(xù)性及整體性,選擇基于Java的Android平臺進(jìn)行教學(xué)。移動(dòng)軟件一般都是與Java Web搭配使用,后者作為服務(wù)器,前者負(fù)責(zé)讀寫其數(shù)據(jù)到手機(jī)端展示,可以看作是Web軟件的延伸,Java Web也就成了移動(dòng)軟件開發(fā)的背景知識,所以將此課程設(shè)在第五學(xué)期。主要學(xué)習(xí):Android環(huán)境搭建、體系結(jié)構(gòu)、基本組件(Activity、Service、BroadcastReceiver、ContentProvider、Handler、View、Intent)、數(shù)據(jù)操作SQLite、界面設(shè)計(jì)、圖形圖像及多媒體應(yīng)用、位置服務(wù)與地圖應(yīng)用、認(rèn)證與異步任務(wù)等。本課程實(shí)踐部分就以Java Web課程的成果“智慧旅游網(wǎng)站”為后臺,在邊學(xué)習(xí)邊實(shí)踐中,逐步完成智慧旅游Android版前臺,Web部分一旦更新或發(fā)布數(shù)據(jù),Android端同步更新,對于有興趣的同學(xué),還可以將手機(jī)wap、微信等方式融合進(jìn)來,實(shí)現(xiàn)系統(tǒng)在多個(gè)平臺互聯(lián)互通,從而更貼近實(shí)際應(yīng)用。
⑷ 基于Java的大數(shù)據(jù)編程
如今是一個(gè)大數(shù)據(jù)的時(shí)代,是人工智能、數(shù)據(jù)挖掘從象牙塔走向?qū)嶋H應(yīng)用,煥發(fā)青春的時(shí)代,對于軟件編程人才來說,這也是一個(gè)在純技術(shù)基礎(chǔ)上增加點(diǎn)科研含量,從而與普通軟件人才拉開差距的機(jī)會(huì),更幸運(yùn)的是大數(shù)據(jù)的基礎(chǔ)平臺Hadoop是基于Java的,這無疑是Java學(xué)習(xí)者的一大福音。本著“科學(xué)、發(fā)展”的思想,筆者所在團(tuán)隊(duì)提出將“Java大數(shù)據(jù)編程”增加到Java課程體系,在第六學(xué)期開課,背景知識“Linux應(yīng)用及編程”課程設(shè)在第五學(xué)期。主要內(nèi)容是:Hadoop集群安裝及原理、hdfs命令行、Java操作hdfs的常用API接口、Java Map/Reduce編程、Hbase集群安裝及原理、Hbase命令行操作、Java操作Hbase的常用API接口、flume抽取日志;hive安裝及命令行操作、mahout入門、分布式集群管理zookeeper集群安裝及原理及Java常用操作接口等等。實(shí)踐部分以前面的網(wǎng)站及手機(jī)軟件為載體,以真實(shí)系統(tǒng)產(chǎn)生的數(shù)據(jù)作為數(shù)據(jù)源在大數(shù)據(jù)平臺上進(jìn)行數(shù)據(jù)分析與挖掘,產(chǎn)生一定有意義的結(jié)果,然后在Web端、手機(jī)端以圖表等可視化形式展現(xiàn),形成前端是Android、中端是J2EE、后臺是大數(shù)據(jù)分析的技術(shù)鏈,把前后課程打通,融匯成一個(gè)完整的體系。
3 Java課程群教學(xué)方法探討
通過對筆者及所在團(tuán)隊(duì)對多年的Java教學(xué)實(shí)踐、同行的教學(xué)觀摩、學(xué)生對教學(xué)反饋的內(nèi)容進(jìn)行總結(jié),再結(jié)合Java課程群的構(gòu)建,提出以下三點(diǎn)教學(xué)方法以供探討。
⑴ 拆分案例教學(xué)法
如前所述,可以把要學(xué)習(xí)的課程群按課程、章節(jié)、重要知識點(diǎn)列出,然后將一個(gè)大的已開發(fā)完成的真實(shí)項(xiàng)目拆分到這些知識點(diǎn)中去,在學(xué)習(xí)過程中,逐步地、循序漸進(jìn)地完成學(xué)習(xí)。課程學(xué)完,也就完成開發(fā)了。這樣學(xué)生容易建立起對整個(gè)課程體系的直觀認(rèn)知,也可以真正學(xué)到東西,以后遇到實(shí)際項(xiàng)目時(shí),就知道怎么去分析和把握了。
⑵ 師生互動(dòng)法
目前國內(nèi)大多數(shù)大學(xué)的教育方式還是傳統(tǒng)的填鴨式教育,老師在上面講,學(xué)生在下面聽,課后普遍反映效果不佳,有時(shí)即使老師想互動(dòng)一下,提幾個(gè)問題,大多數(shù)學(xué)生也表現(xiàn)不積極,或回答不上,學(xué)生并沒有跟上老師的教學(xué)進(jìn)度。究其原因:學(xué)生是在被動(dòng)的學(xué)習(xí),沒有發(fā)揮出主觀能動(dòng)性。因此,我們嘗試在傳統(tǒng)教學(xué)中,抽取一些知識章節(jié),專門讓給學(xué)生講。具體做法是:把班級的學(xué)生按三人一組分工,一個(gè)負(fù)責(zé)搜集講課背景資料,一個(gè)負(fù)責(zé)案例演示,一個(gè)負(fù)責(zé)講解,學(xué)生講,老師聽,然后提出問題大家討論,學(xué)生參與的積極性和主動(dòng)性高,對知識點(diǎn)理解的也會(huì)比較深刻。
⑶ 團(tuán)隊(duì)任務(wù)驅(qū)動(dòng)法
通過前面的拆分案例教學(xué)法,讓學(xué)生完成了一個(gè)真實(shí)系統(tǒng),但這個(gè)過程是在老師的輔助下實(shí)現(xiàn)的,而且需求分析、系統(tǒng)設(shè)計(jì)都是預(yù)先給定的,對學(xué)生實(shí)戰(zhàn)來說這還遠(yuǎn)遠(yuǎn)不夠。因此,在本課程學(xué)習(xí)完之后,還要借助課程設(shè)計(jì)的機(jī)會(huì),安排其他真實(shí)項(xiàng)目[5]。學(xué)生以三人為一組,從中選出項(xiàng)目經(jīng)理,然后老師作為客戶提出各個(gè)系統(tǒng)的需求,項(xiàng)目經(jīng)理進(jìn)行需求分析、設(shè)計(jì)及安排組員進(jìn)行開發(fā),同時(shí)要求小組成員定期提交文檔及開發(fā)進(jìn)度報(bào)告,盡可能的模擬企業(yè)真實(shí)軟件開發(fā)場景。一個(gè)項(xiàng)目完成后要進(jìn)行總結(jié)與討論,然后各個(gè)項(xiàng)目組互換需求,項(xiàng)目經(jīng)理也由組員輪流擔(dān)任,這樣經(jīng)過不同項(xiàng)目、不同角色的輪番歷練,學(xué)生才能積累到一定實(shí)戰(zhàn)經(jīng)驗(yàn)。
4 結(jié)束語
本文通過對當(dāng)前的Java職業(yè)需求及高校教學(xué)現(xiàn)狀分析,再結(jié)合筆者及所在團(tuán)隊(duì)的教學(xué)實(shí)踐,提出了建立Java課程群的教學(xué)體系,并將移動(dòng)互聯(lián)網(wǎng)開發(fā)、大數(shù)據(jù)編程納入其中,然后通過拆分案例教學(xué)法將一個(gè)真實(shí)系統(tǒng)分散到各個(gè)知識點(diǎn)中,讓學(xué)生在逐步的學(xué)習(xí)過程中進(jìn)行項(xiàng)目訓(xùn)練。為了強(qiáng)化學(xué)習(xí)效果,在教學(xué)中穿插了師生互動(dòng)法、團(tuán)隊(duì)任務(wù)驅(qū)動(dòng)法作為對傳統(tǒng)教學(xué)的有益補(bǔ)充。Java技術(shù)仍在不斷地向前發(fā)展,其課程體系改革的步伐也不會(huì)停止,因此,如何培養(yǎng)出更適應(yīng)時(shí)代需求的軟件人才,如何更好地提高教學(xué)效果,如何最大限度的激發(fā)學(xué)生的學(xué)習(xí)興趣,是長期的教學(xué)改革課題,需要持續(xù)研究和摸索經(jīng)驗(yàn)。
參考文獻(xiàn)(References):
[1] TIOBE2015年5月編程語言排行榜[EB/OL].http://
digi.163.com/15/0514/10/APIODJHI00162OUT.html
[2] Java編程語言全球最熱的編程語言[EB/OL]. http://www.
douban.com/note/414530636/.
[3] 王巖,黃嵐,杜偉.Java課程教學(xué)體系構(gòu)建探索[J].計(jì)算機(jī)教
育,2013.9(18):83-86
[4] Bruce Eckel. Java編程思想III[D].機(jī)械工業(yè)出版社,2005.
[5] 劉文杰,吳婷婷,鄭玉.基于任務(wù)驅(qū)動(dòng)的小組協(xié)作Java教學(xué)模
式研究[J].計(jì)算機(jī)教育,2010.10:55-61