[摘 要] Java网络程序设计存在教学内容涉及面广,新技术多,实验时间有限等问题。该文从课程教学实际出发,分别从理论课教学、实验课教学和课程设计方面对教学改进作了一定的尝试,并对教学方法和教学手段的使用进行了一些探索。这些教学研究与探索,对Java网络程序设计课程教学有一定的借鉴作用。

[关键词] 程序设计 案例教学 任务驱动 项目导向

本论文为陕西教育学院教改项目“网络程序设计课程实践体系研究(2007JGB01)”所支持。

引言

Java语言是20 世纪90 年代初由sun 公司推出的一种纯面向对象的编程语言,随着互联网和移动设施的发展,由于它的 可移植性跨平台性等优点,在基于网络编程开发中应用广泛,其得到了迅猛的发展。“Java程序设计”是高职高专院校计算机相关专业开设相当普遍的一门学科基础课,各高校都非常重视这门课的教学,作为高校教师必须深入研究这门课的教学规律,提高教学质量。该门课程的教学目标不仅是使学生通过程序设计语言的学习,全面地掌握面向对象程序设计的基本知识与基本操作技能,为学生学习后继课程打下扎实的基础; 同时,它还是培养学生思维能力和实践能力的重要环节。因此,在该课程的教学中,必须更新观念,开拓教改新路,重视学生思维和实践能力的培养。

我院从2003年起面向计算机应用技术和计算机网络技术专业的学生开设了Java程序设计课程,本人一直担任该课程教学工作,围绕着课程内容与结构、教学方法与手段、课程考核等进行全方位的教学改革研究与探索,本文将从Java课程的理论课教学、上机实验课教学以及实训课教学等方面展开阐述。

Java语言教学存在的问题

在Java 程序设计这门课程日常的教学中,通过无数次与学生的交流、沟通,以及与同事之间的相互交流中,作者发现该门课程在实际教学中主要存在以下几个方面的问题:

1.传统教学模式使学生觉得这门课既“苦”又“枯”

传统的教学模式是,“提出概念—解释概念—举例说明”。课程一开始要引进程序设计的思想和大量的新概念,再加上教学方式为“填鸭式”,学生的注意力都被引导在具体的语法细节上,却忽略了解决问题的总体思想,使学生感觉学习这门课既“苦”又“枯”。“苦”的是要学的东西多,学习是被动接受,不会学以致用;“枯”的是学生刚开始时对学这门课感兴趣,但学着学着就没有兴趣了。程序设计本身就比较枯燥, 对于理解能力和自控力相对较弱专科类学生更是如此。

2.教学方法尚有待改进,学生学习兴趣没有得到良好激发

各高校计算机及其相关专业通常在C 程序课程后开设Java课程,教师在讲授过程中仍然使用面向过程的语言的教学方法,学生也习惯于面向过程语言的学习方法,将教学过程和学习重点放在了语法和算法上,忽略了Java 面向对象的编程思路的理解。再加上大部分教师的教学方式还是以教师讲授为主,学生被动接受,课堂气氛沉闷、极其缺乏互动性。教师的讲授大多还是按照现有教材结构,常规的顺序式、灌输式教学,对课堂上引入的程序案例不能精心筛选或者适当修改,使得其缺乏实用性和趣味性,不能吸引学生学习的“注意力”。这种教学方法不利于培养学生解决综合问题与实际应用问题的能力,更不利于启发学生的思维与激发学生的学习兴趣。常常是很多学生上课非常认真,基本的原理和理论也能听懂,但是一遇到实际问题就解决不了。

3.实践环节较为薄弱,实验教学重验证、轻设计,实验效果不佳

多数教师一般严格按照教学大纲和教材组织教学,学生的学习只限于书本上的练习。实验教学的内容多以执行和验证程序为主,以消化课堂理论讲授内容为目的。大部分学生上机实验只是将实验教程上的实例程序输入计算机,遇到问题查阅资料,很少靠自己思考解决。整个实验过程学生就如在练习打字,一旦题目稍有变化便不知如何设计,遇到实际问题更不知如何解决。而且学生没有参与过完整的项目开发,不能把所学的知识贯穿在一起,不能建立起整体的编程思想,达不到软件业对软件人才的要求。

