刘丽杰 (黑龙江八一农垦大学信息技术学院,黑龙江大庆1 63319)
《数据结构》是一门极具抽象性的课程,其特点就是逻辑性强,概念多,算法多,要求学生具有一定的程序设计能力。这就首先给学生的理论学习造成一定的困难,很多学生认为学习这门课程太枯燥、太抽象、不好学,学了也不知有什么用。慢慢的学生很容易产生畏难和茫然的情绪,在学习过程中缺乏信心。但 《数据结构》是计算机科学与技术专业中的一门核心课程,也是一门理论与实践紧密结合的基础课程,《数据结构》课程的学习效果不仅关系到其他后续课程的学习,也关系到计算机专业学生的专业素质和软件设计水平,在计算机及相关专业的课程体系中起着承上启下的重要作用[1-3]。因此,研究《数据结构》课程的教学改革是具有一定的深远意义。
《数据结构》具有抽象性和灵活性等特点,对逻辑思维能力要求高,知识点很多而且灵活多变,这就要求教师在选择和安排教学内容时多搜集一些生活中的实例,在讲授时深入浅出地把这些例子和书本中的理论知识联系起来,从而使深奥的理论变得生动有趣。例如在讲栈时,可以举一个数制转换的例子,把栈先进后出的特点及如何在数制转换中使用栈来存放余数联系起来,进一步说明栈的应用;或者在讲解图的最短路径算法时,可将其与城市交通的最优路径选择联系在一起,下面就以此为例详细讲解一下。
通常情况下,两城市间的 “最佳路径”可能需要考虑的并非仅仅是 “空间距离”的最短,还有 “时间最短”和 “费用最小”。根据人们出行的需求不同,经济能力不同,选择的 “最佳路径”也不同。考虑到只是以该案例加强教学效果,故在不考虑其他因素的前提下,仅以“空间距离”最短来讲解。如图1给出了几个城市之间的火车运行情况,判断火车能否从一个城市到达另一个城市,就是看从这个城市出发顺着箭头的方向是否能够到达目标城市,如果能够到达的话,则找出共有几条路径?其中路径长度最短的是哪一条?这样,城市间最佳路径的选择就转换成了一个图的求最短路径问题,其对应的图结构如图2所示。
图1 城市地图
图2 城市地图对应的图结
以郑州为例,列出从郑州到其他各个城市的最短路径长度和详细路径,如图3所示。这是一个典型的求最短路径的图的问题。在该例中使用邻接矩阵作为图的结构,使用队列记录最短路径上途经的城市,使用迪杰斯特拉(Dijkstra)算法求解,详细说明请见代码中注释。
编写程序实现算法并调试运行通过,学生就此会进一步体会到图的概念及其应用,并不像原来理解的那样空洞、抽象。通过与实际应用的密切联系,学生对所学知识的理解和应用能力及学习兴趣都会有很大提高。
图3 郑州到其他城市的最短路径
1)现代化多媒体教学手段与传统教学手段相结合 现代化多媒体教学手段在某些课程的教学过程中发挥了极大的作用,但对于像 《数据结构》这种理论性很强的课程,课堂中完全使用多媒体课件的教学效果可能并不如想象中那样理想。比如在讲解线性表、树或者图的时候辅以多媒体课件直观表示,可以加强学生的理解;在讲解算法或者某些证明时也用多媒体课件,效果就不是很好[4]。尤其是在讲解算法时,学生更喜欢教师用粉笔边写边解释,这样虽然速度比使用多媒体课件稍慢,但学生的理解会更透彻,对学生的影响也会更深刻。当然,这种理解只是学生对某一点上的理解,还需要结合多媒体,由点到面展开,发挥两者的长处。
2)借助校园网络平台 借助校园网络平台,将 《数据结构》的课件、习题、典型算法源程序、算法演示动画等教学资料,进行汇集整理、分类,放在校园网上供师生共享,形成一种全新的教学模式,开展灵活多样的网络教学辅导活动,还可以在网站上实现在线答疑、在线测试、学习论坛等功能,让学生可以在网上灵活地进行学习、复习或自我测试。同时,学生之间以及师生之间可以进行实时或非实时的交流,实现同学间的互相讨论以及师生间的答疑。
3)采用 “双向互动”式的教学方法 教师的职责不仅要教会学生新知识,更重要的要教会学生如何去获取新知识,教学中既要注重教师的教又要注重学生的学。采取 “合作互动”的方法,在教师的指导下让学生自己学会提出问题、分析问题和解决问题,将以 “教师为主体”、以 “课程为中心”的教学方式变为 “以学生为主体”、以 “能力为中心”,使学生由被动的接受变为主动的发现[5]。另外,通过师生共同回顾所学内容来找出需要改进和深化的地方,在算法设计之前要让学生积极思考,遇到问题时教师再进行适当提示,最终找出解决问题的方法。
《数据结构》课程实际上是程序设计课程的延续和深化,程序设计课程只要求学生按照程序设计的要求和规范来设计一些满足给定要求的程序即可,它强调的是程序设计基础的理念;但 《数据结构》课程强调的是软件的理念,《数据结构》的实验问题表面上是程序设计,但设计的要求和程度是不一样的,它要求学生掌握的是 《数据结构》的抽象特性[4-6]。
在实验教学中,学生是实验的主体,教师可以根据学生对教学内容的掌握情况来设计相应层次的上机实践内容,采用针对不同学生进行不同的教学方法,即分层次教学,也就是实验课上既要有基本实验的训练,也要有能让学生独立思考、综合运用知识创新等体现能力的实验。为了学生能够学好复杂的程序设计,在实验课上进行强化训练,要求学生编写的程序正确易懂、结构清楚,并进行严格的课堂打分制度,目的是培养学生的数据抽象能力、分析问题、解决问题的能力以及软件开发的能力,为学生计算机程序设计与应用奠定了良好的基础。坚持以 “数据的组织方式和算法设计”为主线,以 “培养综合应用能力”为目标,鼓励学生自行设计与开发综合实验项目 (大型作业)、设计开发算法的多媒体演示软件、多参加ACM等程序设计练习,使学生通过自学、讨论、参加训练比赛等多种方式来激发学习兴趣,尝试自主、个性化学习,充分发挥潜力,培养并提高其综合能力[6]。
[1]张红霞,盘丽丽.《数据结构》课程教学改革研究与探讨 [J].现代计算机 (专业版),2009(6):79-81.
[2]周玉林,赖鑫生.《数据结构》教改中的问题研究与探讨[J].上饶师范学院学报,2008(3):84-88.
[3]张 娟,安少华,胡选子,等.“数据结构”课程的教学改革与实践 [J].计算机教育,2008(16):53-54.
[4]钟治初.《数据结构》课程实验教学改革的理论与实践探讨 [J].内江科技,2007(3):149-150.
[5]蔡世霞,孙玉琦.《数据结构》课程教改模式研究[J].北京城市学院学报,2009(5):62-65.
[6]陶影,张斌.《数据结构》实验教学应重视算法设计与分析能力的培养 [J].实验室研究与探索,2008(12):119-122.