底晓强,李锦青
(长春理工大学计算机科学技术学院,长春 130022)
计算机学科是一门新兴的学科,仅有几十年的历史,但由于其发展异常迅速,因此高校本科教学计算机学科教学内容的更新之快,是其他学科所不及的[1-2]。计算机学科是一门对科学性和实践性要求都较高的学科,它不仅注重学生理论基础的培养,更注重学生实践能力的培养[3]。实验教学可以激发学生的学习兴趣,培养学生发现问题和解决问题的能力,提高学生的实践能力和创新能力[4-5]。因此,在计算机学科的教育中,实验教学效果直接关系着学生对知识的掌握和理解。
《网络程序设计》的教学大纲在实验教学环节的目标是培养学生网络程序的设计和编码能力,加深对课堂教学内容的理解,提高学生对《面向对象程序设计》《数据结构》《操作系统》《计算机网络》《数据库原理》和《软件工程》等前导课所学知识在网络程序设计方面的综合应用能力。
在现有的实验教学环节中,实验题目分为演示、验证、设计和综合这4种类型。学生们已经有了程序设计语言的经验,结合《网络程序设计》这门课的特点,不宜安排演示和验证性的题目,否则学生会觉得和程序设计时的课程实验没有什么区别。学生的实验课程比较集中,而且每次实验只有两个学时,如果每次安排一个设计或者综合性实验题目,学生没有精力去完成。如果安排一个需要几次课程完成的设计和综合性题目,一部分学生又会觉得偏难,无从下手,还会有一部分同学,可能因前两次实验效果不好而无法完成后续的实验。长此以往,会让学生对实验课程产生畏惧情绪,失去兴趣。因此,必须打破传统的实验模式,制定更加务实的实验题目,模糊演示、验证、设计和综合这四种实验题目类型的边界,在本文中我们称之为系列化实验题目。
根据前面的分析,系列化实验题目应具备如下特点:
(1)各个实验题目是独立的,后一次实验不依赖于前一次实验的结果;
(2)题目容易理解与实现,每一次实验可以让学生在2个学时内完成;
(3)结合课程教学内容,学生需要综合应用前导课所学知识才能完成实验题目;
(4)在系列化实验进行过程中,能激发学生对相关课程领域知识的应用和思考;
(5)学生完成系列化实验题目后,能实现课程实验教学的目标。
为了达到实验教学目标,首先要设计出符合系列化实验特点的实验题目。我们的实验题目为模拟一台ATM自动提款机。让学生实现:用户登录、存款、取款、转账和查看交易记录等功能。程序架构分为界面层、通信层和数据存储层。
大多数学生都使用过银行的ATM自动提款机,因此题目要求易于理解。为了体现系列化题目的特点,每次实验的功能要求是完全相同的,但是每次实验要求的界面层、通信层和数据层是不同的。下面详细说明界面层、通信层和数据层的类型。
用户界面层分为字符界面、AWT图形界面和浏览器界面3种类型;通信层有单机通信、套接字通信和HTTP通信方法;数据层有内存、数据库、文本文件和XML文件4种存储介质。从这3层中选择不同的类型,可以组合出48个实验题目。
不同的通信方法和数据存储介质的组合,所要运用的前导课程的知识点是不同的,如表1列出了实现不同的通信层和存储层所需的前导课程知识。为了让学生更好地领会《面向对象程序设计》和《软件工程》这两门课程在实验中的作用,进一步强化学生面向对象的设计思想和软件工程意识,我们要求在完成所有的实验后,学生只需要修改配置文件,就可以实现每次实验的界面层、数据层和通信层的无缝切换。例如,能够将ATM自动存款机的字符界面更换成浏览器界面,也能将通信层的套接字通信方法切换成浏览器通信方法。同样,系统也要能在不同的存储方式之间实现快速切换。
表1实验题目所涉及的前导课程
学生在开始的几次实验中,并不要求他们能实现无缝切换的目标,他们可以逐渐达到这个目标。随着学生参加实验次数的增多,会逐渐重构已经完成的代码,逐步利用面向对象的思想设计ATM自动提款机,而这个过程恰恰就是一个完整的软件生命周期。完成各个系列化实验题目,不仅需要掌握《网络程序设计》课程本身的知识,还需要应用不同于前导课程所学的理论和方法,其中面向对象设计和软件工程思想贯穿所有的系列化实验题目,从而潜移默化提高了学生的面向对象设计能力和增进了对软件工程思想的理解。
为了更好地达到系列化实验的教学目标,我们还对学生参加实验的方式进行了改革,学生采用“结对编程”完成实验。与传统的编程方式不同,新的编程方式是两个学生合用一部计算机来完成代码。“结对编程”的价值在于,在某个人思考时,另一个人就开始编码。如果编码的人陷入困境,两个人可以交换位置。如果两个人都陷入了困境,可以求助其他同学或者老师,结对工作可以让实验更顺利地进行。更重要的是,它使得编程工作更具有互动性,可以激发学生们的学习兴趣。
小组成员在共同的协作中还可以培养团队协作精神,没有和谐的团队不可能顺利完成任务。在实际的实验过程中我们发现:实验开始阶段,因为分工并不明确,小组成员的合作并不顺利。随着不断的磨合以及明确的分工,小组成员间的合作逐渐默契,交流更加顺畅,实验的效率不断提高。
一般来说,学生对课堂教学中教师的演示和验证只是被动地加以接受。想让学生真正明白教师所讲和所演示的,最好的方法是让学生在实践中去感受和运用所学到的知识,这样才能将被动的接受转化为主动的吸收。系列化实验题目,能让学生在实验环节真正做到理论知识和实践技能的融合,提高学生的综合应用能力。
当各个小组完成了系列化的所有实验后,我们安排了一次实验总结答辩,而不是传统的实验报告。传统的实验报告并不能真实地反映学生的实验水平,而以答辩的方式可以使教师更直观准确地了解实验效果,掌握学生对知识的掌握程度。答辩不仅可以督促学生总结实验结果和经验教训,同时也为学生提供了一个互相学习和互相交流的平台,是对分组协作的一种补充,是培养学生讨论机制的一种延伸。同时,以答辩作为实验的总结对学生来讲也是一种锻炼和挑战,更是对学生能力的一种提高。
在实际的实验教学中我们发现,由于缺少经验和知识面狭窄等原因,一部分学生考虑问题不全面,如果这个时候教师不适时介入,会导致实验不能到达预期目标。因此,教师适时以指导者的身份在实验中出现十分重要。同时,教师在实验的过程中还可以向学生传授一些先进的编程和设计思想,这对开阔学生思路和培养学生的科学素养十分有利。在实验的最后阶段,教师还是学生答辩的组织者和评审者,这对教师也提出了更高的要求。
[1] 李树平,赵杰.基于任务驱动的探究性计算机实验教学模式[J].职教论坛,2010(6):53-55.
[2] 陈克明,王春平.计算机实验教学改革探讨一得[J].中国成人教育,2011(2):153-154.
[3] 吕志峰,李晓峰.浅谈我院计算机专业毕业设计的改革[J].科技创新导报,2009(29):217.
[4] 田燕,李贞双,张新刚,等.计算机实验教学改革探索与实践[J].长沙大学学报,2012(2):125-127.
[5] 吕红,任颖,李华伟,等.计算机实验教学改革的思考[J].中国现代教育装备,2009(11):87 -89.