非计算机专业数据结构教学的实践及创新

时间:2022-03-20 10:23:41 公文范文 浏览次数:

摘要:从非计算机专业的视角切入,基于非计算机专业学生学习数据结构存在的主要问题,探讨数据结构教学的一些实践策略以及创新思路。例如在课程教学中加入算法设计的学习,用比较法贯穿学习的始终等。通过培养学生对课程内容的兴趣,提高其学习效率、效果及应用能力。

关键词:非计算机专业;数据结构;实践;创新

数据结构不仅是计算机专业的一门核心基础课程,也是信息、通信等非计算机专业的重要课程之一。近年来,由于专业需求,其他一些理工类非计算机专业也相继开设数据结构课程。鉴于Internet的发展对于程序设计人才的需求及该课程在程序设计中的重要性,在我国,数据结构已经成为理工科非计算机专业必修的信息技术基础课程之一,目标为提高学生对数据的分析、组织、处理能力,培养学生良好的编程素养。以往该课程的大量教学研究主要针对计算机及其相关专业展开,针对非计算机专业则相对较少。本文就是从非计算机专业的视角切入,探讨数据结构教学的一些实践策略以及创新思维,为非计算机专业的数据结构教学提供一些有参考价值的建议,以促进该学科的可持续发展。

1 非计算机专业学生学习数据结构的现状及问题

1.1 学生学习基础薄弱,知识衔接不畅

程序设计基础是数据结构的先导课程之一,大多数普通高校开设的都是C语言程序设计,学生对此课程的掌握程度直接关系到数据结构课程的教学效果。非计算机专业的学生一般在学习本课程之前,只学习过简单的c语言程序设计知识,目的也常局限于计算机二级考试,缺乏系统、全局的编程训练,加之未经过离散数学等数学理论的学习,因而无论是对C语言的运用还是程序设计的抽象思维能力,亦或是实际动手能力,与计算机类专业学生的起点相比都有一定差距,其薄弱的基础令教学难度加大,效果不尽如人意。

1.2 课时不足

数据结构通常只作为非计算机专业学生的主要选修课而非专业基础课,因此无论是理论授课还是实验课时(包括实验的软环境),都相对不足。

1.3 课程教学内容理论性较强,实用性难以充分体现

数据结构对于任何一个专业的初学者都有难度,但对习惯了学习“所见即所得”的计算机知识(如Flash制作、网页设计等)的非计算机专业学生来说,却尤为困难。一来教材虽是C语言版的,但其实是以面向对象的思想进行描述,只学过C语言的学生往往觉得难以理解,二来教材中使用的类C语言不能够直接上机使用,需要另行编写调试C程序,而且即便写出相应的C程序,其运行结果也远不如生动的界面来得好看和直接,学生对课程的实用性,心存疑惑。浮躁的学习心态加上薄弱的基础使得学生在学习时难以静下心来学习,又有高年级学长的“谆谆告诫”,加剧了学生的畏惧情绪,学习兴趣值较低。

1.4 编程能力两极分化,上机能力普遍偏差

由于先导课程C语言程序设计的学习存在差异,直接导致了学生的编程能力出现两极分化,而学习C语言的目标在于考级,决定了学生上机能力普遍偏差。

2 实践策略

2.1 完善课程体系建设,增加课程的衔接度

我们在原课程体系中增加了过去未开设的离散数学课,重点学习与数据结构有关的知识,同时与上C语言程序设计课程的教师进行协调,将数据结构课程学习需要用到的几个C语言知识点,如结构体和共用体、常用的动态分配存储空间函数等进行讲解;在教学上将原本集中于计算机二级考试的焦点转向侧重于对程序的分析和设计,解决学生基础不到位的问题。

2.2 理清教学内容的基本脉络

