软件工程数据结构课程教学研究

软件工程数据结构课程教学研究

一、课堂教学

(一)重视前导课程

编程和数学是学习数据结构的基础,例如学习数据结构(C语言版)就必须先学习C语言程序设计和离散数学。如果学生没有很好的掌握C语言程序设计的基本功,当需要编码实现数据结构的算法,学生就觉得很难,容易产生畏难情绪,影响学习效果。软件工程专业选用教学效果良好的教师来开设C语言程序设计和离散数学并开设C语言程序设计实验,给学生提供一个良好的编程环境和平台,使学生具有较好的程序设计方法和实际编程能力。这不仅有助于学生对专业课产生很好兴趣,而且可以通过阅读代码来加深对算法思想的理解。

(二)教学化抽象为具体

《数据结构》这门课涉及数理逻辑、图论、集合论和代数系统的基础,很多内容比较抽象不易理解,比如链表中节点的增减、二叉树的遍历、图的遍历和各种排序方法,对于初学者来说是有难度的,教师如果在教学中照本宣科地讲解算法和理论,很容易使得学生觉得枯燥乏味,丧失学习兴趣。为了化抽象为具体,降低学习难度,我们往往综合制作或直接利用教材配套的动画来演示算法运行的过程,利用多媒体和计算机模拟技术,将深奥、抽象的概念和原理用生动的图片,以现代化的幻灯片和多媒体等教学工具,结合传统的板书来讲解相关算法,演示编写算法程序命令行等,给学生更加直观的印象和认识。

(三)注重互动

在教学中,教师如果只是单方面的讲解,而不考虑学生的接受能力,短时间内讲授的内容过多,就很有可能形成填鸭式的灌输。如果不注意引导学生主动思考,教师抛出的提问学生则很少会主动回答,学生还容易走神开小差,课堂效果就不会理想。因此在教学过程中,每介绍一种数据结构,我们都先给出生活中的应用实例,并请学生思考日常生活类似的实例,以此激发学生未知的欲望;例如在讲解图的最小生树算法时,给出了快递员选择送货路径的例子。在讲授知识点前,先引导学生根据所给问题认真思考,然后再给出经典解决方案的思想,并请同学们讨论该思想与他们所想的异同,然后进行点评。

(四)CDIO工程教育模式

EdwardCarwley教授领导的跨国高等工程教育改革研究组,创立了工程教育模型CDIO(Conceive构思、Design设计、Implement实现、Operate运行),与软件开发流程(需求分析、概要设计、详细设计、编码实现和测试运行)正好相吻合。在讲授数据结构和算法时,先与学生一起仔细分析问题,问题所涉及的数据类型和数据间的逻辑关系,再分析解决问题算法的思想,然后探讨算法步骤,最后水到渠成地讲解对应的代码。渐进式地将CDIO思维能力培养融入课程教学中,有助于培养学生数据抽象能力和算法设计能力。

二、注重实践

实践编程可帮助学生进一步理解课本上的数据结构和算法,促进其将理论知识应用实际编程中,提高学生编程能力,激发其进一步学习的兴趣。引入硕士入学考试,国家软件水平考试,软件开发岗位的招聘考试等试题作为上机实训练习题,在编写和调试程序的过程中,学生的动手能力会自然而然的得到提高;一旦程序调试成功,顺利运行获得正确结果,可给学生带来成就感,增强其学习的信心和兴趣。同学们一起实践时,可对算法的不同实现方法在时间和空间上进行比较。给出不同难度的题供学生选择,不同难度的题对应于不同的起评分,这样既不打击基础差的那些学生的信心,也可进一步挖掘学有余力的那些同学的潜力。为了弥补课时的不足,课后让学生在本校教学平台上,仿照ACM竞赛模式,两人或三人组成一队,在规定时间内团队协作完成指定程序设计题目的算法设计和代码实现,提交正确程序,这种教学方式可以促进学生之间相互交流与学习,达到自主学习的目的。

三、完善考核方法,注重能力培养

考试的方式和内容,有时可以说是学习的指挥棒,因此科学完善的考核,不仅可检验学生学习的效果,也可调动学生的学习主动性。《数据结构》课程要求学生掌握众多数据结构的特点,透彻地理解各种数据对象的特点和关系,掌握数据逻辑组织和物理组织的基本方法,不同的数据结构所对应的数据处理算法,此课程实践性强,实用范围广,传统的闭卷考试很难反映出学生真实的编程能力,往往只能反映出学生对基本概念的掌握程度,不利引导学生将理论和实践相结合。因此,我们采用平时实验、期末理论考试和课程设计相结合的方式来检查学生的学习情况。平时上机实验报告作为一个重要的考核依据,引导学生注重学习过程。课程设计采用三人一组,协同完成一个小型系统的开发。学生通过先导课《C程序设计》的学习,再经过《数据结构》课程的训练,已经具备了一定的程序设计知识和能力,因此课程设计一般以考察学生是否具备较复杂的程序设计能力为主要目的,要求独立完成程序的编写和调试,并按时提交设计报告。学生分组讲解课程设计的成果,再采取教师评价、学生自评、小组互评和组内互评等多种方式进行评比,这进一步培养学生程序设计、算法分析及软件开发的能力,提高学生的团队合作和沟通水平。

四、结束语

《数据结构》课程内容比较抽象,是软件工程专业一门极其重要的课程,一些学生难以透彻掌握该课程的内容,为此,我们积极探索有效的方法来提高理论课堂教学效果,加强实践训练来培养学生动手能力,激发学生的学习兴趣。促进学生主动学习的意识,引导学生将数据结构的基本理论和算法思想应用到实际编程中来。通过几年的努力,取得了学生满意的教学效果。

作者:陈荣元 陈海军 徐雪松 申立智 陈浪 单位:湖南商学院计算机与信息工程学院管理工程研究所 国防科学技术大学计算机学院