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