数据结构课程教学与改革

点赞:22684 浏览:104753 近期更新时间:2024-02-18 作者:网友分享原创网站原创

摘 要 :分析数据结构课程教学中存在的一些问题,为提高教学质量,文章提出在课程学习之初复习前导课程要点以强化学生基础,授课时采用灵活的教学方法以培养学生解决问题的能力和模块化程序设计思维,同时通过构建基础型、综合设计型和研究创新型三个层次的实践教学体系,以提高学生程序设计实践能力、培养创新精神和团队精神.

关 键 词 :数据结构;模块化思维;教学方法;实践教学

数据结构是计算机学科的重要分支研究领域,是计算机程序设计的重要理论技术基础.该学科主要介绍如何用计算机解决一系列问题,特别是非数值信息处理问题时所用的各种数据的组织方法、存储方式以及在各种结构上执行操作的算法.目的是使学生掌握如何把现实世界的客观问题转换为在计算机内的表示形式,学会组织数据、选择算法、设计算法,培养逻辑思维和抽象思维能力,为系统开发与设计奠定坚实的基础.在我国,数据结构不仅是计算机、软件工程等专业的核心课程之一,也是许多理工类专业的必修课程.虽然数据结构在计算机学科专业中具有如此重要的地位,但在目前的教学中学生普遍反映这门课程抽象、难学,在学习和实际应用中问题比较多,学习过程中成就感不强,学完之后还是不知道如何应用.为提高数据结构课程教学质量,许多教学工作者提出了自己的一些思路,并付诸实践,取得了很好的效果.由于每个学校自身的差异和学生层次差异等原因,我们在借鉴他人教学经验的同时,有必要针对自身的教学对象研究课程教学,以提高教学质量.

1.数据结构课程教学中存在的问题

从学生在本课程的学习和实践过程看,影响学习效果的主要原因大致有以下几个方面.

1.1 程序设计基础薄弱

目前,大多数数据结构教材采用类C、类C++语言描述.由于学生对C、C++课程掌握不牢,导致在学习过程中存在困难.采用C语言的版本描述数据结构时,学生的主要问题是对于指向结构体的指针、返回指针的函数、递归函数调用、动态二维数组等知识掌握不够,不能灵活运用这些知识解决实际问题;若采用c++语言版本,学生除了上述一些问题外,对于C++中较复杂对象的构造、模板的应用等也感到困惑.

1.2 模块化设计思维欠缺

模块化是软件设计的一个基本原理,它要求模块的功能相对独立,耦合尽量松散.在学习C语言时,因为前段时间接触的程序大都只有一个main函数,导致学生经常不自觉地将程序的所有功能放到main函数中实现,而不去考虑用自定义函数实现一些相对独立的功能,这些不良习惯在学习数据结构课程时仍然存在.另外有些学生可能因为在写函数时觉得参数传递困难,于是定义了一些全局变量来共享数据.采用类似这样的方式可能会使程序的运行结果正确,但这类程序不符合程序设计和软件工程的规范.

1.3 实践能力较差

数据结构是一门应用性很强的课程,课程实践是本课程的重要组成部分.由于学生平常上机训练时间偏少,实际设计和调试程序的能力偏弱,设计的程序看起来思路不是很清晰.学生写的程序经常因为函数的返回类型和参数定义不合理,导致程序比较乱.另外在程序中还经常出现与指针有关的较为隐蔽的错误,给程序调试带来了很大的困难.这些不流畅的程序,使他们在实际应用中很难找到成就感,于是逐渐丧失了对该课程的兴趣.

2.数据结构课程教学改革

针对数据结构课程在教学和学习中出现的一些问题,我们在实际教学中主要提出了以下一些改革措施.

2.1 复习前导课程要点,强化学生程序设计基础

在课程学习之初,用4节课的时间说明该课程在整个专业中的作用与地位,介绍课程学习方法和学习目标,复习该课程必备的编程语言基础知识.主要通过函数的方式复习结构体和指针的用法,如通过返回指针的方式建一个结点、通过函数参数的方式改变结点的值、动态二维数组的建立和撤销、通过参数传递二维数组等,并布置适当的作业或练习让学生完成,以巩固程序设计基础知识.

2.2 采用灵活的教学方法,培养学生解决问题的能力和模块化程序设计思维

在教学过程中多采用启发式教学方法.数据结构课程概念抽象、知识点集中、重点突出,在课程教学过程中可以适当设置问题,让学生去思考,通过问题加强对学生的引导,这种方法就是启发式教学.启发式教学方法运用起来有一些难度,但教师应该经常运用这一方法.课程中抽象的或是细节的问题都可以涉及此方法,对于较大问题的提问,任课教师在备课时应该充分考虑,把握好问题和引导的方向,因为这类问题的解决经常需要占用较多时间.而对于一些小问题的启发,任课教师要根据实际授课时学生的表现决定,如函数返回类型的确定、参数的选取、指针的指向、返回语句的写法等都可以进行启发式提问.

