APP下载

数据结构课程的教学方法探讨

2011-04-23杨利英

电子科技 2011年6期
关键词:数据结构结构算法

杨利英

(西安电子科技大学计算机学院,陕西西安 710071)

数据结构是计算机学科一门重要的专业基础课程,在计算机专业的课程设置中起到承上启下的作用。数据结构课程以计算机基础、程序设计语言、离散数学等课程为前提,又是操作系统、编译原理、数据库原理、软件工程等课程的基础。它和程序设计语言、软件工程的联系尤其紧密,可以形象地通过语言学习来说明三者之间的关系。程序设计语言使学生掌握基本的编程方法,相当于语言学习中的识字;数据结构使学生掌握数据组织和数据处理的方法,相当于语言学习中的作文;软件工程使学生掌握大型软件开发方法,相当于语言学习中的小说创作。由于该课程强调从问题中得出抽象数据类型、选择合适的存储结构、设计相应的操作和算法,从而在计算机上求解问题,具有较强的逻辑性和抽象性,因此学生在学习时相对吃力。如果没有好的教学方法,往往事倍功半。

1 知识体系与教学目标

美国ACM和IEEE Computer Society针对计算学科的教学计划(Computing Curricula 2005)指出,数据结构作为计算学科先导性、基础性专业课程的地位未变,同时在更多学科中扮演重要角色[1]。

一般来说,数据结构的知识体系包含数据的逻辑结构、物理结构、抽象数据类型、算法与效率分析。逻辑结构是对数据元素之间的逻辑关系的描述,可以用一个数据元素的集合和定义在此集合上的若干关系来表示。逻辑结构通常有4类,分别是集合、线性结构、树形结构、图状结构。物理结构是逻辑结构在计算机中的表示和实现,因此也称作是存储结构,有顺序存储和链式存储之分。逻辑结构是数据结构的抽象,物理结构是数据结构的实现,两者综合起来建立了数据元素之间的结构关系。很多数据结构教材都以数据的逻辑结构为主线安排教学内容。定义数据结构只是手段,目的是进行运算,因此人们真正感兴趣的是数据的逻辑结构和运算,对物理结构和运算的实现细节并不关心,抽象数据类型则为此提供了解决方案。抽象数据类型是指一个数学模型以及定义在此数学模型上的一组操作,具有数据抽象和数据封装两个特点。算法是对特定问题求解步骤的一种描述,是指令的有限序列。对于一个具体问题,最关心的是算法是什么,怎样设计出最好的算法,该算法的时间空间效率、最坏情形和平均情形如何,以及算法的一般化程度。这就涉及到算法分析技术,相当多的数据结构教材都包含了一些基本的算法分析技术[2]。

结合上述知识体系,数据结构课程的教学目标可以概括为:学会分析数据对象的特征,掌握数据组织方法和计算机的表示方法,为应用设计数据选择适当的逻辑结构、存储结构及相应算法,初步掌握算法时间空间分析的技巧,培养良好的程序设计技能。

2 教学方法

总结数据结构课程的教学现状发现,在教学过程中主要存在两个问题:其一,教与学的难度都比较大,这源于数据结构强调问题的分析和抽象;其二,学生编程实践能力亟待提高,特别是攻克问题和调试的能力。

2.1 课堂教学

课堂教学是教学活动的重中之重,其效果会影响后序所有的教学环节。为提高数据结构课程的课堂教学效果,提出以下几点措施。

(1)加强课堂互动和基础知识的理解。

在课堂上,为确保学生紧跟教师的授课思路,要充分进行课堂互动。讲解一个知识点时,教师不要急于把未知内容连续全盘给出,而是要加强引导性的介绍,适当时候说“半句话”,让学生接话,之后再重复强调一下。这样一来,既能按照授课计划完成教学任务,又能促进学生的思考。对学生而言,理解是运用和变通的前提,课堂授课本质目的就是加深理解。教师在对概念或知识点进行介绍之后,一定要给出点睛之笔,即如何理解。比如,针对遍历二叉树这一教学内容,首先从遍历的概念讲起,引导学生掌握概念并理解遍历的本质就是非线性结构的线性化。

(2)启发式教学。

启发式教学指教师讲解和学生思考有机结合的一种教学方法。教师在教学中通过合理安排讲授内容和方式,举一反三,调动学生的主观能动性,以使学生融会贯通。比如讲解栈和递归的时候,为加深学生理解问题的本质,可以给学生简述小时候就听说过的老和尚说教的故事,即“从前有座山,山上有座庙,庙里有个老和尚,老和尚对小和尚说:从前有座山……”。

(3)结合实际问题。

兴趣是最好的老师,而问题是兴趣的源泉,并且学生在学习时,真正关心的是所学知识如何应用到现实世界中。因此,结合实际问题进行讲解,可极大提高学生的求知欲。数据结构课程有许多和现实世界相通的地方,如栈和车库停车、死胡同;队列和食堂、银行等地方的顺序服务;树和人类的族谱、各种社会组织机构;图和哥德斯堡七桥问题、传教士野人过河问题、四色定理等。讲解相关内容时,结合现实问题这一举措有效提升了教学效果。