4.考核方式单一,学生受应试教育思想的影响,学习目的狭隘

过去考核方式基本上是以学期结束的笔试为主,考核是知识而不是能力,而且是一纸定结果。很多学生学习Java 仅仅倾向于应试而淡化实际应用与开发,这也导致学生在学习过程中只是一味模仿课本上的实例,知识点零散,对系统开发认识模糊,不能形成软件开发的整体概念。

5.课程结束后,学生只会做一些孤立的小程序

传统的语言教学往往比较注重Java 语言基本语法的讲解,所举编程实例也只是简单地用来验证语法规则,只是“就事论事”的进行教学,致使大多数学生在学习过程中“知其然而不知其所以然”,对Java 程序设计的掌握也仅仅停留在语言使用层面上,不能吃透、用活所学知识,造成学生学完这门课程后仅会孤立地做一些简单的小程序、小例题,而在开发应用软件时设计能力差,无法实现培养学生编程能力的教学目的。

课程教学改革的实施过程

“Java程序设计”课程的教学环节主要包括:理论课教学、上机课教学、实训课教学三个部分。通过多年的教学实践,采用案例教学方法进行理论课教学,采用任务驱动进行上机课教学,采用项目导向进行实训课教学,可以较为有效地提高教学质量。

1.理论课教学采用案例教学与“3W1H”教学法

在理论课教学环节中,教师应根据事先精心设计的案例,合理运用“3W1H”教学法等多种教学技巧,准确地向学生传授基本知识与理论。

(1) “3W1H”教学法

理论课授课要始终贯穿“3W1H”教学法思想。“3W1H”,即What—要求教师简明扼要地讲解清楚所要讲述的内容及要点,指出讲课的重点;Why—要求教师引出为什么要讲述该内容,该内容在软件开发中的作用,引起学生的好奇心及对听课的兴趣;Where—要求教师能够结合切身体会和经验指出所讲述的内容用在软件开发的什么地方,突出所讲内容的实用性;How—要求教师能够指出在实际的软件开发中如何使用所讲述的内容,突出所讲内容在实际软件开发中的使用方法和使用应该注意些什么。How的讲解至关重要。这种教学方法的目的在于不仅仅使学生具有应用软件的使用技能,也具备坚实的理论基础,逐步提升对将来的工作环境适应能力和自信心,且对学习充满兴趣。

例如在Java程序设计中“异常”的讲解思路可分解为:

What:解释什么是异常,why:java中为什么要引入异常,Where:在编程中异常都用在什么地方,How: 在异常处理中怎样使用异常。

(2) 案例教学法

在《Java 程序设计》这门课的教学中,要明确课程改革的思路,要以解决实际问题的程序设计思路作为教学的切入点,以教材的内容为主线,采用案例作为教学引导线,在教学中将晦涩难懂的概念、原理融合到案例中,从实际的例子入手,然后再上升到理论高度,适当讲解理论知识相应的知识点。这种模式不仅有助于学生掌握基本概念、基本理论,同时也能够培养学生解决实际问题的能力。能够自己动手解决实际问题是学习的最直接动力,是激发学习兴趣的根源所在。

通过案例教学时,语法、知识点的讲解全部可用程序说话。让学生先看例子,通过动起来的例子看到程序的运行结果,至于为什么这样,如何做到这样正是教师要讲的新知识点。例子讲完之后布置3 个操作练习。第一个练习是“仿”,即完成一道和例子极其相似的程序,让学生在模仿中巩固和加深对新讲授内容的理解,同时教师巡视单独答疑,帮助学生澄清教师讲解时没有理解的内容,最后教师就共性问题予以强调。第二个练习是“改”,即对第一个例子加工,将教师在讲解时已提及而例题中未涉及到的问题交给学生,激发学生自主学习的热情。在此过程中,教师对关键性问题给出指导思想。第三个练习是“提高”,即将具有一定算法难度但语法适用于当前阶段的问题抛给学生,培养学生的算法设计能力。在此阶段教师主要起启发、引导作用,启发学生的创造性思维。

