首页 > 范文大全 > 正文

“数据结构”课程教学方法研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇“数据结构”课程教学方法研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:对如何精心组织“数据结构课程教学提出了一些较为系统的教学方法。探讨了坚定学生学习信心,培养学生主动学习、终身学习的习惯,开展问题驱动学习,重视实践环节等方法和技巧。提出教师在教学上采取精心准备,适当追求新意,注重素质和树立良好风范的教学法则,可使学生循序渐进,稳步提高,对于教学质量的提高起到实质作用。

关键词:数据结构;教学质量;问题驱动

作者简介:吴陈(1962-),男,湖北天门人,江苏科技大学计算机学院,教授。(江苏镇江212003)

基金项目:本文系江苏省成人高等教育精品课程2010年度课题(项目编号:313830001)资助的研究成果。

中图分类号:G642.0     文献标识码:A     文章编号:1007-0079(2012)10-0096-02

“数据结构”是全日制以及成教等系列计算机科学与技术各类专业的一门学科基础课。用计算机解决任何实际问题都离不开数据表示和数据处理。而数据表示和数据处理的核心问题是数据组织和机器实现。这正是“数据结构”的基本内容。学生应从数据结构的定义和对象的使用,以及存储表示和操作的实现两个层次,系统地学习和掌握常用的基本数据结构和算法及不同的实现,了解并掌握分析、比较和选择不同的数据结构、存储结构或算法的原则和方法,深化面向对象程序设计方法和风格在不同存储结构上实现的算法思想,提高分析问题和解决问题的能力和技巧。从这个意义上说,“数据结构”在知识学习和技能培养两方面都处于十分重要的地位,是理论和实践要求都相当高的课程。它不仅为后续“操作系统”、“数据库系统”、“编译方法”、“计算机网络”等课程提供了必要的基础知识,而且也为计算机专业的学生提供了必要的技能训练。曾有人对某大学计算机历届毕业生和部分研究生追踪调查显示,几乎所有人都认为“数据结构”是他们在学校里学过的最有用的课程之一,也是国内外许多软件开发机构要求考核的基本课程之一,对计算机软件开发和应用,有着不可或缺的作用。由此可见“数据结构”这门课程的重要性。

然而,由于“数据结构”本身高度抽象,内容丰富,学习量大,技巧性高,涉及许多前驱课程中没有涉及到的知识,解答问题对于学生来说有一定的难度,所以,如何使学生学好“数据结构”,特别是如何提高整个“数据结构”的教学质量是人们探讨的一个重要话题。本文通过总结笔者从事该课程多年的教学经验,从教与学两方面阐述“数据结构”教学的一些方法和体会,以期推进和促进“数据结构”教学改革和发展,提高教学水平和教学质量。

一、紧扣大纲,抓重点难点,适度立新

古人云,授人以鱼,不如授人以渔。要达到这一点,说起来容易,做起来却相当困难,因为它要涉及到教学各个环节的方方面面。教师要高屋见瓴,准备充分,透彻把握,除了要对课程教学严格按照大纲进行,同时也要注意选择重点,分散难点。必要时也要不拘泥于教材,可根据当前“数据结构”发展的情况,作适当扩充,标新立异,拓展学生视野。课堂用幻灯片要明白易懂,可以带有动画效果,使学生感到形象生动。授课时重点要突出,难点要分散。课后习题内容布置可以让学生很好地巩固已学知识。相对来说,学生不喜欢照本宣科、毫无新意、呆板的教学方式,比较喜欢融教材基本内容和略作扩展、补充的内容为一体,灵活而富有挑战性的教学方式。

二、重视实验环节,提高算法设计和程序设计能力

与课堂教学、自学和练习相辅相成,配备课程实验,是提高学生“数据结构”课程的学习效果,增强算法设计和程序设计能力的一个必不可少的教学环节,能够训练学生进行复杂程序设计的技能,培养良好程序设计的风格,达到综合训练的目的。设计内容要丰富,要贴近实际的上机实验,更要集实用性、趣味性于一体。设计好的实验项目不仅能锻炼学生解决实际问题的分析、综合、演绎、归纳、推理的能力和编程能力,更能对思维和智能起到较大的开发和升华作用。实验题要理论联系实际,能够使学生把课堂上以及教辅材料上学到的知识灵活应用于解决实际问题,深入理解和掌握理论知识,培养学生从事软件开发所需要的动手实践能力。