(4)图示教学法。

数据结构中有大量算法,如果单纯借助黑板,讲课效率可想而知。在课堂授课中,教师要把黑板板书和多媒体教学有机结合[3]。通过黑板板书强调教学策略和方法,师生之间建立良好的互动机制;通过多媒体教学使课堂更为生动,动态呈现算法的执行过程。图示教学法是讲解算法流程的一种有效方法,在数据结构的课堂授课中有不可替代的作用[4]。如采用图示教学法讲解二叉树的遍历操作,增强学生对算法的理解。以图1(a)中拥有7个结点的二叉树为例,演示中序遍历算法的操作过程。从图1(b)到图1(h),每步操作实现对一个结点的访问,输出当前已访问结点的序列,最后完成整棵二叉树的遍历。

图1 中序遍历算法图示详解

2.2 上机练习

学习数据结构,必须经过大量的实践,在实践中体会构造性思维方法,掌握数据组织与程序设计的技术。安排了24学时共6次的上机实验,每次4学时,实验内容则是针对课程中重要的6部分内容:线性表、栈和队列、树和二叉树、图、查找、内部排序。在上机实验的实际操作中,发现学生编程水平差别较大,有能力问题,也有其他原因。如部分学生经济条件不好,没有自己的计算机,上机需要到公共机房,因此在一定程度上影响了能力的发展。鉴于学生的掌握程度不同,在实验过程中必须遵守多样性发展的原则,针对不同学生,相同的实验内容给出不同的题目,提出不同要求,使得每位学生都在自己的基础上有提高。

2.3 作业与课下辅导

人是社会中的个体,需要在某种认可中成长,教师通过在作业评价和课下辅导中给学生以认可,建立起相应的激励机制,通过肯定、鼓励和赞赏提高学习热情和积极性。

(1)对作业严格要求。在写作业的同时,让学生在作业本上也写上不抄作业的承诺,类似于“诚信说明书”,一定程度上可以杜绝作业抄写现象。对每次作业完成情况都进行通报,当然对完成情况好的同学点名表扬,而对完成不好的同学只说明情况,并不具体到名字。同时,总结本次作业中出现的典型问题,有针对性的讲解,最后给出参考答案或者标准答案。

(2)确保课下辅导时间和效率。每讲一个知识单元后,都专门安排辅导老师和辅导时间,保证每位同学都能及时解决学习中疑惑。辅导时间毕竟有限,师生之间还可以通过电子邮件或者建立公共的网络交流平台及时沟通,如专门的QQ群。学生既可以当面找老师,也可以随时通过网络和老师联系,还可以展开全班大讨论。

2.4 考核方式

课程考核是教学活动中督促和激励学生学习的重要一环,也是教学效果的评价手段。为了全面评价学生,对考核方式进行了改革,期末考核采用“1+2+3+4”方式。平时作业占10%,督促学生及时复习巩固所学知识;实验上机占20%,边学边做,提高学生的编程能力;期末机试占30%,评测学生的实际动手能力和解决问题的能力;期末笔试占40%,全面了解和评价学生对课程的理解和掌握。课程组设计实现了网上在线机试系统XDOJ用于期末的机试。学生在线设计代码,并在规定时间内提交,系统即时给出判决,教师则对系统判决为错误的程序进行核查,以区分真正的错误和系统的误判,比如仅仅是格式输出上的不一致。XDOJ系统有三类用户,即管理员、教师用户、学生用户,管理员具有超级权限,负责整个系统的维护和机试题目的输入,教师用户进行在线判决,学生用户则只能查看设定好的题目并在线解答。该系统也可用于平时上机实验。

3 结束语

数据结构是计算机学科体系的一门核心课程,因其较强的抽象性,一直被学生认为是难学的课程之一。本文针对数据结构课程,进行了教学方法上的探讨,以期为本课程的教学提供借鉴。

[1] RUSSELL S,JAMES H C,GORDON D,et al.Computing curricula 2005:the overview report[R/OL].(2005 -11-30)[2010-09-25]http://www.acm.org/education/curricula.html.

[2] 严蔚敏,吴伟民.数据结构:C语言版[M].北京:清华大学出版社,2003.

[3] 叶双,吴清江,缑锦,等.提高“数据结构”课程教学效果的方法初探[J].计算机教育,2009(21):90-92.

[4] 沙宗尧,边馥苓.图示教学法在数据结构与算法教学中的应用[J].计算机教育,2009(18):80-82.

猜你喜欢

数据结构结构算法
《形而上学》△卷的结构和位置
数据结构线上线下混合教学模式探讨
论结构
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
论《日出》的结构
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
一种改进的整周模糊度去相关算法
高职高专数据结构教学改革探讨