在Java 程序设计课堂教学中采用案例教学方法可对每一个单一知识点进行教学。选取的案例都尽可能小而精,针对特定问题。通过小型案例讲解独立知识点,以案例模仿的形式促进学生动手能力。学生通过案例研究,培养一种分析问题的能力和独立处理、迁移性的应用能力。学习过程贯穿于案例分析的过程之中,培养学生学会抓住或发现问题,然后结合所学知识寻找解决问题的途径、手段。这样不仅能帮助学生巩固已学的知识,同时也能帮助学生提高自学能力和设计能力,强化了案例教学的效果。

在计算机教学中运用案例教学法,能够充分调动学生学习的积极性,提高学生探索、合作、创新能力,有利于学生理论知识的掌握和实践能力的提高。在实际的教学过程中,每位教师都应根据教学大纲、教学内容和学生实际情况的不同合理运用案例教学等方法,只有这样才能真正提高课堂教学效果,提高教学质量,培养出符合时代发展要求的高素质应用型人才。

2.实验教学采用任务驱动,提高学生动手实践能力

Java程序设计是一门实践性极强的学科,实践环节的教学尤其重要,其目的就是让学生在自主探索的过程中完成对新知识的练习和巩固。有一句关于实践的谚语是这么说的:“我听到的会忘掉,我看到的能记住,我做过的才真正明白。”讲的就是理论作为实践的支撑不是死记硬背背会的。让学生亲自动手实践,编辑调试程序,要比听老师讲、看老师做记忆深刻,同时还能明确知道自己到底哪个地方不会,特别是编译中出现的错误往往让学生印象更深刻。学生通过自己动手实验,进一步理解概念和理论知识, 教师引导学生从知道“怎么去做”到学会“怎么做”,达到理论与实践的完美结合。

实验内容除了教材中的例子, 还包括我们精心设计的实验题目。而实验类型大致可以划分为验证性实验、巩固性实验、分析性实验与综合设计性实验等几种形式。其中验证性实验内容主要来自教材中的例子,这种类型的实验目的是为了验证或演示基础知识点的特点与用法,以便理解这些基础理论。验证性实验是其他实验类型的基石。巩固性实验的目的是对基础知识进一步理解、巩固、深化。在验证性实验的基础上,巩固性实验的实验内容是教师为了让学生加深对基础知识的理解而专门设置的,这些实验内容的选择与设置应具有代表性,难度中等,符合教学要求。学习程序设计必须具备一定的程序分析能力与问题分析能力, 因此分析性实验设置的目的就是为了提高学生的分析能力。这一类型的实验中,教师根据要掌握的知识点设置一些程序题,让学生分析程序运行的结果并上机验证,通过比较自己分析与上机验证的结果,既可以知道自己分析的正误又可以更深入地理解知识。而综合设计性实验以培养学生的综合运用能力。我们把它放在课程实训课中完成。无论哪种类型的实验, 实验课题设置的好坏将影响学习效果,因此,针对每一种实验类型我们应该认真地设计相应的实验课题。

具体在实验教学时,要根据具体的教学内容与学生的实际情况,结合现实IT案例,提出实验任务问题,按照“行为导向”的原则,形成以“学生为主体,教师为主导,从中学, 做中练的一体化”的“教、学、做”一体化实验教学模式,以“解决问题、完成任务”为行动使命, 以“培养能力,掌握知识,培养职业素养”为培养目标,实施“任务驱动、启发式教学、讨论教学、现场教学”等教学方法与手段。

3. 课程实训采用项目导向, 提高学生综合实践能力

当今社会对计算机人才的技术能力、实践能力与创新能力要求越来越高, 综合素质较高的人才越来越受欢迎。 因此, 我们还考虑设置了该类型的实验,如课程设计和课程实训,是将所学的基础知识结合起来用以解决较复杂的问题, 在选择与设置综合性课题时,应综合考虑学生目前掌握的知识情况, 需要涉及哪些知识点,难度如何,将这些知识点结合起来解决什么问题,同时还应考虑学生水平的差异、能力的不同,因此具有一定的思维性、综合性与应用性。

