地方性院校《数据结构》课程教学探索
2015-12-10叶振李小波
叶振+李小波
摘要:数据结构是计算机及相关专业的核心专业基础课,在学生专业培养中占据非常重要的地位。然而,由于数据结构课程本身的抽象性,部分教师的教学方法问题以及学生对该课程重视程度和动手实践不足等原因,数据结构课程的教学效果一直不佳。该文对数据结构课程特点以及当前该课程教学存在的不足进行了深入分析,并在此基础上对如何在地方性院校上好数据结构课程进行了探索,在实际教学过程中采取了一系列相应措施并取得了良好的教学效果。
关键词: 数据结构;教学研究;地方院校;实践
中图分类号:G64 文献标识码:A 文章编号:1009-3044(2015)26-0136-02
数据结构课程是计算机科学与技术,软件工程,网络工程及其他计算机类相关专业的核心专业基础课程。在整个教学课程体系中起着承上启下的作用,能否学好该课程,对学生的后续课程学习,甚至是整个专业能力的培养有着至关重要的影响。
然而,由于数据结构课程涉及知识较为抽象,并且需要大量的实践,学生往往会产生畏惧心理,再加上部分学生对该课程的重要性认识不足,如果采用传统的讲授式教学,往往教学效果会不好。尤其是在地方性本科院校中,学生的基础相对较为薄弱,理解能力,动手能力及学习的主动性和重点院校学生来说相对较弱,因此更应采取一系列的措施来增强该课程的教学效果。
1 数据结构课程的特点
数据结构是计算机存储,组织数据的方式,而《数据结构》课程主要就是介绍常用的数据结构以及一些基本算法的课程[1],该课程具有如下特点:
1.1 内容抽象,实践要求高
数据结构所教授的对象都是抽象的概念和结构,这些不同的结构负责将数据和数据以一定的方式组合起来并支持相应的操作。和其他课程不同,数据结构并没有对应的实体,触摸不到,只能通过抽象的逻辑思维去理解,因此掌握起来具有一定的难度。
此外数据结构课程的教学目的其实分为两个层次,一是使学生能理解相应的数据结构的概念和操作,能用算法将这些操作描述出来;二是在理解的基础上能用具体的编程语言完整正确的实现这些数据结构。因此除了理解本身外,还要有很强的动手实践能力。而这个实践能力的教学目的能否达到很大程度上取决于学生在相关的前导语言课程掌握的程度。
1.2 是后继课程学习和将来专业工作的基础
数据结构是计算机专业很多后继核心课程的基础,如操作系统,数据库,计算机网络等课程,其实现都用到了很多数据结构知识,如学生不能很好掌握数据结构,将严重影响到后继核心专业课程的学习。同时,如果学生将来从事计算机编程相关工作,更是离不开和数据结构打交道。因此数据结构课程在整个课程体系及学生的职业生涯中都非常重要。
2数据结构教学效果不佳的原因分析
根据多年来的学生反馈,数据结构课程的教学效果一直不佳,学生普遍感觉学习该课程难度较大,缺乏兴趣,不会实践[4,5]。经过认真分析,本文认为存在此现象的原因主要包括:
2.1 教材及课程内容设置不当
当前数据结构采用的教材多为名校教师所编,而该教材中的内容及教材对应的教学进度基本针对的是名校学生,对于地方性普通本科院校学生来说,由于基础相对较差,理解力和学习主动性也往往不如重点高校的学生,因此如果直接采用此类教材并且按照该教材建议的教授内容和进度进行讲授,学生往往会感觉部分内容偏难并且无法跟上进度。
2.2 课程本身较为抽象导致难以理解
正如本文第一节指出的,数据结构课程的特点之一就是所学内容较为抽象,不易理解。特别是涉及树,图等较为复杂的数据结构,以及递归,动态规划等一些相对复杂的算法,学生很难在一时半会理解透彻。此外,很多算法涉及边界条件的判别,异常情况的考虑以及其他很多细节处理,想要完整正确的理解此类算法,需要很强的逻辑思维能力,学生往往对此深感头疼。
2.3 前导语言课程掌握不好
数据结构本身虽然可以用伪代码进行描述,和具体的编程语言无关。然而,要想真正透彻掌握内容,必须使用某种语言进行实践。目前高校计算机类专业开设的第一门计算机语言课程基本上都是C语言,C语言细节繁多,学习门槛较高,一个学期的学习完成之后,学生往往不能很好的掌握其内容,尤其是指针的操作,而此部分在数据结构的C语言实现过程当中恰恰是最重要的部分。基础语言能力的薄弱,导致学生即使在课堂上理解了老师所上内容,由于无法及时对所学数据结构进行上机实践,又会很快忘记相关知识,从而在很大程度上影响了整体的学习效果。
2.4 部分学生对该课程重要性认识不足
尽管很多老师在课程一开始就强调数据结构课程在整个计算机相关的专业培养中的重要地位,然而还是有很多学生对该课程的重要性缺乏必要认识,没引起足够的重视,不愿投入更多的精力,花更多的时间学习和实践。而要想学好数据结构课程,唯一的途径是花更多的时间去学习,实践,没有其他捷径。很多同学都是在学习后继的专业课程,如操作系统,数据库时,甚至在日后工作要用到时才明白数据结构的重要性,在那个时候再回过头去重新学习数据结构相关的知识。
3 采取措施办法
由于数据结构课程以往的教学效果不佳,本文在对造成此现象的原因进行了细致分析后,有针对性的采取了若干办法进行改进,并取得了较好的效果。
3.1 解决前导语言课程的造成的障碍
由于数据结构的实现和学生对所用语言的掌握程度密切相关,在教授该课程钱,本人和前导语言课程的相关老师和学生进行了密切沟通,请相应老师在讲授指针及其他和数据结构相关知识时进行重点强调,并在此时就提醒学生该部分内容对数据结构以及再后续课程的密切关系,让学生在此刻就引起重视并花更多的精力掌握好相关知识。此外,在数据结构课程开始阶段对C语言中的重点内容,包括指针,结构体,传值传引用等和数据结构密切相关的概念进行复习,安排相应的预备实验,帮助学生巩固C语言知识,避免因为编程语言本身的障碍导致的学习数据结构课程困难的情况。
3.2 采用各种方法对数据结构的操作和算法进行演示
为了让学生更加直观的理解数据结构,在教授相关的知识时,除了用课件进行讲授外,还特意准备了一些演示软件对相关代码进行演示。对于每段代码,使用此类演示软件时学生都可以输入一些例子,并且对代码进行单行执行及设置断点执行,执行的过程中可以随时看到各变量的值以及当前执行的各种环境。
此外,还充分利用各种互联网上的相关资源进行教学演示,如发现一个网上使用舞蹈的例子来演示各种排序算法的运行过程后[2](如图1所示),就将其引入课堂教学中,学生普遍反映效果较好。
图1 使用舞蹈模拟各种排序算法的运行过程
3.3 将不同数据结构及相同数据结构的不同实现进行联系对比学习
由于数据结构种类较多,而且同一个数据结构可能还有不同的实现方式,如果只是单独的讲解该数据结构学生对其特点和应用场景很难有直观的认识,在以后遇到问题时也无法进行灵活应用。因此,在教学的时候,尽可能地对不同的数据进行联系类比,让学生对各个数据结构以及同一数据结构的不同实现方式的特点都有所了解,在遇到某个具体问题时,能根据该问题的需求合理地选择恰当的数据结构实现方式,从而能以最高效率来解决该问题。
3.4 按内容难易和重要程度划分不同层次
由于不同学生在专业基础和学习意愿等方面都存在差异,因此采取粗粒度的个性化教学方式,在符合课程大纲的前提下,将知识内容根据重要程度和难易分成两部分。对于重要的内容以及相对容易的内容,要求全体学生都要掌握,对于部分确实较难的内容,鼓励部分学有余力又感兴趣的同学进行学习,并提供指导。这种分层次的教学方式,同时兼顾了落后学生和学有余力的学生,避免基础差的学生学不懂,以及基础好的学生吃不饱的情况。
3.5 充分调动学生的学习积极性和主观能动性
在教学过程中时刻注意充分调动学生的学习积极性和主动性。如,在期末试卷的题目来源中,部分题目可以采用学生提供题库的方式,让所有学生都提供若干道题目并给出参考答案和评分标准。学生在出题过程以及在思考答案的过程中就发挥了其主观能动性。
3.6 强化实践训练
学好数据结构的关键在于进行大量的实践。为了达成这个目的,在课程教学过程中大量增加了实践环节。改变以往纸质作业,采用在线练习系统来进行作业[3],每章学习完成后学生在线上提交代码来完成作业,提交后系统自动判别该程序是否正确,并判定是否有抄袭情况。课程配套了大量的实验课时,每讲完一个数据结构,都有相应的上机实验课,课上要求学生完成相应的代码阅读,修改,编码等任务并上交实验报告。此外,在数据结构课程之外,还专门开设了一门数据结构课程设计课程,让学生能更加充分的得到实践锻炼。
3.7 更直观的让学生认识该课程的重要性
为了让学生更加直观地认识到数据结构课程的重要性,在课程教学过程中邀请企业负责招聘的技术管理人员来讲解程序员相关职位面试流程及涉及数据结构和算法的知识,让学生知道即使从最现实地找到好工作的角度考虑,学好数据结构也是非常重要的。
4 结语
本文在对地方性本科院校的数据结构教学效果不佳的原因进行细致分析的基础上,结合平时的课堂教学经验,提出了一系列可以采取的措施来帮助学生提高该课程的学习效果,为其后续专业课程及未来的职业能力奠定坚实的基础。
参考文献:
[1] 严蔚敏. 数据结构C语言版[M]. 清华大学出版社,2007.
[2] 舞动的排序算法. http://v.youku.com/v_show/id_XMjU4MTg3MTU2.html.
[3] 丽水学院在线联系和考试系统. http://acm.lsu.edu.cn.
[4] 范德宝, 于晓聪, 丁伟祥. 提高数据结构课程教学效果的探讨[J]. 黑龙江科技信息,2007.
[5] 董丽薇. “数据结构”课程教学方法的改进[J]. 沈阳师范大学学报(自然科学版),2012.