我们使用的教材是清华大学出版社出版的严蔚敏主编的《数据结构》,经分析,教材大部分章节是以数据逻辑结构为主线,以存储结构及相关操作算法为副线。笔者在教学之初就通过让学生阅读目录的方式,将相关章节划分到数据结构的3种逻辑结构——线性(包括线性表、栈和队列、串、数组、广义表)、树、图中,使学生一开始进入学习过程就明确掌握学习内容的主体框架。而讲授每种数据结构时,则始终围绕两种存储结构——顺序和链式结构及相关操作算法进行。

2.3 培养学生的学习兴趣,明确学习目的

首先,争取上好第一堂课。学习初期是培养学生学习兴趣的良机,上好第一堂课不仅能扫除学生客观存在的实际困难和心理障碍,也为今后的学习打下良好基础。由多年的教学经验得知,实际需求是引发学生学习兴趣的最直接动机。因此,笔者利用案例法,将用人单位的实际需求与往届学生毕业后的经历告诉学生,让他们对自己毕业后的处境提前进行情境式体验,解决其关于课程实用性的疑问。由于是师范院校,大部分学生毕业后,或在大专院校及职校当老师,教授相关课程;或在中学任信息课教师,被安排辅导和带领学生参加中学生信息奥林匹克竞赛,需要用到数据结构的知识;亦有少部分学生因为在计算机方面有特长,而进入公司开发软件,等等。这样学生在心理上对自己的发展方向有了定位,学习目的也随之明确。

其次,将经典问题用讲故事的方式叙述,增加教学的趣味性,吸引学生的注意力。如将汉诺塔(Hanoi)问题与世界末日联系起来,学生的神经一下就被调动起来;将迷宫问题与实验心理学中老鼠找奶酪的经典问题联系起来,学生虽经常接触迷宫问题,但在实验心理学中也有同样应用仍感到新奇。

第三,在教学中向学生介绍ACM国际大学生程序设计竞赛。竞赛题有趣而生动,激发了学生的学习兴趣和主动性。向学生提供程序的解题思路有助于学生熟练掌握C/C++编程,了解数据结构的应用的广泛性。

最后,通过对教学进行创新,多角度拓宽学生知识面。教学的创新在后面进行了介绍。

2.4 算法分析模块化、图形化、动态化

数据结构中算法的教学难点在于其抽象性和动态性,“经验之塔”理论告诉我们形象、具体的事件有助于加深理解,故教学中应尽可能将算法形象化、具体化,就具体做法而言,可以把一个复杂的问题分解成几个功能相对简单的模块,并对其图形化、动态化。美国数学家斯蒂恩指出:如果一个特定的问题可以转化为一个图形,那么,思想就整体地把握了问题,并且能创造性地思索问题的解法。而Kaplan D.E.(2006)则用实验证明:用动画演示可以增强思维表象力,提高推理能力,从而提高学习中的理解能力。

以头插法建立单链表为例,将算法分解并图形化后,结果见图1所示。

将算法转化为图1后,再利用制作软件(如PowerPoint)的动画功能,制作出动态演示效果的多媒体课件。当然,亦可以使用有相同功能的多媒体辅助教学软件进行演示。

2.5 使用“交互式电子白板+多媒体”的教学手段

多媒体教学已经成为目前课堂教学的主要形式,多媒体课件能动态演示,生动形象,容易引起学生的兴趣。然而,此课程算法多且不易理解,需要经常采

用图示法进行讲解,完全利用多媒体课件教学很难达到理想的教学效果,此时传统的“板书”有其优势。但在实际操作中,教学地点通常是固定的,要利用多媒体课件教学就必须选择多媒体教室,而多媒体教室都是无尘环境,不能使用粉笔,因此,我们在多媒体教室安装了交互式电子白板,这种白板可以实现无尘书写,且在其上的任何操作都可以在计算机上同步显示并存储,下课后如果同学对某部分内容有疑问,可随时调阅。这种方式取得的教学效果,比单一形式或者“多媒体+黑板”式的教学更好。

2.6 加强上机实验

