数据结构课程教学模式的研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程教学模式的研究
摘要:数据结构是一门理论性和抽象性很强的专业核心课程。
本文提出了一种从上至下,从抽象到具体的分层教学演化模式,符合学生思维的演化过程,从而降低了该课程的学习难度。
通过实践证明该模式配合内容的设计有较好的教学效果。
关键词:数据结构;教学模式;层次
1 引言
数据结构是计算机软件设计的重要理论基础,已成为计算机专业及相关专业的核心课程。
数据结构研究的基本问题是数据及数据之间的关系在计算机中的表示,在此基础上根据计算机计算特征开展对数据处理方法的探讨。
采用冯·诺伊曼体系结构计算机以顺序的方式执行指令,数据用二进制形式,从而决定了计算机处理的数据和计算有其独有的特点。
而学生具备带回溯特点的感性和理性思维方式,可处理的数据以及思维模式极具多样性和复杂性,因此学生和计算机能处理的数据和计算模式均呈现各自不同特点,从而导致了学生学习该门课程的难度加大。
因此找到二者完美的结合点对于降低该门课程的学习难度显得尤为重要。
要达到这个目的,必须在教学模式的选择、教学内容设计以及教学手段的选择三个方面进行提高。
本文从教学模式方面进行讨论,充分考虑到计算机与学生计算特征的异同,采取从抽象到具体、从粗糙到精确的分层教学方式,将大问题分解为小问题,从而在二者之间架起一座桥梁,起到降低该课程学习难度的目的。
2 分层教学模式
2.1 数据结构相关概念
2.1.1 数据结构关系模型
计算机面临的任务是处理现实世界提出的需求,其中数据结构起着桥梁作用。
根据数据结构、现实世界、计算机以及算法的关系,可以构建数据结构关系模型(图1),该模型由四个部分组成:待求解问题、数据结构、计算机和算法。
待求解问题为社会生产活动中的需要计算机解决的问题;数据结构为将待解决问题用计算机可以理解的数据
表征;算法为待解决问题的解决方案映射为计算机支持的操作;计算机为可以在特定数据结构基础上执行特定操作的机器。
因此数据结构本质是在算法的约束下将实际问题解决方案映射为计算机可处理的解决方案的方法,该方法将待求解问题的数据映射为计算机可支持的数据格式,将算法映射为计算机支持的循环、顺序和选择等三种计算结构的组合。
即假设待解决问题的数据集为DL,功能需求为RL,计算机可以理解数据集为DP,操作集合为RP,映射f:(DL, RL, DLⓧRL)→(DP, RP, DPⓧRP),其中DLⓧRL和DPⓧRP 数据和功能之间的关系。
图1 数据结构关系模型
2.1.2 数据结构教学改进
数据结构课程的教学不同的专家学者提出了多种教学模式。
国内外比较著名的现代化教学模式主要有:(1)掌握学习模式。
强调个别化教学,利用及时反馈和强化作为控制教学的有效的手段;(2)发现学习模式。
通过提出问题,带着问题意识观察具体事实,再上升到一般的概念;(3)范例教学模式。
用特例具体直观地阐明“个体”的具体特征,根据范例“个体”的知识推理、分析,掌握整个“类别”事物的特征;(4)最优化教学模式。
根据教学目的、任务、学生学习情况、教师自身情况、教学条件以及教学质量进行分析和总结。
这些模式为普适性的教学模式,但数据结构课程有其独有的特点,主要是人和计算机相互适应的问题,因此这些模式在当前教学中尽管起到了很好的指导作用,但必须针对数据结构的特点对教学模式进行改进,根据图1主要是:
●明确研究数据结构的任务。
务必让学生深刻体会到数据结构主要任务是将现实世界的信息让计算机来处理,从而扩展人的能力,达到提高工作效率的目的。
根据图1日常的教学中容易重点关注2、3、4步,采取各种教学方法来进行强化,使学生觉得是为了数据结构而数据结构,没有目的的学习一方面会给学生带来疲劳感,另一方面给学生带来迷茫,就是学的比较好的学生也存在这个问题,如有的学生问:顺序存储方式和链接存储方式哪个好点?图中最短距离算法中的课本采用的是邻接表,学生就认为该算法采取邻接表是必然的不可改变的。
这些问题
的出现是由于将数据结构孤立起来,不明白研究数据结构的任务而造成的。
只有明白研究数据结构的任务,就会知道只要能满足解决现实问题的且能被计算机支持的算法和数据结构都是可行的,至于具体采取哪个方案由开发者和提出问题者协商和讨论,这样就避免了学生死读书,达到提高学生分析能力的教学效果,因此在课堂上要有意识的强调第1、5步。
●考虑到数据结构的桥梁作用。
根据研究数据结构的任务,数据结构将在现实信息世界与计算机世界之间架起桥梁。
因此要求学生一方面对现实世界待处理的问题的数据特点有充分了解;另一方面对计算机支持的数据规范和语言规范要求理解透彻。
关于学生提出的是否能用自然语言描述数据结构相关问题,对这个问题的回答是肯定的,但要强调的是用自然语言描述数据结构相关问题是描述的最高境界,因为自然语言的惯性使人们在描述数据结构相关问题的时候容易忽略掉计算机的数据和计算特点,导致该描述向计算机程序的转换时将会出现困难。
因此,在学生开始学习这门课程的时候,一定要按照计算机的特点分析描述现实世界的问题,只有达到可以随意用计算机特点整理思路的时候,才可以用自然语言描述数据结构相关问题。
●正视数据结构教学存在的困难。
正是由于计算机能处理的数据格式和计算方法严格受限,而人类的思维呈现多样性和复杂性,将一个多样的复杂的范畴映射到一个受限的数据和计算范畴,出现学习困难将是必然现象。
对于数据结构的学习和理解困难,下文提出了层次教学模式,将这种困难分解为多个小困难,从而达到降低学习难度的效果。
2.2 教学模式
2.2.1 原则
“快乐学习”是学习者和教育者时刻面临的课题,这里的“快乐”是在学习这个范畴内的快乐而不是泛指快乐,比如对于有的学生来说电子游戏是他最大快乐即使最快乐的学习也会让他痛苦不堪。
本文提出的分层教学模式将数据结构学习困难进行层次分解,而每个小困难在学生的容忍范围之内,积小困难的解决为大困难的解决。
因此将数据结构待解决的问题进行层次分解,每分解一次就向计算机处理特点靠近一步,从而达到问题影响范围局部化,问题规模小型化的原则。
2.2.2 层次教学模式
层次教学模式将现实世界待解决的问题用层次的方式向计算机可处理的问题演化,见图2。
主要层次为待解决问题、初步解决方案、求精、选择数据结构、多次求精、代码书写和优化。
初步解决方案层较少考虑到计算机的因素,主要回答如果不采用计算机处理,人怎么处理待解决问题;求精层尽量用计算机处理的特点梳理初步解决方案,即用顺序、选择和循环语句组合描述初步解决方案;选择数据结构层根据求精层得到的解决方案进行数据结构选择,以高效和方便计算机语句的书写且有较高的时空效率为原则;再次求精层到第k次求精层为当数据结构确定后需要对求精层的解决方案进行再次求精,以期数据结构与解决方案完
美结合,至于k的大小程序员可以根据具体问题进行灵活处置;代码实现层将第k次求精层的方案用选定的程序代码实现,由于每层的分解是在上一层严格约束下进行的,所以代码层中的实现代码显然是第1层待解决问题的计算机解决方案;最后仔细检查代码,找到可以在时空方面可进行优化的地方。
图2 层次教学模式
3 实例研究
3.1 问题
非线性关系的且有先后次序的顶点关系呈有向图结构,对于有向图如果有一个顶点的线性序列且不改变顶点的在图中的先后次序,该序列为拓扑序列,需要解决的问题是研究怎样得到拓扑序列的方法,即拓扑排序算法。
3.2 层次教学模式应用
(1) 待解决的问题
一个拓扑序列是AOV(Active of Vertex)网中顶点的线性序列,使得对有向图中任意二个顶点i和j,若在网中,i领先于j,则在线性序列中i是j的前驱结点。
(2) 初步解决方案
1、在图中寻找一个入度为零的顶点,输出之;
2、从图中删除该顶点及其所有出边;从图中删除一个顶点及其所有出边时,会产生新的入度为0的顶点;
3、重复1、2,直到所有顶点都输出,或图中剩下的顶点再也没有入度为零的顶点(存在有向回路)为止。
(3) 求精
1、计算图中每个顶点的入度;
2、将入度为0的顶点放进专门的数据结构;
3、输出一个入度为0的顶点,删除它的所有出边;
4、将新产生的入度为0的顶点放入专门的数据结构;
5、重复执行3、4,直到n-1次或者没有新的入度为0的顶点。
(4) 选择数据结构
1、选择一维数组保存每个顶点的入度,Indegree[n];
2、选择整型栈保存入度为0的顶点,S;
3、由于没输出一个入度为0的顶点,均要删除它的所有的出边,因此选择图的邻接表存贮方式。
(5) 再次求精
1、计算每个顶点的入度,分别写入数组Indegree[n];
2、检查每个顶点的入度,如果为0,将S该顶点压入栈;
3、执行n-1次
3.1 如果没有入度为0的顶点,有环路,返回;
3.2 从S中取一个顶点,输出之;
3.3 将该顶点的所有的出边顶点的入度减1;如果产生新的入度为0的顶点,则压入栈S
4、结束
(6) 实现代码
如果学生对计算机语言的数据规范和语句规范很熟悉,那么到这一步很容易以处理了,因为(6)的每一句几乎可以单独来思考,黑体字为考虑到计算机特点的语句。
以
(6).3为例说明:
3.执行n-1次
[for (i=0;inextArc) k=p->adjVex; InDegree[k]--;]
/*因为图用邻接点表示,j的所有的出边都保存在以a[j]为表头的链接表中*/
3.4 . 如果产生新的入度为0的顶点,则压入栈S。
[如果顶点入度为0,则将k入栈S]
(7) 代码的书写和检查
黑体字非常容易转换成标准的计算机程序语言,根据学生选择的计算机语言进行转化;然后进入检查和编译调式阶段。
(8) 优化
对于入度为0的顶点,在Indegree数组中的位置已经空闲,所以可以将这些位置连接起来,其中一个顶点序号为头保存在top中,一个顶点为尾Indegree值为-1,另外顶点在Indegree中存放下个入度为0顶点序号而不是入度值,这样就不需要专门保存入度为0顶点的栈S。
3.4可以修改为:
如果产生新的入度为0的顶点,则压入栈S。
[如果顶点k入度为0,InDegree[k]=top;top=k;]
/*在k没加入之前,入度为0顶点的头为top,k加入后,k成入度为0顶点新的头,而k的Indegree值为刚被替换的头,即InDegree[k]=top , top=k*/
4 结论
将现实世界待处理问题的数据和功能需求映射到计算机可处理的数据和操作是研究数据结构的根本意义所在,由于两者的数据和操作呈现不同的特点,如现实世界的问题存在二义性、回溯性和多样性等特点,计算机呈无二义性、顺序性、数据格式和语言规范简单性等特点,因此学生学习理解这种映射关系会感到困难。
本文提出的分层教学模式,将现实世界待解决的问题的解决方案到计算机解决方案的一次性映射分解为多个层次映射,这样达到了降低理解映射难度的目的,呈现出良好的教学效果。
另外在理解其他的比较难的映射情况下,将一次性映射分解为分层映射不失为有助于理解和交流的好办法,因此该方法具有一般性。
参考文献
[1] 陈慧南.数据结构-使用C++语言描述[M].北京:人民邮电出版社,2006.
[2] 顾红生,曲娟.关于数据结构课堂教学模式的研究[J].辽宁广播电视大学学报,2007,(4):44-45.
[3] 吴伟民.数据结构和算法的可视化教学研究与实践[J].高等教育研究学报,1999,(3):35-37.。