针对不同的知识点,尽量设计任务驱动型教学方法.任务驱动教学法是一种学生自主学习、教师从旁引导的教学方法,它打破了传统教学方法中注重学习的循序渐进和积累的老套路,不再按照教学内容从易到难的顺序,而是以完成一个“任务”作为驱动来进行教学,将学生自学能力、创新精神和合作意识的培养融于完成任务的过程之中.如讲授链表时,可以进行一个贪吃蛇游戏.游戏刚开始时,蛇身的位置可以看成链表,蛇运动时可演变成队列,蛇头到达的位置入队,蛇尾离开的位置出队,吃到一个食物后不进行出队操作,蛇身变长.该游戏的其他键盘方向键的控制、延时控制、绘制可由学生自己查资料完成.学生经过这个例子后,再讲到栈就容易了,可以联想到一个下棋的游戏,如果要悔棋,则需把走过的每一步存入一个容器,这个容器就是栈.通过这样的案例既掌握了相关知识的应用,同时也说明了数据结构课程确实能解决很多实际问题,可激发学生的学习兴趣,坚定学生学习这门课程的信心.

对于较难的算法,考虑采用自然语言描述的方法.因为自然语言更容易理解,但必须注意自然语言中的用词和书写格式,以便直接过渡到计算机程序.例如在讲解图的非递归遍历时,将板书或PPT页面设计成自然语言描述法和C语言描述算法形式,如表1所示. 采用自然语言描述算法的方式,可将黑板或投影屏幕分成两部分.左边是自然语言描述,右边为对应的程序,且行与行对应,缩进格式也对应,直接将“如果、否则、当、从等到”对应为“if、else、while、for”等.自然语言描述亦可实现粗线条的算法,一行自然语言将来有可能对应一个函数,这种方式可很好地体现自顶向下和模块化设计思想.

实际授课中,还有一些其他的教学方法,如讨论式、探究式等,但是每种方法只适合应用于某些特定的情形.为了增强教学效果,需要教师仔细研究教学内容,充分了解学生学习情况,在授课中根据实际情况加以把握.无论采用何种教学方法,教师在分析问题和书写程序时一定要注意模块化程序设计思维的渗透.

2.3 加强实践教学改革,提高学生实践能力,培养学生创新精神

数据结构实验作为数据结构教学的基本手段,有其特殊的教学功能,不仅可以加强对理论的理解,还可以培养学生的实际动手能力.通过实验可以使学生理论联系实际,引起学生学习兴趣,从而调动他们学好数据结构的主动性和积极性.

为增强实验教学效果,需对实践教学进行改革,按层次递进的方式,围绕课程教学目标精选实验题,构建数据结构课程基础型、综合设计型和研究创新型3个层次的实验教学体系,通过教学计划内规定学时(吉首大学为16学时)和开设第二课堂(60学时)的方式完成3个层次的训练.其中基础型和综合设计型实验主要培养学生对各类数据的组织、存储和算法设计的能力,按课程知识点次序组织实验项目,如链表的建立→队列和栈、树的建立与遍历→求某层节点数、图的建立→深度(广度)优先遍历→最短路径、排序→查找等,这部分实验在教学计划学时内完成,并要求学生完成相应的实验报告.研究创新型实验主要提高学生的实践能力,培养创新精神和团队精神,按应用项目的方式设置,如一个小游戏设计(扫雷、连连看、纸牌等)、一个小系统设计(学生成绩管理系统、通讯录、哈夫曼编解码等),在第二课堂采取“做中学”的方式,在教师的引导下由学生自主完成,要求学生参照软件工程相关规范撰写设计文档和编写源程序.


为进一步提高学生实践能力,吉首大学软件怎么写作外包学院开设了第二课堂,在晚上和周末开放实验室,专业任课教师轮流值班,教师作为学生学习的引导者,提供与课程配套的学习材料和相关实践任务.在教师的引导下,学生可独立或以小组讨论的方式完成相关任务,教师定期检查完成情况.另外,考虑到实验室资源有限,另外创建了学生创新实验室,该实验室只配置了怎么写作器、网络、电源、桌椅等设施,学生可自己带计算机进入,该实验室由学生自主管理、自主学习,教师布置相关任务、定期指导和检查.

数据结构课程教学与改革参考属性评定
有关论文范文主题研究: 关于课程的论文范文素材 大学生适用: 硕士论文、自考毕业论文
相关参考文献下载数量: 72 写作解决问题: 本科论文怎么写
毕业论文开题报告: 论文模板、论文小结 职称论文适用: 技师论文、中级职称
所属大学生专业类别: 本科论文怎么写 论文题目推荐度: 经典题目

3.结语

笔者对数据结构课程教学中存在的一些问题进行了分析,针对这些问题,结合课程小组在实际教学中的一些体会,对该课程的教学进行了探索并作了一些改革,在实际教学中取得了良好的效果,希望能为同类院校相关教师的教学提供一些参考.