课程设计或实训是对本课程所学内容的综合运用和巩固提高,它在整个Java 教学过程中起到一个承上启下的关键性作用,一方面能够巩固前面所学的基础知识;另一方面能让学生了解Java 开发的一些基本流程,为日后从事Java 领域的开发作铺垫。在课程设计阶段,学生已经有了一定的Java 编程基础,欠缺的主要是实际的开发经验和全面系统的、深入的掌握Java 技术。解决的方法就是通过企业真实项目练习,对所学知识进行深化,然后通过项目来获取实际开发的经验,尽快达到企业的实际要求,让学生在具体的项目中进行学习,缩短学生与企业之间的距离。根据学生的实际能力选择好开发项目是关键,即不能让学生感到太容易,也不能让学生感到无从下手。通过学生的独立实践,使学生熟悉软件开发的全过程,培养团队意识。大大提高了学生理论联系实际和综合分析问题的能力。

有过项目实践经验的人都认为,通过做项目能学到的东西远比听课学到的东西多,因为这是个实践和自主学习的过程。在Java语言程序设计课教学计划需讲授的内容讲授完毕后安排一个为期两周的总结性实训教学课,借助于企业办学的优势,将公司中的实际项目抽取简化,交给学生以小型项目的形式来做,这是对学生一个学期的学习效果的综合考察。在完成这个小型项目的过程中可能会涉及到一些课堂上闻所未闻的知识,利用这个机会锻炼学生搜集资料、整理资料获取知识的自主学习能力。在此阶段,教师的职责不再是教学生如何解决一个具体问题,而是告诉学生到哪里能查找到帮助解决问题的资料。

“项目导向”的实训具体实施时,可将学生分成若干课题研发小组,模拟某企业中项目研发团队。其中被选为组长的同学,可以“情景扮演”成“项目经理”,由他给组内其他成员分配相应的工作任务,按照软件工程的要求完成该项目开发的全部流程。综合实训课程的项目设计注重实用性、真实性。将企业中的实际项目抽取简化,分解成若干模块交给学生以小型项目的形式来做。在完成这个小型项目的过程中可能会涉及到一些课堂上没有学习到的知识,利用这个机会锻炼学生搜集资料、整理资料获取知识的自主学习能力。

对综合实训的总结可以采取分小组答辩的方式,即每个课题小组把此次项目的设计思想、所用到的知识点、实现的技术难点、解决方案、完成效果、尚存在的问题等以PPT 的形式向全体同学、老师做讲解、演示。其他小组的同学和老师可以对其提问,一起讨论。这样的总结形式有效提高了学生自主学习能力、团队合作的精神,为将来步入社会做好了准备;也使得其他组的成员拓展了知识面,汲取到别人的长处,增强学习交流,从而打造了一个“积极”、“热烈”、“和谐”的学习氛围。

结束语

Java 教学一定要围绕提高学生实践应用能力展开,注重面向对象编程思想的培养,通过对《JAVA程序设计》课程各教学环节的教学改革尝试,学生的学习兴趣明显增强,动手能力也有了较大的进步,对本门课程的认可程度大幅度提高。当然,教学改革的方法并不是一成不变的,随着教改的深入,时间的推移,还会有新的问题出现,我们对教学改革的探索还将继续。

参考文献:

[1]刘新桥等.JAVA程序设计课程教学改革的探索与实践[J].长沙航空职业技术学院学报,2009,6,第9卷第2期.

[2]刘梦娟等.《互联网络程序设计》特色课程建设的实践探索[J].福建电脑,2011,1.

[3]俞辉,计算机专业提高Java 语言教学效果的探索与实践[J].计算机教育,2008(14).

[4]贺建英.如何提高高校学生Java 语言的实践能力[J].电脑知识与技术,2008(1).