论文导读::软件行业对Java应用开发人员的[1]需求量很大。作业布置的技巧。考核方式的选择。
论文关键词:Java,教学方法,作业布置,考核方式
软件行业对Java应用开发人员的[1]需求量很大,但在实际Web软件开发中,要求Java软件工程师需要掌握JavaSE、JSP and Servlet、Struts、Spring和Hibernate等诸多框架和技术才能胜任。因此,对于教学工作者来说,如何能够在有限的本科教学中最大化地培养学生动手开发Java应用的能力,以适应市场的需求,是急需研究和解决的问题。闽江学院计算机科学系从2003年开设Java课程,起初的教学效果不是很理想,往往有学生大学毕业了还没有熟练地掌握这一平台的开发技术,直接影响了就业。针对这种情况,笔者在多年的教学实践中不断地探索、改进教学方法和经验,目前取得了良好的成效。越来越多的毕业生就职于Java用人单位教学方法,并获得一致肯定。现就如何设置Java系列课程教学与实验实训、改进教学方式、作业布置、考核方式等方面进行探讨。
1Java系列课程的设置
闽江学院计算机科学系有两个专业开设Java系列课程:计算机科学与技术和软件工程。系里通过与福建工程学院等兄弟院校交流,同时又对博洋、北大青鸟等培训机构的相关课程体系进行深入分析,再结合高校教学的实际情况,将Java系列课程分为Java程序设计基础、Java高级实训系列、JSP程序设计、Android程序设计(选修 )和SSH2程序设计5门课程,分散在不同的学期来授课,以知识转化为能力为目标,以应用实践为主线。其中Java高级实训学分4学分,又细分为4个子课程,每个子课程1学分,分别是Java数据库实训、Java操作系统实训、Java多媒体实训、java网络实训。不同实训子课程随同相关专业课程同学期授课。该系列课程从教学内容上覆盖了用人单位最常用的程序设计技术,同时与其他专业课形成良好的互补关系,从一定程度上保证了授课的完整性和学生动手能力的有效培养。计算机系本科专业的Java系列课程设置如表1所示:
表1 计算机系本科专业Java系列课程设置
课程名称
|
开设学期
|
学分
|
总学时(理论/上机)
|
实训周数
|
Java程序设计基础
|
2
|
2
|
2*16+10=32(16/26)
|
1
|
Java数据库实训
|
3
|
1
|
4+10=14(4/10)
|
1
|
Java操作系统实训
|
4
|
1
|
4+10=14(4/10)
|
1
|
Java多媒体实训
|
5
|
1
|
4+10=14(4/10)
|
1
|
Java网络实训
|
5
|
1
|
4+10=14(4/10)
|
1
|
JSP程序设计
|
6
|
3
|
3*16=48(32/16)
|
1
|
Android程序设计(选修)
|
7
|
2
|
3*16+10=48(32/26)
|
1
|
SSH2程序设计
|
7
|
4
|
4*16+10=64(32/42)
|
1
|
从表中可以看到,自第2学期开始,每学期都有Java相关技术的教学与实践,Java总的课时没有增加许多,课时分散到各个学期,从而达到了持续学习与实践的效果。
下面列出各课程的主要内容:
1)Java程序设计基础主要讲授内容为:标示符、关键字和数据类型、运算符、表达式和语句、类、对象和接口、字符串、时间、日期和数字、异常。
2)Java数据库实训主要讲授内容为:JDBC、设计模式基础。
3)Java操作系统实训主要讲授内容为:多线程(基本线程类和concurrent框架)、文件I/O。
4)Java多媒体实训主要讲授内容为:Awt和Swing、JMF、Java常用数据结构Util。
5)Java网络实训主要讲授内容为:Socket编程。
6)JSP程序设计主要讲授内容为:Servlet、Jsp、Dao设计模式、MVC设计模式、服务端隐含对象、标签和JSTL、EL、过滤器、监听器。
7)Android程序设计(选修)主要讲授内容为:Android应用程序结构、Activity和Intent、Android基本组件、Android数据存储技术、Android Service技术龙源期刊。
8)SSH2程序设计主要讲授内容为:Struts2、Spring、Hibernate以及三者之间的整合。
学生在大一上学期已经学习了C语言程序设计,已具备面向过程程序设计的思想,所以Java程序设计基础课程应重点培养学生面向对象编程思想以及如何用Java语法表达这种思想。笔者认为,对于基本数据类型等基础知识可以简略介绍,有些无法在课堂上介绍的知识点可以通过布置课后作业让学生掌握。当然,在布置课外作业时,不单纯布置程序设计题目,而是布置相应的任务,引导学生查阅有关文档资料教学方法,通过自主学习找到解决实际问题的方法,从而增强他们的编程自信心。
实训课上,专业的理论知识将指导Java相关API的开发实践。教师在开学初授课时,将本学期的实训任务以及需要的相关知识文档介绍给学生,使学生在任务驱动下带着实践的动机去学习理论知识;学期期间,动手能力强的同学已经可以初步设计实现实训大作业;到了期末,再专门安排一周左右的集中式实训,其主要目的是让大多数同学都有相对集中的时间开发系统。当然,如果条件允许,集中实训的时间可以适当放宽些,进而更加方便学生与教师探讨实训中碰到的实际问题。
通过Java系列课程的系统学习,学生可基本掌握Java企业级开发所需要的技术,走上用人单位的工作岗位后,适应周期短。
2.课堂教学方式的选择
知识的教授方式直接关系到教学目标的实现好坏。目前采用的知识点讲授方式主要有:
2.1 幻灯片逐步演示程序代码
这种方式的优点是:条理清晰、比较符合传统的教学习惯,方便展现大量知识点。其缺点是:无法展现代码编写的历史过程,只能给出结果,对于代码编写过程的经验展现帮助甚少。
2.2 课堂现场编程调试分析代码
其优点是:学生直观感受代码如何从零开始演化、推进形成最终的解决方案。通常复杂案例的代码是由多方面因素综合考虑形成的结果,最终的结果代码如果直接展现给学生,学生对代码的理解复杂度就会大大增加。通过现场编程,演示代码如何重构以符合新需求的过程,使得学生的注意力始终保持集中,学习曲线保持平缓上升,授课效果将极大改善。当然,这种授课方式也存在缺点:不仅要求教师必须具备扎实的编程功底,碰到问题能够现场及时解决教学方法,而且现场编写代码比较耗费时间。一个改善的方法是借助现代IDE编程环境的大量快捷键,使用代码模板的方式写程序,能够极大提高编写速度和降低语法出错率。
2.3 结合代码查看工具(如Source Insight)课堂运行讲解课下编写好的代码
其优点是:Source Insight工具能够快速定位关键代码点,代码的穿插跳转与授课思路保持同步,可在较短时间内讲解完较长的程序。缺点是:缺少逐步推导过程,学生不知从何处着手分析代码,学生无法了解代码的编写过程。
笔者在讲授Java系列课程时,综合运用以上的几种方法。对于涉及概念知识的介绍,适合用幻灯片演示讲解。对于核心程序,在课堂上以测试驱动开发(test-driven development)的方式进行讲解。测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码。也即在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。这样代码就可以先表达“需求”,再展现“实现”,学生接受知识就更加自然。对于较长且复杂的程序,则采用课堂运行讲解课下编写好的代码的方式讲授。期间对于小的模块也可以考虑结合课上当堂编程的方式混合讲解。
3.作业布置的技巧
笔者曾经在爱恩实达学院作为中方教师上过澳洲塔斯玛利亚大学计算机科学系Java系列课程。在与外方教师合作教学的过程中发现,外方教师布置的作业形式多样、启发思维、内容丰富。因此在现有的Java教学中,笔者也借鉴了这一经验,现把布置作业的要点归纳如下:
3.1在任务驱动模式下,以解决问题为导向,提供相关学习文档指导学生自主学习
课堂时间有限,教师不可能将所有的知识点在课堂上详细讲述。比如对于面向对象的三大特性:封装、继承、多态,学生容易理解前两个特性,而对于第三个特性很不好接受。因此教学方法,教师可以在设计课外作业时,提供面向对象的经典文献资料指导学生查阅,并在作业中根据文献介绍的知识要点设计作业题目,布置给学生解决,从而检阅学生的理解情况。
3.2 使用屏幕录制工具重现演示过程,给学生足够的参考
为了让学生快速掌握Java IDE――Eclipse,教师设计了多个开发用例场景,使用屏幕录像工具将操作过程录制下来,让学生边看录像边动手做,给学生足够的参考。设计的开发用例场景有:编码运行、调试排错、代码辅助、eclipse中配置和查阅API、重构等。
3.3 在布置作业时要介绍代码的编程设计思想,用UML的类图、序列图等展现软件开发的动态演进。
虽然学生还未系统地学习过UML知识,但UML中的类图、序列图,本身十分直观。学生通过几个代码例子对照,就能很快理解,体会到需求演化为设计最后到代码实现的一个过程。笔者认为,很多设计模式思想都可以在作业布置中传授给学生。
4.考核方式的选择
Java系列课程考核目标是既要考核学生的理论掌握水平,又要考核学生的实际编程能力龙源期刊。目前从考试形式上采用三种方式:大作业、机试、笔试。三种方式的考核成绩加权相加作为学生的期末成绩,笔者采用的比例是20%、20%、60%。
4.1大作业方式
教师在开学初布置大作业任务。对于教师给定的若干个大作业题目,班级以3-5个学生为单位自由分组,每组从中任选一个作业完成。小组也可以自拟题目,但题目的复杂性应不低于教师给定的题目。每个月各小组应提交大作业进展报告,期末教师统一安排时间检查大作业。其考核的标准主要有:大作业报告文档的完整性、系统的实现完整度以及现场检查大作业时学生回答问题的情况等。通过小组成员之间的互助合作,不仅提高了学生学习的主动性和对学习的自我控制,更能促进学生间良好的人际合作关系,促进团队精神的培养。
4.2机试
半期考采用机试方式教学方法,主要考核学生的编程能力。教师布置若干套编程题目,学生随机选择其中一套现场编程。在实际的教学中,笔者在机房部署了一个在线程序批改系统。学生做好程序,提交至系统后,由系统中的评判程序采用黑盒测试法进行判题。这种考核方法可以快速、高效、大批量评判学生的编程逻辑。
4.3笔试
期末考试采用笔试方式。笔试除了适合考核概念性题目,也要注重实际应用知识点的考查,如企业用于职员面试的题目,多来自于实际工作中,很值得我们参考。同时也应适当结合具体的程序片段,考查学生阅读代码和分析代码的能力。若能采用合适的在线考试系统,实现笔试无纸化,会减轻教师批改试卷的工作量。目前笔者正致力于能实现主客观题自动批改的Java考试系统的研发。
5.结语
Java系列课程的设置、课堂教学方式、作业布置及考核方式都要以有利于培养满足企业实际需求的Java编程人员为出发点。提高教学质量是从事计算机教育的工作者都必须重视的问题,更为重要的是教育工作者要在教学实践中不断地更新观念和知识,以适应教学改革的需要,为21世纪培养出更多应用型创新人才。
参考文献
[1]郑阿奇.Java EE 基础实用教程[M].电子工业出版社, 2009.
[2]邵奇峰.Java课程教学方法探讨[J].计算机教育,2008(12).
[3]邓泽林谢中科等.以企业需求为导向的Java程序设计教学改革[J].中国电力教育,2010(28).
|