面向职业岗位的Java课程群构建与教学方法研究
2016-04-22张华李劲吴成英
张华+李劲+吴成英
摘 要: 针对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