数据结构实践教学的改革与实践

2022-03-20 10:35:13 | 浏览次数:

摘 要:数据结构课程是一门实践性很强的专业基础课程。文章分析了数据结构实验教学过程中存在的问题和困难,提出了保证基础实验,强化设计实验,推动综合实验多层次的实践教学内容的改革,同时对实践教学方法进行探索,通过实践取得良好效果。

关键词:数据结构;实验教学;启发式;教学方法

0 引言

数据结构课程是计算机科学与技术的一门核心专业基础课程,与计算机各门主干课都有密切联系,具有独特的承上启下的重要位置[1]。同时数据结构又是一门实践性极强的技术基本课,其内容随计算机科学与技术的飞速发展而不断更新。本课程系统地介绍各种典型的数据结构,包括它们的概念、性质、实现方法和应用。通过讲授、练习和上机实践,培养学生根据求解的要求,选择合适的数据结构,应用抽象数据类型的思想方法,组织数据和算法的能力,进一步提高程序设计水平,培养良好的程序设计方法,为将来学习和后继课程打好基础,因此更新数据结构的实验教学教学内容,改进实验教学方法,提高教学质量对培养高素质软件人才起着决定性的作用。

1 数据结构实践教学中困难

在长期数据结构教学过程中。我们发现数据结构实践教学中存在以些问题和困难,主要表现在如下几个方面。

1.1 课程较为抽象,学生理解困难

在教学过程中,学生普遍反映学习难度较大,理论性太强。的确,数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间的桥梁。该课程的先行课程是计算机基础、程序设计语言、离散数学等,后续课程有操作系统、编译原理、数据库原理、软件工程等。因此即使理论课老师采用各种可行的方法,例如项目驱动和案列教学法等方法,但效果并不理想,实验课学生仍然找不到解决的办法,造成老师讲得累,学生听不懂,上机很难进行的局面。笔者在数据结构的实践教学环节中,感到学生在上机实验方面,普遍存在很大的困惑与难点。

1.2 学生对程序设计语言掌握不够

程序设计语言是数据结构的先修课程,我们学校在大学一年级开设,数据结构课程在第三学期开设,近几年,在第一学期开设程序设计课程,学生刚进大学,由于学习目的性不强,学习方法不正确,对程序设计的兴趣不浓,学生难以适应,程序设计语言课程掌握不够,从实践教学的角度要求学生必须掌握函数、结构体、指针、递归程序设计方法、动态内存分配方法等语言要素。而这些方面正好是学生的薄弱环节,直接影响到数据结构课程的实践教学正常进行。

1.3 实验内容设计不合理

数据结构的实验内容选择都是教材中的一些算法或是课后的练习,或者是课后的实验。一方面传统实践教学中,实验题目仅针对某一个问题,体现不出综合性,也没有和具体的应用相结合,体现不出应用性[2]。另一方面,教材中的算法是无法直接在机器中执行的,必须要把算法思想转化成完整的程序才行,在实验时要想象应用环境,分析逻辑结构,选择存储结构,算法的调用需要做哪些准备等等,所以,没有很好的引导和很强的编程能力也是无法自行完成的。

2 数据结构实践教学内容的改革

长期以来,课程组重视实践教学,致力于理论基础和实践教学的完美结合,形成了保证基础实验,强化设计实验,推动综合实验多层次的实践教学体系[3]。

2.1 基础实验属于基本算法题目

针对课堂上讲解的数据结构的基本算法给出程序的大体框架和相关算法,主要是用来验证算法的基本思想。首先按照实验大纲要求每章编制以验证为主的基础性实验指导书,每个实验分三个部分,第一部分,预备知识介绍本次实验的指导思想和实验一般方法,内容组织结构概述,需要的基础和准备工作及环境安装,注意事项;第二部分,实验小题,把本次实验的实验算法用实验小题的形式给出,主要要求学生在理解算法的基础上,如何调用这些算法;第三部分,采用分步骤填空的方式如何实现每一个小题,实际上就是分步骤填写采用的存在结构,数据如何存入计算机,如何调用算法,需要的数据如何提供,调用后如何得到运行结果。

