罗艳玲 李莉
摘 要:针对目前《数据结构与算法》课程教学中教师和学生一直面临的问题,,从培养学生的学习兴趣和掌握算法思想出发,从教学目标、教学方法、教学设计、实验课程等几个方面进行了全方位的思考和改进,提出了一些切实可行的教学建议。
关键词:数据结构与算法;算法思想;实例化
《数据结构与算法》是计算机科学与技术专业的核心基础课程之一,也是信息类专业如通信工程和电子信息工程专业必修的专业基础课,对学生来说,毕业后凡是从事信息、电子、计算机等相关领域工作的,数据结构的编程思想都必不可少。但该课程的学习却有一定难度,因为它理论性强,内容抽象,要求学习者具有较好的高级语言功底与一定的编程经验,还要有较好的数学功底。部分同学的先行课程《C语言》都学得磕磕绊绊,还未完全消化,再到《数据结构与算法》中需要结合算法来解决实际问题的时候,就更显力不从心了,一旦老师再经验不足,过度依赖教材和课件,不能很好的把编程思路和思想传递给学生,“教”与“学”的双重困难就凸显出来了。因此,本文从理论课和实验课两方面,着眼于明确教学目标、合理应用教学方法、实例化教学设计等几个方面对《数据结构与算法》课程的教学加以改进, 提高学生的学习兴趣,增强学生对算法思想的理解和运用。
1 理论教学
1.1 明确教学目标
《数据结构与算法》这门课程的所有算法思想最后都会落脚到程序上,都需要用高级语言表现出来,老师把握不好目标,很容易把数据结构当成C语言的“延伸”和“升华”,课堂上带领学生一个一个读算法程序,而没有做到让学生去领会算法的思想。所以老师一定要明确这门课的教学目标是编程思想而不是程序本身,先有好的构思和想法,辅助语言加以实现,每节课都要以“思想第一,实现第二” 为教学纲领,教学生怎么从实际问题中抽象出模型,提炼出思路,然后用程序来实现这个思路,最后真正的解决问题,就像古人讲的“胸有成竹”,在画竹之前,对于竹子的高度,树干、树枝和叶子的结构,心里要有个规划,做到心中有数,这样画出来的竹子才能形象。编程也一样,先从实际问题重剥离出系统架构,构造出合适的模型,选择高效率的算法,再使用高级语言把它实现,最后再进一步处理趋向完善,使之具备客户所需要的功能。学生要从《数据结构与算法》这门课程中掌握的就是如何从实际问题中抽象出模型、建造起架构的过程,老师只有时刻带领学生从这个角度来着手解决问题,才能真正为该课程的教学把握好方向。
1.2 合理运用教学方法
随着现代教学水平的提高,越来越多的多媒体课件和网络资源被运用于教学当中,人们也对启发式、问题探究式、课堂讨论式等这些新型的教学方法趋之若鹜,或多或少的把传统的教学方法冠以“落伍”和“填鸭式”等贬义色彩。但我个人认为,传统的黑板加粉笔的教学方法,在《数据结构与算法》这门课程当中仍然有着举足轻重的作用,因为PPT课件和动画都是老师预先按照自己的思路经过思考和摸索,多次尝试和修改而整理出来的,对于经验不丰富,未曾接触过相关知识的学生来说,直接跳出来的课件和动画没有给够他们思考和整理思路的时间,冰冷的课件和学生没有眼神、肢体语言等情感交流,无法从算法思想的角度去引领学生一步一步的剥离表象,抽离出问题的本质。所以,片面的强调新型的教学方法是不科学的,传统的黑板教学也不可忽视,在传统的基础之上,一些粉笔和语言都不太容易展示的算法执行过程,可以结合现代化多媒体教学手段来表现,形象的动画能让抽象的内容变得更加直观更易理解,学生也更容易被带入其中,从而使教学过程变得更加生动形象。
所以,合理的教学方法应该是以板书为主,课件为辅,配合老师与学生的情感交流,这样才能取得好的教学效果。
1.3 实例化教学设计
大学的学习和高中不一样,不再简单的以分数定乾坤,学生没有了压力也就没了动力,而且大学生都各有锋芒,有自己独立的思想,如何调动学生对该课程的兴趣,使被动学习变为主动求知就显得尤为重要,那如何激发学生的学习兴趣呢?答案是要让学生感觉到数据结构解决的问题其实都来源于我们的实际生活,是切切实实存在于我们周围的,比如讲到顺序表和链表,可以举例我们早期去银行办事需要排队,中间插队一个人后面的人都要后移(顺序表插入),中间有一个人离开后面的人都要前移(顺序表删除),这就是顺序表,而现在我们在银行取个号就可以找个舒服的位置坐下,或者离开去办其它的事情,等叫到号再到窗口,这就是链表,存储的位置不连续,但是大家的逻辑关系仍然存在;比如讲到图的最短路径问题时可以设计一个旅游场景,需要去多个城市旅游,但又希望旅途最短花费最少,让学生去设计路线;比如讲到约瑟夫环的时候可以结合犹太历史故事让学生身临其境;再比如讲到汉诺塔的时候可以让学生先试着玩一玩汉诺塔游戏,然后再考虑怎么用算法来实现。
“兴趣是最好的老师”,真正把学生的兴趣调动起来,使学生进入到一个积极思考和探索的活跃状态,教学就能起到事半功倍的效果。
2 实验教学
鉴于该课程的课时压缩,实验课的课时也随之减少了,学生能动手实践的时间减少使教学效果大打折扣。而该课程的学习除了老师在理论课上的引导以外,学生自己动手去“练”才是真正去领悟和内化算法思想的法宝,“练”必不可少,所以在这有限的实验课时间里,如何让学生的“练”落到实处也需要老师投入很大的精力来设计和管控。
2.1 合理安排实验项目
根据教学大纲,结合学生的实际掌握程度来设计实验项目,主要分为验证性、可选性和综合设计性三大类,验证性实验的目的是重温基础知识,强调编程规范性和完整的算法思想, 主要针对一些常用的算法实现, 如顺序表、链表的创建、要求学生在上机实验课堂内完成。可选性实验稍有难度,需要融会贯通和创新能力,针对基础较好的学生,如果验证性实验很快完成,就可以进行可选性实验项目的操作。综合设计类实验一般涉及多个知识点, 要求学生自己抽象出模型进行设计, 主要训练学生综合运用所学知识的能力、团队协作能力和自主创新能力。题目一般是要求解决实际生活中遇到的问题,可以对学生按照基础的强弱搭配成3-4人一个小组,完成后通过现场演示和答辩来评价效果,这类实验完成后学生在体会到成功喜悦的同时,也能领悟到数据结构及算法的价值,激发他们的求知欲望和探索精神,使其更加积极主动的学习,而这一部分人的主动也能带动其他的同学跟进步伐,形成一个好的学习氛围。
2.2 正确管理实验过程
实验课堂上,针对不同类型的实验项目,采用相应的教学方式。对于验证性实验,老师可以在实验开始前对实验的流程、操作要点及最终的运行效果进行讲解,不至于让学生盲目摸索,浪费时间。选择性实验需要针对部分基础较好的学生进行适当的启发式引导,对关键算法和思路予以提点。对综合设计性实验,教师可以采用项目式的教学方法,带领学生理清需求、提取模型、设计步骤、确定计划,并对小组成员予以分工,使得实验能够顺利的进行下去。
实验过程中也要设定一定的奖励机制,不能只看最后结果,对于积极主动,喜欢钻研的学生要及时奖励,给予一定的加分,在综合设计类实验中担任重要角色的学生也要识别出来,适当提高实验过程分数。
基础较差的学生光靠课堂上的练习远远不够,需要整合机房资源,给学生提供课外实践的机会,鼓励他们利用业余时间补齐差距。
3 结束语
《数据结构与算法》这门课程的教学, 需要把握好“算法思想”这条主线,以实例化的教学设计来调动学生的积极性,真正做到授之以渔, 使学生确实掌握解决实际问题的能力。
参考文献
[1]马艳芳,姜桦.《数据结构》课程教学方法的探讨[J].科技信息,2009,11
[2]駱小红,马永红.“数据结构”教学改革研究与实践[J].教改教法,2014,6(2):88-90
[3]李云清,杨庆红,揭安全.数据结构(C语言版)[M].北京:人民邮电出版社,2014,9