论文部分内容阅读
摘要:Java是一门易入门、难学精的课程,传统的教学方法已不能适应企业的用人需求。针对这·问题,文章明确了本课程的教学目标,确定了教学内容,并探讨了相应的课堂教学方法、实验教学方法、考核方法,实际结果表明该教学改革提高了学生的学习兴趣、培养了学生良好的编程思维和较强的动手能力,更好地适应了企业的要求。
关键词:Java;计算机;程序类课程;教学改革
当前,几乎所有的大学都开设了计算机专业,这一专业的开设对于促进我国信息化发展作出了贡献,同时也造成了大量的潜在软件从业人员。但从企业用人的角度来看,却出现了没有足够专业人员符合工作需求,从而出现了这样一组矛盾:每年数以万计软件专业学生毕业,但软件企业却难以招聘到合适的员工。这说明了当前大学的程序类课程的教学内容、教学方法、教学手段等方面出现了滞后,没有与社会实际需求挂钩,在一定程度上造成了软件专业学生就业难的问题。
针对这一实际问题,长沙理工大学计算机与通信工程学院(以下简称“我院”)为了提高学生编程能力,成立了軟件设计研究所,专门进行语言类程序教学工作,并根据当前主流的开发平台和语言,成立了教研小组,以便更好地进行教学交流、教学改革,以提高教学质量,从而使学生更能适应企业的要求。J2EE是其中重点的教学方向之一,包括Java程序设让企业级Java开发技术等课程,而Java程序设计是Java类课程基础,本门课程的教学效果直接决定后续课程的教学质量,因此,Java程序设计的教学工作具有重要的地位。本文根据近年的Java程序设计课程的教学实践,对Java程序设计课程从教学内容、教学手段、考核办法等几个方面进行了探讨。
一、教学目的与教学内容
据统计,Java程序员的市场需求量稳居第一,它对学生的要求也较高,传统的教学很难达到企业的需求,而Java是计算机专业高年级的课程,其教学质量直接面对企业的考核。因此Java教学不能仅仅满足于完成教学任务,而应该以企业需要为出发点,对学生进行强化训练,使学生能够达到企业用人的基本要求,提高学生的就业能力,以弥补传统教学与企业用人之间的鸿沟。
为了达到这一目的,首先需要明确教学内容。大学的程序类课程是系列化的教学,在Java之前已经学过多门语言课程,如c语言。这些语言类课程的基本风格、语法、程序逻辑是一样的,因此在Java教学中,对于这些基本的内容不必详细讲解,通过简单的回顾即可,应该把大量的时间和资源用于更高级、更专业内容的学习,这样,学生才能更快地提高自身素质,加强编程能力。
目前,市面上很多教材对于Java的介绍偏容易,尤其是对于Java的一些重点内容并没有详细介绍,这对于学习Java是不好的。笔者认为Java的学习重点可以集中于六个方面。
1.面向对象鳊程
Java是一种纯粹的面向对象的程序设计,因此,掌握面向对象的思想和方法是重中之重。如封装、继承、多态、抽象等内容,其中抽象是难度非常大的,需要长期的培养与熏陶,如一些框架技术,就大量用到抽象、多态等技术。
2.10操作
10是Java初学者感到困惑的地方,因为涉及输入/输出的类非常多,Java在设计类库的时候采用装饰者模式,初学者刚开始的时候难以习惯,这时,授课教师须重点讲解Reader与Stream的区别与使用场合。
3.多线程
多线程是操作系统中的概念,现在的高级编程语言都支持多线程,可以结合操作系统来讲解,同时需要强调临界资源、并发等问题,通过讲解,尽量使学生能够理论联系实际。
4.集合
集合是系统开发常用的,本质是数组,但集合是存储空间能够动态变化的数组,如ArrayList、HashMap等,可以结合数据结构,讲解存储空间动态变化的原理,以及Hash的实现原理,排序算法等内容,使学生具有更好的数据结构的应用能力。
5.反射
反射是Java高级应用中大量使用的技术,如struts、spring、hibernate等,通过使用反射可以使程序组件更加抽象,适应面更。
6.常用的设计模式
常用的设计模式,如工厂模式、单例模式、模板模式、组合模式等,需要强调动态代理模式,这是面向切面编程的基础。
以上列举的内容是一个合格Java从业者必须深刻理解和掌握的内容,当然,除此以外,还有网络编程、swing等技术,因为企业的需求有限,这些技术可以略讲。
通过这些知识点的学习,可以大大提高学生的积极性,使他们认识到Java语言的特点,拓宽了眼界,还可以理论联系实际,更重要的是这些内容衔接了Web开发的内容,有利于学生们后续的学习。
二、课堂教学方式
语言课的教学对于教师来说是存在挑战性的,这些课程相对而言比较枯燥,很多同学对此难以提起兴趣,导致不愿学,学不会。授课教师应该调动一切因素来让更多的人参与学习,因此,教学方式是关键的。
对于Java课程的教学,笔者采用了如下措施。
(1)课程开头回顾上次课的内容,并介绍本次课的重点,使学生听课能够抓住重点。
(2)使用多媒体技术。Java课程中存在大量的案例,我们不仅把这些案例的代码显示在PPT上,还在PPT上用动画的形式把这个案例运行的过程逐步显示,让学生看到程序在运行过程中的中间情况,如内存中数据的变化,让学生更清楚程序的运行是一个动态的过程。在阅读程序时也应该用动态的眼光,而不要像读小说一样按照顺序阅读,这有利于培养学生提高阅读代码的能力和程序分析能力。
(3)现场编写程序。如果课堂上所有的代码都在PPT上做好,然后分析,还不能让学生体会到编程的过程,这其中应该包括调试、跟踪等基本技术。因此,每次上课,我们都会现场编写3个左右的案例,边写代码边解释,然后做好必要的程序注释,让学生养成好的编程习惯。在教师过程中授课老师可以在一些的易错的地方故意犯错,然后进行编译,运行。当出现错误时,并不是急着改错,而是与同学交流,甚至允许同学上讲台上来改错,这样可以提高同学的参与度,最后,利用断点、跟踪等技术,将错误定位并分析错误原因,这样,在让同学全程参与代码的编写的同时,更能提高学习积极性。
(4)每堂课的最后的集几分钟对本节课进行回顾,强调重点,布置一定量的作业,同时把当堂课的案例代码拷贝给学生,让学生在课余的时间里可以研究和模仿。
通过这些环节的贯彻,基本可以带动学生的积极性,使大家可以学习到基本的知识。通过结合课外的一些环节,跟踪大家的学习进度,能够掌握学生的学习状况。
三、实验教学方式
语言类课程教学的另外一个难点在于学生的“眼高手低”,听课能听懂,但不能动手做事,这是很多计算机专业学生的通病。笔者曾经和很多同学进行交流,问一些知识点是没有问题 的,但当笔者问最多编写过多少行代码时,大多数学生都说只有20~30行,这显然是一个严重的问题,一个学生离开学校去企业供职之前,至少应该有写过2万行程序的经验,这样,在编程风格、速度、调试等方面才能满足企业的要求。
因此,学生的动手编程能力亟待加强,加强学生的动手实验的能力,最好的地方当然是实验教学环节。
1.尊重客观的学习过程
学习编程是从模仿编程倒自主编程的过程,没必要刚开始就要学生做比较复杂的实验,而应该让学生在轻松的环境下熟悉编程,使学生不至于产生畏惧心理,同时也有利于学生提高兴趣。在编程初期,可以安排几个例子,让学生对照书本敲程序,运行,自己尝试改错,调试。经过几天的练习,学生基本就能懂得基本的语法、编程方法、调试技巧,这时候,学生自己基本上具备了动手解决问题的意识。
2.安排好前后期实验任务
每堂课依照实验大纲,完成实验任务,对于普遍觉得较难的例子,老师可以集中讲解,现场编程演示,然后让学生当场模仿,掌握编程思想。这样做可以让学生在很短的时间内解决问题,增强信心。在后期教学中,老师则不必将程序完整写出,可以给出大致思想和程序骨架,让学生自己根据自己的理解去完成程序,让学生学会用程序的方法去思考问题,提高他们的编程解决问题的能力。
3.适当地布置工作量大的程序
如果仅仅依靠实验大纲还不能培养优质的程序员,原因在于每章节的實验内容相对较窄,知识点明确,代码量不大,不能发挥学生的联想能力和主动思考问题的能力。笔者曾经要求学生作了几个作品,如FTP工具,该软件应用到了网络、多线程、文件操作、集合、IO、Swing、设计模式等知识点,可以实现客户机/服务器之间进行文件上传/下载操作,还可以支持断点续传功能。通过这个例子,学生用到了Java的所有的基本知识,并做到了融会贯通,其积极意义远远大于相同代码量的若干小程序。
四、考核方式的改革
考核是整个教学中最后一环,用于考查学生学习本门课程的效果。但像Java这样的语言类课程,其考核办法应该要能真实体现同学的学习效果,尤其是动手能力,这才是考查的核心所在。
1.笔试
企业的笔试题往往并不注重概念性的知识点,其面试内容更注重实用,很多的问题都是来自于实际工作中,然后将这些问题稍加修改,用于职员面试。这些来自于工作中的问题都是一些常用的知识点,因此,笔试内容应该注重实际应用知识点的考查,没有必要考太多偏、怪的知识点,只需强调一些基本的、常用的知识点,如接口、多态、集合、多线程等。在考查这些知识点时要更多地结合具体的程序片段,来了解学生是否能够理解和灵活应用这些知识点,并增强学生阅读代码和分析代码的能力。
2.机试
机试的考核只考核编程题,注重考核编程能力,可以结合两种方式进行。
第一种是在线判题。在规定的时间地点上机考试,题目完成后,学生通过网络将程序提交到服务器,由评判程序利用测试数据自动进行判题,即采用黑盒测试法进行判题。这种考核方法可以快速、高效、大批量评判学生的编程逻辑,能够提高学生的编程逻辑、调试能力、编程速度等,满足企业的开发需要。
第二种是项目考查。以两人分组,给定项目,要求每组学生在规定的时间内自行完成,然后由老师在演示现场观看完成情况,包括完成的功能、代码编写的质量、知识点的应用。通过项目考查,可以锻炼学生的系统分析能力,快速查找并利用有用资料来加快项目开发的能力,了解项目开发的过程和方法,另外,还能锻炼企业所强调的团队合作能力,使学生能快速适应企业的团队开发方式,减少磨合时间。
五、总结
企业的需求是客观的、不可回避的,大学Java的教学应该以企业需求为出发点,确定高级应用的教学内容、强化学生编程的能力和分析问题的能力,采用更务实的应用能力的考核办法,使学生更好地明确学习目标,强化编程能力,适应社会需求。实践结果表明,通过新的授课方式,学生的学习积极性得到了很大的提高,动手能力也得到了改善,达到了企业的用人需求,主要表现在求职的速度快、对口率高、薪酬好等方面。我们将继续努力,为学生能更自主地学习研究更多的可行、可靠的方案,使Java程序设计课程的教学趋于完善。
参考文献:
[1]阿诺德,戈斯林,霍姆斯Java程序设计语言(第4版)[M].北京:人民邮电出版社,2006.
[2]辛运帏Java程序设计(第二版)题解与上机指导修订版)[M].北京:清华大学出版社,2010.(责任编辑:郝魁府)
关键词:Java;计算机;程序类课程;教学改革
当前,几乎所有的大学都开设了计算机专业,这一专业的开设对于促进我国信息化发展作出了贡献,同时也造成了大量的潜在软件从业人员。但从企业用人的角度来看,却出现了没有足够专业人员符合工作需求,从而出现了这样一组矛盾:每年数以万计软件专业学生毕业,但软件企业却难以招聘到合适的员工。这说明了当前大学的程序类课程的教学内容、教学方法、教学手段等方面出现了滞后,没有与社会实际需求挂钩,在一定程度上造成了软件专业学生就业难的问题。
针对这一实际问题,长沙理工大学计算机与通信工程学院(以下简称“我院”)为了提高学生编程能力,成立了軟件设计研究所,专门进行语言类程序教学工作,并根据当前主流的开发平台和语言,成立了教研小组,以便更好地进行教学交流、教学改革,以提高教学质量,从而使学生更能适应企业的要求。J2EE是其中重点的教学方向之一,包括Java程序设让企业级Java开发技术等课程,而Java程序设计是Java类课程基础,本门课程的教学效果直接决定后续课程的教学质量,因此,Java程序设计的教学工作具有重要的地位。本文根据近年的Java程序设计课程的教学实践,对Java程序设计课程从教学内容、教学手段、考核办法等几个方面进行了探讨。
一、教学目的与教学内容
据统计,Java程序员的市场需求量稳居第一,它对学生的要求也较高,传统的教学很难达到企业的需求,而Java是计算机专业高年级的课程,其教学质量直接面对企业的考核。因此Java教学不能仅仅满足于完成教学任务,而应该以企业需要为出发点,对学生进行强化训练,使学生能够达到企业用人的基本要求,提高学生的就业能力,以弥补传统教学与企业用人之间的鸿沟。
为了达到这一目的,首先需要明确教学内容。大学的程序类课程是系列化的教学,在Java之前已经学过多门语言课程,如c语言。这些语言类课程的基本风格、语法、程序逻辑是一样的,因此在Java教学中,对于这些基本的内容不必详细讲解,通过简单的回顾即可,应该把大量的时间和资源用于更高级、更专业内容的学习,这样,学生才能更快地提高自身素质,加强编程能力。
目前,市面上很多教材对于Java的介绍偏容易,尤其是对于Java的一些重点内容并没有详细介绍,这对于学习Java是不好的。笔者认为Java的学习重点可以集中于六个方面。
1.面向对象鳊程
Java是一种纯粹的面向对象的程序设计,因此,掌握面向对象的思想和方法是重中之重。如封装、继承、多态、抽象等内容,其中抽象是难度非常大的,需要长期的培养与熏陶,如一些框架技术,就大量用到抽象、多态等技术。
2.10操作
10是Java初学者感到困惑的地方,因为涉及输入/输出的类非常多,Java在设计类库的时候采用装饰者模式,初学者刚开始的时候难以习惯,这时,授课教师须重点讲解Reader与Stream的区别与使用场合。
3.多线程
多线程是操作系统中的概念,现在的高级编程语言都支持多线程,可以结合操作系统来讲解,同时需要强调临界资源、并发等问题,通过讲解,尽量使学生能够理论联系实际。
4.集合
集合是系统开发常用的,本质是数组,但集合是存储空间能够动态变化的数组,如ArrayList、HashMap等,可以结合数据结构,讲解存储空间动态变化的原理,以及Hash的实现原理,排序算法等内容,使学生具有更好的数据结构的应用能力。
5.反射
反射是Java高级应用中大量使用的技术,如struts、spring、hibernate等,通过使用反射可以使程序组件更加抽象,适应面更。
6.常用的设计模式
常用的设计模式,如工厂模式、单例模式、模板模式、组合模式等,需要强调动态代理模式,这是面向切面编程的基础。
以上列举的内容是一个合格Java从业者必须深刻理解和掌握的内容,当然,除此以外,还有网络编程、swing等技术,因为企业的需求有限,这些技术可以略讲。
通过这些知识点的学习,可以大大提高学生的积极性,使他们认识到Java语言的特点,拓宽了眼界,还可以理论联系实际,更重要的是这些内容衔接了Web开发的内容,有利于学生们后续的学习。
二、课堂教学方式
语言课的教学对于教师来说是存在挑战性的,这些课程相对而言比较枯燥,很多同学对此难以提起兴趣,导致不愿学,学不会。授课教师应该调动一切因素来让更多的人参与学习,因此,教学方式是关键的。
对于Java课程的教学,笔者采用了如下措施。
(1)课程开头回顾上次课的内容,并介绍本次课的重点,使学生听课能够抓住重点。
(2)使用多媒体技术。Java课程中存在大量的案例,我们不仅把这些案例的代码显示在PPT上,还在PPT上用动画的形式把这个案例运行的过程逐步显示,让学生看到程序在运行过程中的中间情况,如内存中数据的变化,让学生更清楚程序的运行是一个动态的过程。在阅读程序时也应该用动态的眼光,而不要像读小说一样按照顺序阅读,这有利于培养学生提高阅读代码的能力和程序分析能力。
(3)现场编写程序。如果课堂上所有的代码都在PPT上做好,然后分析,还不能让学生体会到编程的过程,这其中应该包括调试、跟踪等基本技术。因此,每次上课,我们都会现场编写3个左右的案例,边写代码边解释,然后做好必要的程序注释,让学生养成好的编程习惯。在教师过程中授课老师可以在一些的易错的地方故意犯错,然后进行编译,运行。当出现错误时,并不是急着改错,而是与同学交流,甚至允许同学上讲台上来改错,这样可以提高同学的参与度,最后,利用断点、跟踪等技术,将错误定位并分析错误原因,这样,在让同学全程参与代码的编写的同时,更能提高学习积极性。
(4)每堂课的最后的集几分钟对本节课进行回顾,强调重点,布置一定量的作业,同时把当堂课的案例代码拷贝给学生,让学生在课余的时间里可以研究和模仿。
通过这些环节的贯彻,基本可以带动学生的积极性,使大家可以学习到基本的知识。通过结合课外的一些环节,跟踪大家的学习进度,能够掌握学生的学习状况。
三、实验教学方式
语言类课程教学的另外一个难点在于学生的“眼高手低”,听课能听懂,但不能动手做事,这是很多计算机专业学生的通病。笔者曾经和很多同学进行交流,问一些知识点是没有问题 的,但当笔者问最多编写过多少行代码时,大多数学生都说只有20~30行,这显然是一个严重的问题,一个学生离开学校去企业供职之前,至少应该有写过2万行程序的经验,这样,在编程风格、速度、调试等方面才能满足企业的要求。
因此,学生的动手编程能力亟待加强,加强学生的动手实验的能力,最好的地方当然是实验教学环节。
1.尊重客观的学习过程
学习编程是从模仿编程倒自主编程的过程,没必要刚开始就要学生做比较复杂的实验,而应该让学生在轻松的环境下熟悉编程,使学生不至于产生畏惧心理,同时也有利于学生提高兴趣。在编程初期,可以安排几个例子,让学生对照书本敲程序,运行,自己尝试改错,调试。经过几天的练习,学生基本就能懂得基本的语法、编程方法、调试技巧,这时候,学生自己基本上具备了动手解决问题的意识。
2.安排好前后期实验任务
每堂课依照实验大纲,完成实验任务,对于普遍觉得较难的例子,老师可以集中讲解,现场编程演示,然后让学生当场模仿,掌握编程思想。这样做可以让学生在很短的时间内解决问题,增强信心。在后期教学中,老师则不必将程序完整写出,可以给出大致思想和程序骨架,让学生自己根据自己的理解去完成程序,让学生学会用程序的方法去思考问题,提高他们的编程解决问题的能力。
3.适当地布置工作量大的程序
如果仅仅依靠实验大纲还不能培养优质的程序员,原因在于每章节的實验内容相对较窄,知识点明确,代码量不大,不能发挥学生的联想能力和主动思考问题的能力。笔者曾经要求学生作了几个作品,如FTP工具,该软件应用到了网络、多线程、文件操作、集合、IO、Swing、设计模式等知识点,可以实现客户机/服务器之间进行文件上传/下载操作,还可以支持断点续传功能。通过这个例子,学生用到了Java的所有的基本知识,并做到了融会贯通,其积极意义远远大于相同代码量的若干小程序。
四、考核方式的改革
考核是整个教学中最后一环,用于考查学生学习本门课程的效果。但像Java这样的语言类课程,其考核办法应该要能真实体现同学的学习效果,尤其是动手能力,这才是考查的核心所在。
1.笔试
企业的笔试题往往并不注重概念性的知识点,其面试内容更注重实用,很多的问题都是来自于实际工作中,然后将这些问题稍加修改,用于职员面试。这些来自于工作中的问题都是一些常用的知识点,因此,笔试内容应该注重实际应用知识点的考查,没有必要考太多偏、怪的知识点,只需强调一些基本的、常用的知识点,如接口、多态、集合、多线程等。在考查这些知识点时要更多地结合具体的程序片段,来了解学生是否能够理解和灵活应用这些知识点,并增强学生阅读代码和分析代码的能力。
2.机试
机试的考核只考核编程题,注重考核编程能力,可以结合两种方式进行。
第一种是在线判题。在规定的时间地点上机考试,题目完成后,学生通过网络将程序提交到服务器,由评判程序利用测试数据自动进行判题,即采用黑盒测试法进行判题。这种考核方法可以快速、高效、大批量评判学生的编程逻辑,能够提高学生的编程逻辑、调试能力、编程速度等,满足企业的开发需要。
第二种是项目考查。以两人分组,给定项目,要求每组学生在规定的时间内自行完成,然后由老师在演示现场观看完成情况,包括完成的功能、代码编写的质量、知识点的应用。通过项目考查,可以锻炼学生的系统分析能力,快速查找并利用有用资料来加快项目开发的能力,了解项目开发的过程和方法,另外,还能锻炼企业所强调的团队合作能力,使学生能快速适应企业的团队开发方式,减少磨合时间。
五、总结
企业的需求是客观的、不可回避的,大学Java的教学应该以企业需求为出发点,确定高级应用的教学内容、强化学生编程的能力和分析问题的能力,采用更务实的应用能力的考核办法,使学生更好地明确学习目标,强化编程能力,适应社会需求。实践结果表明,通过新的授课方式,学生的学习积极性得到了很大的提高,动手能力也得到了改善,达到了企业的用人需求,主要表现在求职的速度快、对口率高、薪酬好等方面。我们将继续努力,为学生能更自主地学习研究更多的可行、可靠的方案,使Java程序设计课程的教学趋于完善。
参考文献:
[1]阿诺德,戈斯林,霍姆斯Java程序设计语言(第4版)[M].北京:人民邮电出版社,2006.
[2]辛运帏Java程序设计(第二版)题解与上机指导修订版)[M].北京:清华大学出版社,2010.(责任编辑:郝魁府)