对数据结构的学习,最终是体现在程序的设计上。如果学生程序设计和上机能力不提高,课程的实用性也难以体现,因此,必须加强学生上机实验的能力。

首先,在上机实验题目的选择上,对于非计算机专业学生,若选择的实验题目过大,目标过高,则学生难以完成,会加重其畏难情绪。可从已经教授给学生的、书中一些简单的算法的C程序开始进行验证性实验,熟悉使用VC++调试过程的同时,体会数据结构的理论和方法,然后再循序渐进,选择一些设计性的题目进行训练。

其次,对实验报告的要求,可相对于计算机专业学生适当放低,但算法的思想、主要数据结构、程序源代码、调试过程中的问题、结论及包括算法的注释,仍要严格要求。在实践过程中,学生会遇到很多细节问题,这是他们在平时很少能想到的,要给予耐心指导。

此外,由于课时不够,采取实验课前一周告知实验任务,要求学生尽量提前完成或至少完成大部分工作。正式的实验课时则用于学生间或与老师的相互讨论,解决各层次的需求和疑问,比如设计思路的问题,调试中出现的问题,而不仅仅用于输入程序,浪费宝贵的实验课时。现在学校实行开放式实验室管理模式,部分学生还拥有自己的电脑,学生可以很方便地使用电脑,保证了此举措的顺利实施。

3 课程教学的创新思路

3.1 将一些经典的算法设计策略融入课程教学中

在非计算机专业的课程设置中,通常没有专门的算法设计课程,也很难从其他专业课程中得到相关的算法设计知识,于是,笔者尝试在数据结构的理论教学过程中将一些简单却经典的算法设计知识融入其中。

常用的算法设计策略有:分治法(Divide and Conquer)、贪心法(Greedy Algorithm)、动态规划法(Dynamic Programming)、递归(Recursion)技术等。

如构造哈夫曼树(Huffman Tree)的过程其实就是使用了著名的贪心算法(Greedy Algorithm)思想,由此产生的哈夫曼编码算法,出现频率高的字符编码较短,频率低的字符编码较长,使得总码长较短。为更好地阐释贪心算法,列举其在日常生活中的1个常见应用,如:给顾客找钱。假设有面值分别为5元、2元、1元和5角、2角、1角的货币,要给顾客找4元6角钱,通常我们会给2个2元、1个5角、1个1角,而不是46个1角或其他。这种找硬币的方法实际上就是贪心算法,其使用的贪心策略为:最大面值优先,使付出的货币最快满足要求(即货币数量最少)。此后,在讲到图这一章构造最小生成树的Prim、Kruskal算法和求单源最短路径的Diikstra算法时,再次引导学生发现这些算法同样是一个贪心算法,温故知新,反复渗透,令学生在学习数据结构典型算法的同时,亦可掌握其最根本的思想来源。

数据结构中还有很多典型问题反映了各种不同的算法策略,这些策略在生活中应用广泛,还有些是跨学科知识,将部分典型问题整理如表1所示。

这一做法虽然并不在教学大纲要求的范围之内,但从综合的角度来看,实际上是以较小的时间代价,拓宽学生的知识面,增加他们的学习兴趣,更重要的是通过总结各算法的思想共性,提高他们的思维能力,最终提升其在程序设计方面的造诣。学生经过这样的学习过程,对知识的内在联系有了更多的了解,其知识水平和思维能力会提升到一个新的层次,笔者认为这是值得一试的教学思路。而从学生在听到这些内容的表情和注意力集中度来看,他们是觉得有意思并愿意听的。需要注意的是,策略知识的讲解不可占用过多课堂教学时间。

3.2 对知识点的横、纵向比较贯穿于教学过程始终

比较1:对顺序表和链表进行比较,见表2所示。

比较2:双向链表的断链。由于已经有了之前学习单链表的断链过程的经验,可以要求学生暂时不看教材中的的算法,提示学生双向链表的断链与单链表类似,不同之处仅在于有两个方向的链域,学生做后,会发现做的顺序与书上的不一致,进而思考产生不一致的原因,最后引导学生得到一个结论,即只要在断链前保证已经保存后继或前驱的地址信息即可。