2.2 设计实验属于应用性题目

设计实验是在基础实验的基础上,利用已经学过的基本算法,让学生自己动手来完成一些具体的应用问题。通过设计实验一方面降低了学习数据结构的难度,增强了学生学习数据结构的兴趣,了解数据结构的应用范围,同时也锻炼了学生的编程能力。课程组根据大纲和教材设计了如一元多项式加法计算、表达式分析与计算、迷宫、停车场管理问题、医院病人就诊、约瑟夫环问题、高速公路建设问题、教学计划编排等问题。对每一个问题,给出具体指导和要求,比如,以一元多项式加法为例,具体指导内容包括:首先给出两个多项式相加的实际例子,其次采用何种类型的存储结构来存储多项式的系数,多项式相加中合并同类项如何实现,如何建立多项式,如何输出多项式等等引导学生去思考,要求学生利用课后时间,对每一个指导步骤得到准确回答,题目可以集体讨论解决,也可以一个学生独立完成。这类实验题目,学生积极性高,兴趣浓,由于可以讨论,也增强了学习主动性和合作精神。

2.3 综合实验属于课程设计实验

综合实验是给出面向实际应用的稍大一些的实践题目,课程组根据大纲要求,编写了数据结构课程设计实验指导,设置了学生信息管理系统、图书管理系统、集合运算、车票管理系统等综合实验题目。每一题目给出了题目描述、程序应该完成功能和题目要求。以学分管理程序为例,题目描述:请设计一个学生的学分管理程序,假设每位学生必须完成基础课50学分、专业课50学分、选修课24学分、人文类课程8学分、实验性课程20学分才能够毕业,因此在管理学分时,要考虑每个学分所属于的课程类别。程序应完成功能:(1)通过键盘输入某位学生的学分;(2)给定学号,显示某位学生的学分完成情况;(3)给定某个班级的班号,显示该班所有学生学分完成情况;(4)给定某位学生的学号,修改该学生的学分信息;(5) 按照某类课程的学分高低进行排序;(6)提供一些统计各类信息的功能。题目要求:1)存储结构采用顺序表或链表;2)用本学期所学算法实现各模块;3)主函数设计一个菜单,通过菜单进入各模块测试。

3 数据结构实践教学方法的改革

在教学过程中仅仅有合适的教学内容,如果没有配套的实践教学方法,那么实验教学内容就不能很好落实,实验教学质量也很难保证,因此,针对实践教学中存在的问题,对实验内容进行设计的基础上,对实验教学方法要进行不断的探索和改进,我们课程组通过认真实践,摸索出一套数据结构实践教学方法。

3.1  加强编程能力的培养

针对学生程序设计基础差,实践动手能力差的特点,有针对性进行学习和训练。数据结构课程中频繁使用C 语言的函数参数传递、指针和结构体等,对于理解数据结构起到举足轻重的作用,因此,教师必须根据学生对 C 语言掌握的情况,有目的地讲授一些数据结构所涉及的 C 语言知识,强化学生 C 语言的运用能力,从而更好地完成数据结构的实验教学,达到事半功倍的效果,我校在开设数据结构之前,特地开设程序设计技能训练,而且这门课程由数据结构教师来教授,这样我们课程组教师就可以有针对性的进行项目训练,并且在此基础上把数据结构中的有关算法引入该课程,让学生先知道怎样用了,以后再学习数据结构时,学生就更好的理解所学概念和知识的来龙去脉了。

3.2 采用启发式教学方法提高实验教学效果

