張華+李勁+吳成英

摘 要: 針對Java教學,在傳統Java基礎、Java Web兩層課程體系的基礎上加入Java移動開發、大數據編程,形成四層課程群,采用拆分案例法貫穿始終,輔以師生互動、團隊任務驅動教學法為補充,力圖最大程度上培養符合職業崗位需求的Java實戰型人才。
關鍵詞: Java; 課程群; 教學方法; 職業
中圖分類號:TP311 文獻標志碼: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語言是目前世界上影響力最大、最受歡迎的編程語言之一,一經Sun公司推出,就得到了計算機軟件開發者的青睞。它所具有的“一次編寫,到處運行”的跨平臺性是其他編程語言所無法比擬的。此外,它還具有卓越的通用性、高效性、安全性,廣泛應用于企業信息系統、嵌入式開發、移動應用、大數據分析等各個層面,因而擁有全球最大的開發者專業社群。過去十年,各高校相繼開設了Java、Java Web課程,但移動互聯、大數據時代的到來對傳統課程體系提出了新的挑戰,同時,日益激烈的就業環境對學生的實踐能力有了新的要求。
本文提出將Android移動開發、Hadoop大數據編程納入Java課程體系,與以前的Java基礎、Java Web共同構成課程群,然后以此為基點,將實際工程項目拆分到各個環節,讓學生在逐步實踐中理解并掌握Java知識體系。
1 Java職業崗位需求及專業建設現狀
TIOBE 2015年6月編程語言排行榜發布,Java語言仍舊位居榜首[1]。據IDC統計,目前全球有450萬以上的Java開發人員,在所有軟件開發類人才需求中,對Java工程師的需求達到全部需求量的60-70%[2]。國內對Java軟件人才的市場需求同樣廣闊,僅以Alexa最新統計國內排名第一位的智聯招聘為例,2015年6月發布的最新數據表明,關于Java招聘的崗位信息就多達12萬余條,其中J2ee崗位26637條,Android崗位51000條,Hadoop崗位8854條。從以上數據可以看出,J2ee需求穩定,而Android市場則可以用火爆來形容,因為Java崗位中有將近一半職位來自于J2ee,從某種程度上印證了移動互聯時代的到來。此外值得關注的是,代表大數據的Hadoop職位在短短幾年時間從無到有,迅速上升,雖然目前只占Java就業率的10%,但業界的發展趨勢表明大數據不單單是“數據的工業革命”,更是一場深刻的科技和產業大變革的組成部分,因而其未來發展勢頭會非常強勁。
為了適應軟件行業對Java開發人才的需要,國內外高校從1997年起就開設了Java相關課程,隨著近幾年Java語言的風行,高校Java課程開設率竟達到了80%以上。從各高校培養方案來看,許多都將Java程序設計作為了骨干課,詳見表1[3]。
Java課程的開設目前還存在以下幾點問題。①課程結構單一。仍然有部分高校還只講授Java知識,稍微好點的,增設了J2ee課程,對于移動互聯、大數據方面沒有涉及,相對于目前社會的發展及需求,這是不夠的。②缺乏成套體系。Java基礎、Java Web、Android、Hadoop這些技術是以Java為核心,在實際項目中分工合作,按照項目的理念來看應該是一條完整的技術鏈,然而目前高校開課都是分開教授的,甚至是不同方向的老師代課,這會造成知識缺乏連貫性與整體性。③實踐性不足。在實際教學中,理論課、實驗課分離,即使有實驗、課程設計也是分散的知識點或類似學生管理系統之類的“玩具性”項目,缺乏系統的工程訓練,結果是學生好像學了,但一遇到真實案例,卻感到無從入手。
2 Java課程群體系構建
基于以上分析,筆者所在Java教學團隊以一個已完成的實際工程項目“智慧旅游系統”為主線構建Java課程群教學方案。該項目涉及Web開發、移動互聯及大數據分析。首先,在學生具備大一C++程序設計及數據結構算法基礎的前提下,大二上開設Java程序設計,邊學習邊實踐,分章節完成從項目拆分出來的一些基本類;然后大二下繼續學習Java Web開發,完成智慧旅游網站系統,由于涉及到數據存儲,可以實踐同期開設的數據庫課程知識;接下來,大三上學習基于Android平臺的移動軟件開發,實踐部分以大二完成的旅游網站為后臺,通過一定界面同步其中的數據到手機端;最后,大三下學習基于Hadoop平臺的大數據分析,實踐部分以前面的網站及手機軟件為載體,把真實客戶使用數據作為數據源進行分析與挖掘。這樣,通過將一個大的真實系統分拆到各個課程,邊學習邊實踐,循序漸進逐步實現,同時又把各個課程聯系起來,融會貫通成一個完整體系,詳見圖1。
[智慧旅游系統][子模塊1
部分系統類][子模塊2
旅游網站][子模塊3
手機端程序][子模塊4
后臺數據分析] [拆分] [Java
核心基礎][Java Web
企業軟件開發][Android
移動軟件開發][Hadoop
大數據分析] [完成] [完成][完成][完成] [支撐][學習路線][前期知識
C++、數據結構、數據庫]
圖1 Java課程群體系
⑴ Java基礎
Java語言程序設計是計算機專業一門必修課程,也是后續課程的基礎。Java開設學期至少是在第三學期,所以有前期C++的基礎,因而在理解面向對象方面會比較容易,其中的核心內容包括:Java基本語法、Java面向對象基礎(封裝、繼承、多態類、抽象類、接口)、常用類(字符串類、日期類)、異常、集合類、序列化、反射、泛型、多線程、網絡、設計模式等[4],除了各知識點常規的一些范例代碼外,將圖2中子模塊1的系統類按照各個知識點分到各章節,讓學生自己動手編碼,當一學期學完時,系統的一些基本類也就實現了,從而可以體會Java的部分編程思想。在編碼過程中,推薦學生用的工具是EditPlus或者UltraEdit之類的編輯軟件和J2SE API文檔,而把Eclipse之類的高級軟件放在后續課程采用,因為其自動提示功能不利于初學者扎實的掌握基礎知識。
⑵ Java Web工程
Java天生就是為Internet而生,所以基于Java的Web開發技術是目前軟件開發的主流,可以將其設在第四學期。涉及到的內容包括兩大部分:Java Web基礎、Java Web高級。Java Web基礎包括:Html、Jsp、Servlet編程及配置、JDBC編程及配置、MVC思想;Java Web高級包括:Struts、Hibernate、Spring編程、配置及其聯合使用。對于編程工具,在Java Web基礎部分延續Java基礎學習時的工具,只不過API換成了J2ee API;在Java Web高級學習時納入Eclipse開發工具,便于快速開發。同Java基礎學習一樣,各章節配備基本練習,同時也要完成圖2中將智慧旅游網站按照學習進度拆分出來的各個小模塊,最終要求在學期課程結束時,能實現該旅游網站,相對于前面的Java基礎,這個課程有“所見即所得”的效果,特別是最后結課時能完成一個旅游網站,對于學生來說,比較有成就感,從而可以激發他們的學習興趣與動力。
⑶ 基于Java的移動軟件開發
移動互聯早已融入現代生活,正如本世紀之初,各地如火如荼建設網站一樣,現在流行的是開發各種手機業務軟件,將Internet延續到移動互聯網。目前移動互聯領域兩大開發平臺平分秋色,分別是Google陣營的Android平臺和蘋果陣營的IOS平臺,前者是基于Java的,后者是基于Object C的。考慮到學習的延續性及整體性,選擇基于Java的Android平臺進行教學。移動軟件一般都是與Java Web搭配使用,后者作為服務器,前者負責讀寫其數據到手機端展示,可以看作是Web軟件的延伸,Java Web也就成了移動軟件開發的背景知識,所以將此課程設在第五學期。主要學習:Android環境搭建、體系結構、基本組件(Activity、Service、BroadcastReceiver、ContentProvider、Handler、View、Intent)、數據操作SQLite、界面設計、圖形圖像及多媒體應用、位置服務與地圖應用、認證與異步任務等。本課程實踐部分就以Java Web課程的成果“智慧旅游網站”為后臺,在邊學習邊實踐中,逐步完成智慧旅游Android版前臺,Web部分一旦更新或發布數據,Android端同步更新,對于有興趣的同學,還可以將手機wap、微信等方式融合進來,實現系統在多個平臺互聯互通,從而更貼近實際應用。
⑷ 基于Java的大數據編程
如今是一個大數據的時代,是人工智能、數據挖掘從象牙塔走向實際應用,煥發青春的時代,對于軟件編程人才來說,這也是一個在純技術基礎上增加點科研含量,從而與普通軟件人才拉開差距的機會,更幸運的是大數據的基礎平臺Hadoop是基于Java的,這無疑是Java學習者的一大福音。本著“科學、發展”的思想,筆者所在團隊提出將“Java大數據編程”增加到Java課程體系,在第六學期開課,背景知識“Linux應用及編程”課程設在第五學期。主要內容是:Hadoop集群安裝及原理、hdfs命令行、Java操作hdfs的常用API接口、Java Map/Reduce編程、Hbase集群安裝及原理、Hbase命令行操作、Java操作Hbase的常用API接口、flume抽取日志;hive安裝及命令行操作、mahout入門、分布式集群管理zookeeper集群安裝及原理及Java常用操作接口等等。實踐部分以前面的網站及手機軟件為載體,以真實系統產生的數據作為數據源在大數據平臺上進行數據分析與挖掘,產生一定有意義的結果,然后在Web端、手機端以圖表等可視化形式展現,形成前端是Android、中端是J2EE、后臺是大數據分析的技術鏈,把前后課程打通,融匯成一個完整的體系。
3 Java課程群教學方法探討
通過對筆者及所在團隊對多年的Java教學實踐、同行的教學觀摩、學生對教學反饋的內容進行總結,再結合Java課程群的構建,提出以下三點教學方法以供探討。
⑴ 拆分案例教學法
如前所述,可以把要學習的課程群按課程、章節、重要知識點列出,然后將一個大的已開發完成的真實項目拆分到這些知識點中去,在學習過程中,逐步地、循序漸進地完成學習。課程學完,也就完成開發了。這樣學生容易建立起對整個課程體系的直觀認知,也可以真正學到東西,以后遇到實際項目時,就知道怎么去分析和把握了。
⑵ 師生互動法
目前國內大多數大學的教育方式還是傳統的填鴨式教育,老師在上面講,學生在下面聽,課后普遍反映效果不佳,有時即使老師想互動一下,提幾個問題,大多數學生也表現不積極,或回答不上,學生并沒有跟上老師的教學進度。究其原因:學生是在被動的學習,沒有發揮出主觀能動性。因此,我們嘗試在傳統教學中,抽取一些知識章節,專門讓給學生講。具體做法是:把班級的學生按三人一組分工,一個負責搜集講課背景資料,一個負責案例演示,一個負責講解,學生講,老師聽,然后提出問題大家討論,學生參與的積極性和主動性高,對知識點理解的也會比較深刻。
⑶ 團隊任務驅動法
通過前面的拆分案例教學法,讓學生完成了一個真實系統,但這個過程是在老師的輔助下實現的,而且需求分析、系統設計都是預先給定的,對學生實戰來說這還遠遠不夠。因此,在本課程學習完之后,還要借助課程設計的機會,安排其他真實項目[5]。學生以三人為一組,從中選出項目經理,然后老師作為客戶提出各個系統的需求,項目經理進行需求分析、設計及安排組員進行開發,同時要求小組成員定期提交文檔及開發進度報告,盡可能的模擬企業真實軟件開發場景。一個項目完成后要進行總結與討論,然后各個項目組互換需求,項目經理也由組員輪流擔任,這樣經過不同項目、不同角色的輪番歷練,學生才能積累到一定實戰經驗。
4 結束語
本文通過對當前的Java職業需求及高校教學現狀分析,再結合筆者及所在團隊的教學實踐,提出了建立Java課程群的教學體系,并將移動互聯網開發、大數據編程納入其中,然后通過拆分案例教學法將一個真實系統分散到各個知識點中,讓學生在逐步的學習過程中進行項目訓練。為了強化學習效果,在教學中穿插了師生互動法、團隊任務驅動法作為對傳統教學的有益補充。Java技術仍在不斷地向前發展,其課程體系改革的步伐也不會停止,因此,如何培養出更適應時代需求的軟件人才,如何更好地提高教學效果,如何最大限度的激發學生的學習興趣,是長期的教學改革課題,需要持續研究和摸索經驗。
參考文獻(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課程教學體系構建探索[J].計算機教
育,2013.9(18):83-86
[4] Bruce Eckel. Java編程思想III[D].機械工業出版社,2005.
[5] 劉文杰,吳婷婷,鄭玉.基于任務驅動的小組協作Java教學模
式研究[J].計算機教育,2010.10:55-61