实验类型分为三种:验证性实验、设计性实验和综合性实验。合理设计每种类型的实验内容,是使学生循序渐进、融会贯通、稳步提高的保障。

验证性实验题目的设计以不宜太难为准则。否则,学生一开始就觉得很难,往往会失去学习的兴趣。在验证性实验题目中,可以给出求解问题的算法的主要思想,甚至给出主要的代码。但是,在代码中可有意在重要的某些地方给出“错误”的语句,以不让程序只要一运行就能通过为准。否则学生会觉得枯燥乏味,不感兴趣。最合适的题目是,能够让学生反复调试,多次试运行,起到“举一反三”的作用。当然,教师要做到心中有数,必要时可事先通告学生,程序中预设了一些“陷阱”。事后也要告知问题所在,让学生能够对照检查,提高其查错水平,同时也能让学生检验自己的调试和更正能力。如果学生能够做不同的修改同样也能解决问题,那说明学生对该实验项目已有了十足的把握。同时,这不失为诱导学生认真阅读理解算法或程序的一种有效办法。当然,在做实验之前,也要把这种学习方法向学生加以声明,让他们心中有数,不要让学生误以为教师给的程序居然有错误。如果学生对实验内容把握良好,那么,通常会出现多种不同的校正方式。

设计性实验题目一般给出主要思想和求解思路,主要的算法基本构架,然后由学生自己编写完成全部的代码,并加以调试运行。当然也要求学生能用多组数据加以反复测试。

而综合性实验则具有更大的挑战性。往往仅给出题目内容和主要的求解功能,数据测试结果要求等,其他内容则由学生自己设计完成。大的综合性实验,也可要求学生分组,以小组为单位,多人合作,加以实施完成。课程配备的综合性实验最好能使学生感到耳目一新,相对而言,实验任务要适当大些,每个实验都包括花几个小时才能编写、调试和修改完成的程序,挑战性和实用性更加明显,使学生在最终完成后感到苦尽甘来。这样就达到了“讲一练三”的要求。通过设计型和综合型实验,学生在问题分析、总体设计、用户界面设计、程序设计技巧等诸方面的能力都会得到大幅度的提高,为将来按软件工程规范开发大型软件起到基础训练的作用,并且可养成良好的开发风格。

三、努力提高教师素质,改进教学方法

要想提高教学质量,教好学生,教师必须努力提高自身的综合素质。综合素质所包括的内容是多方面的。首先,教师必须要有强烈的责任心、严谨的治学态度和无私的奉献精神,既要热爱教学工作,更要热爱自己所教的学生。让学生感觉到,教师知识非常渊博。遇到表现突出的学生,如对课堂教学中教师所讲的经典算法提出了好的想法,对算法效率有所改进,甚至设计出了自己的不同的算法,教师就要及时加以肯定。而对未能在给定时间内设计出算法或做出习题的学生,要多加督促,严格要求,但也要体现宽严有加。即使教师“逼”学生交,学生也能体会到是对其善意的“逼”,能接受。反之,如果教师的语言不当,甚至粗俗,学生即使表面上接受,但心理上仍存反感,甚至对抗。爱学生,既要体现在授业上不辞辛劳,也要体现在教学活动中的每一个环节,包括语言美、适量的作业布置和时间上的合理安排,等等。其次,教师要不断提高自己的专业水平,教学与科研实践相结合。有时甚至可以将自己的独特经历或体验融合在课堂的教学中,既可提高学生的兴趣,又可加深学生的印象。例如,在给学生讲解图这一章的单源顶点到其余各个顶点的最短路径内容时,如果讲授了迪杰斯特拉(Dijkstra)算法之后,再补充讲一般教材上没有的不带负代数和圈的Ford-Bellman算法,学生可能不会产生特别的兴趣,因为学生对不带负代数和圈的这种现象的出现没有任何感性认识。但如果在其中穿插讲解现实生活中很多促销手段或故事,其效果可能就大不相同了。如从美国费城乘车到美国大西洋城(美国第二大“赌城”),乘汽车来回的票价需18美元,到达大西洋城某赌场门前下车后进赌场,可凭车票兑换17美元,并发给价值5美元的食品购物券(供在场内购食品用)。此时完全可以在场内转一圈,不参加任何赌博,用券买上食品,再到大西洋边兜一圈,再乘车回到费城。这与通常的走一圈应该付费相反,价值上反而相当于增加4美元。这实际上是一种促销手段,与带负回路的圈的现象的出现是一个道理。通过这个小小的插曲,不仅让学生对这种现象的出现有了一定的感性认识,同时也激起了学生的听课兴趣。