所谓启发式教学,就是教师根据教学目的、内容、学生的识水平和知识规律,运用多种教学手段,采用启发诱导办法传授知定的分析问题、解决问题和编写程序的能力[4]。课程组教师在进行数据结构基础实验时,课前让学生预习预备知识,实验课时,课程组在方法上进行指导,同时结合实际应用作一些启发性的提问,使学生知道从哪里入手做,以及从哪些方面可以作些变化。例如,在学生链表实验时,根据教材内容,问学生,建立链表有什么方法,学生肯定回答,有头插入法和尾插人法,教师追问,能不能用插入算法来实现呢?怎么做就可以达到头插入法效果?怎么做就可以达到尾插人法的效果?关于链表长度算法,常常用“顺藤摸瓜”来比喻,那么输出模块是不是也可以摸一个输出一个呢?通过一些列的启发提问,学生渐渐的学会举一反三,收到良好效果。

3.3 综合性实验采用任务驱动教学方法

综合性实验属于课程设计实践是前两项实践内容的提高过程,按照任务驱动式的教学方法,对于实践内容、实践目的、实践结果更有针对性[5]。每个任务按软件工程的方法来实践,教师提供可选题目,学生根据自身兴趣进行选题,老师给出每个题目逻辑分析,学生进行需求分析,写出需求分析报告,在老师的指导下,学生进行题目的概要设计、对每一模块进行详细设计,最后代码编写、上机调试。通过这样的交流和讨论,一方面老师能了解学生的学习情况,另一方面,学生对应用程序设计有较深的认识,也有效杜绝了抄袭程序的现象。

3.4 实验考核方式的改革

考核方式是检验教学内容的正确性及教学方法的合理性的重要手段。我们针对实验内容和形式的不同,采用不同的考核方式,对于基础实验,采用随堂评分的方法,每次实验结束前对每个学生进行检查,根据学生实验课的学习态度、出现错误情况、调试程序能力和实验完成情况给学生评分。对于设计实验,我们采用包括程序演示、回答问题、程序改进和实验报告四个过程。程序演示过程由学生向教师演示自己的编写程序,教师检查学生程序是否达到预期要求;回答问题过程教师向学生提出与题目相关的问题,例如题目真正要完成的任务,每一个模块的算法的思想,而且要求由非编写模块的同学回答,这样起到相互学习,取长补短的作用;根据前两个过程,教师提出设计中存在的问题和不足,希望学生再进行改进,使得程序基本达到预期目标;实验报告要求按指定的格式完成,同时把应用实例写进实验报告中,另外还要写明程序在编写过程中出现的问题,以及解决的方法和实验收获。

4 结束语

经过数据结构实验内容的调整和设计,实验教学方法的改进和实施,取得了不少宝贵的经验和可喜的成绩,使得我校这几年数据结构的课程教学效果有了很大提高,形成了学生爱好数据结构课程的良好局面。当然,教学改革和探索是没有止境的。因此,今后我们课程组将继续探索下去,设计最合理的实践教学内容,掌握最有效的实践教学方法,培养学生分析、解决问题的能力,为培养合格的计算机专业应用型人才多作贡献。

参考文献:

[1]李春葆.数据结构教程[M].清华大学出版社(第4版),2013(01).

[2] 胡学钢,张晶等.数据结构实践教学体系设计[J]. 吉林大学学报(信息科学版),2005(08):138-140.

[3]秦玉平.数据结构课程实践教学改革与实践[J]. 渤海大学学报( 自然科学版),2013(12):398-400.

[4]米文丽.启发式教学在《数据结构》课程中的应用[J].佳木斯教育学院学报,2014(05):156,158.

[5]曹春萍,陈平.问题驱动法在“数据结构”教学中的应用探讨[J].中国电力教育,2014(23):78-79.

基金项目:安徽科技学院教学研究项目资助(编号:X2012030)

作者简介:庄锁法(1965-),男,副教授,研究方向:信息管理,网络管理和网络安全教学与研究。

推荐访问: 实践 数据结构 改革 教学