比较3:将建立带头结点的单链表的头插法,与尾插法比较;将建立带头结点与不带头结点的单链表过程进行比较。

比较4:约瑟夫(Joseph)问题。将利用循环队列求解,和利用循环链表求解比较。

以上仅仅是列举几个例子,在整个教学过程中,教师可通过对比各种数据结构的异同和他们之间的相互关系,加深学生对各种数据结构的理解;通过对同一问题寻找不同的数据结构和算法来求解,开阔学生的思路,活跃学生的思维,使他们不拘泥于书本算法,学会思考问题,培养其创造性思维和灵活运用多种方法解决实际问题的能力,增加他们学习的广深度和趣味性。

3.3 加大英语教学力度,为实施双语教学做铺垫

随着世界经济一体化和教育手段的网络化,英语在教育传播的过程中起着越来越重要的作用,实施双语教学正成为我国高等教育发展的趋势之一。

然而,由于数据结构在非计算机均专业中的性质、作用以及课程的主体素质和师资问题,该课程并不作为主体课程采用双语教学。但笔者认为,这不意味任课教师就不必考虑英语教学的问题。鉴于未来中国的发展和整体英语素质的提高,教师有责任在教学中适度引导学生在有英文的环境下学习,以帮助学生最低限度做到无障碍(包括实质上和心理上的)阅读相关的英文专业知识。因而,笔者通过如下措施加大英语教学的力度:1)课件中的专业术语全部用加注英语。2)每2~3周发放一份精心挑选的英文影印材料,篇幅不长,让学生读后写阅读心得,写作语言分阶段:初期用中文,接近教程一半时改用英文,再利用讲解习题的时间请写得较好的同学宣读并讨论。3)教学1个月后,开始课间播放与本节课内容相关的英语视频(尽量使用国外知名大学的)。4)在教学内容中章节知识衔接的部分加入对国外优秀的数据结构教学网站的介绍,需要注意的是,国外的一些著名大学如MIT、Chicago等是不开设数据结构这门课程的,而是把这些知识放到Programming Fundamentals这个模块中讲授。这些措施与真正实施双语教学甚至半双语教学都有一定距离,但由于课程本身不作为双语教学课程,在没有相应政策的支助下进行英语教学的改革,笔者不但要考虑学生的承受能力,也要承担额外的压力和风险,在此仅作为个人经验与读者交流。

4 结语

数据结构是门综合课程,它涉及多方面的知识,在针对非计算机专业的具体教学过程中,笔者结合自身的教学经验及体会,对存在的问题提出了相应的教学实践措施及策略,提供了一些创新的教学改革新思路。笔者认同,教育重要的是要唤醒学生的力量,培养其自我性、主动性、抽象的归纳力和理解力,在教学中始终坚持培养学生的思维能力甚于知识本身的理念,以期对学生未来的发展起到有益的作用。

参考文献:

[1]张铭,许卓群,杨冬青,等,数据结构课程的知识体系和教学实践[J],计算机教育,2004(3):89.

[2]南国农,电化教育学[M],北京:高等教育出版社,1985.

[3]刘小燕,杨维东,图形形象思维的研究及应用前景[J].自然辩证法研究,2000(10):10.

[4]Kaplan D.E.,Chia-lingWu,E.Computer Based Graphical Displays for Enhancing Mental Animation and ImprovingReasoning in Novice Learning of Probability[J].Journal of Computing in Higher Education,2006,18(1):55-79.

[5]王红梅,算法设计与分析[M].北京:清华大学出版社,2006:115-116.

[6]CCC2002研究组,中国计算机科学与技术学科教程2002[M].北京:清华大学出版社,2002:7.

推荐访问:数据结构 计算机专业 实践 创新 教学