四、“问题”驱动教学,调动学生思维

突破教材本身所提供的完善体系,克服教学中平铺直叙的呆板教学方法,采用交互式的教学方法,就是在课堂上采用“问题”驱动教学。一方面可增强交互感,另一方面可调动学生积极思考,竞相解答问题的积极性。在引出教学基本内容的背景下,以“问题”为驱动,富有极强的挑战性,学生能被很好地调动起来,参与到推导、归纳和演绎之中,并能应用编程技巧,投入到问题求解之中,同时也会感觉到轻松愉快。课堂上的氛围会显得相当活跃。

要因材施教和采用“启发式”教学。例如,在讲二叉树的遍历算法,对前序、中序和后序遍历这三种算法的递归描写时,要着重比较它们之间的差别。而在非递归算法的描写下的讲解中,虽然都要利用栈来消除递归,两者有相似之处,但最后的后序非递归算法要注意是在左子树遍历完后的返回,还是右子树遍历完后的返回。特别是在讲解非递归的前序遍历时,一般在大多数教科书上都是在访问一个结点后就将其指针压栈,继续访问其左孩子结点,再将其指针压栈,直到无左孩子时,若栈非空,则从栈顶弹出栈顶元素,再转向其右孩子结点,然后按上述过程不断做下去,直到栈空为止。虽然算法思想比较单一,也便于记忆。而且在非递归遍历的中序遍历中,差别仅仅在于访问不在压栈之前进行,而是从栈上弹出后进行。两相比较,逻辑思路清楚,易于对照记忆。但如果在非递归的前序遍历算法教学中提出,能不能进一步提高效率?问空右孩子结点今后有没有右子树要访问?对学生进行启发思维。这时,就有学生提出,对空右孩子结点其指针就不需要压栈。教师对学生启发出来的这一思想加以充分的肯定,既实现了对经典算法的改进,又普遍加深了全部学生对该算法的理解。他们在今后的练习中,也会这样一点一滴地去理解和琢磨算法的每一个内容,养成自主学习的习惯,同时也树立了创新意识。通过这种类似的方法,也可贯穿着培养学生终身学习的思想以及学习方法。让学生在今后的学习中,能够学会自己提问,举一反三,用这样的学习方法进行学习且伴随终生。此外,要经常与学生就课程的教学情况进行沟通,及时了解学生对课程的掌握情况,调整教学内容和教学方法

五、采用现代化教学手段,适应当前技术发展潮流

在教学手段上,借助现代化的多媒体教学设备,通过电子文档的演示把抽象的思想用形象的动画片和具体的算法显示在屏幕上,采用有问有答、体现互动的风格教学,使教师和学生都处在探究学术问题或欣赏研究成果的情景之中,上课的氛围就会显得格外宽松。

通过使用网络资源,学生不仅可以下载和阅读教师的教学课件,还可方便地阅读或搜索网上有关“数据结构”的教学资源。学生通过电子邮件可以与教师交流沟通,及时反馈教学信息。

六、结语

本文从精心组织“数据结构”课程教学的角度,探讨了从教学理念、教学技巧、教学手段和教学方法等方向如何提高教学质量的问题。尽管有不少相关教学研究论文从不同的侧面如启发式教学、多媒体教学等进行了一系列的有意义的研究,但由于目前对教学评价体系的不断创新,学生对教学的要求越来越高,学生生源也在发生极大的变化,所以笔者认为,从将整个“数据结构”教学作为一项系统工程的角度来探讨该课程的教学,是比较适宜和有意义的。本文强调了教学中每一个基本环节的重要性,提出了一些相应的教学手段、教学技巧和教学方法,如加强教师素养、培养学生自信心和主动学习以及终身学习的思想、强化实验教学等,旨在对“数据结构”教学质量提高提出一些有益的参考和做法。

参考文献:

[1]陈雪刚.数据结构课程教学改革与实践[J].计算机教育,2011,(4):34-37.

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

[3]王红梅.数据结构(C++语言描述)[M].北京:清华大学出版社,2005.

[4]孙波,刘丹.“数据结构”多媒体教学改革研究[J].科技信息,2011,(2):264-264,266.