1. 引言
IEEE-CS/ACM的CS教程已将数据结构课程列为核心课程之首,这说明数据结构在信息学科中具有重要地位。数据结构课程是计算机专业及其相关专业的核心课程,是一门理论性和实践性都很强的课程。该课程的目标是培养和训练学生能够根据实际问题的要求,选择和设计合适的数据结构及有效的算法的能力。重点培养学生的数据抽象能力和复杂程序设计能力,提高解决实际问题的能力。但该课程知识点多,内容抽象,算法经典而复杂,动手实践能力强,加上学生要有一定的抽象思维能力,导致学生理解起来具有一定的难度,知识点难以消化,解决实际问题的能力较弱。针对这些问题,已有很多研究工作对数据结构课程教学方式、教学手段进行了改革,主要体现在针对课堂教学中使用多媒体教学方式改善传统教学方式所带来的抽象,不易理解的问题。通过多媒体课件的制作,使得学生能够了解当代码执行时数据变化情况,数据变化细节展现在学生的面前,对知识的理解起到了很好的作用。但数据结构课程不但要求学生掌握理论,而且还要求学生用所学的知识解决实际问题。那么如何将理论与实践相结合;如何培养学生的实践能力;如何提高学生分析实际问题能力;这些问题都是我们在教学改革中急需解决的。
目前,对于数据结构课程的教学改革已经有不少研究人员基于CDIO理论开展了教学改革,取得了很好的效果,如文献 [1] [2] [3] [4] 。本文以CDIO理念为指导,程序设计竞赛为驱动,提出了一个数据结构课程教学模式。该模式以培养学生的创新能力和解决实践动手能力为目的,将程序设计竞赛的相关典型案例引入到教学过程中,运用数据结构知识进行解决,使学生在理解基础知识的基础上,更能感性认识数据结构这门课程的作用,从而提高学生的学习兴趣。
2. CDIO教育模式的简要介绍
为解决创新工程型人才培养过程中出现的问题,美国麻省理工学院联合4所大学通过4年国际合作研究创立了CDIO工程教育方法。CDIO代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate),它以产品研发到产品运行的生命周期为载体,让学生以主动的方式,按照课程之间的内在有机联系学习工程理论和实践 [5] 。在“培养什么人”的问题上,CDIO改革提出3个了总目标,要求学生能够:1) 更深地掌握技术基础知识;2) 领导新产品、过程或系统的开发与运行;3) 理解研究与技术发展对社会的重要性与战略影响。即:CDIO模式要培养具有良好技术基础知识、能领导创新开发与运行并且具有社会与历史责任感的工程师 [6] 。CDIO教育理念强调的是一体化与参与性,让学生既能学到相互支持的学科知识,与此同时还能够培养学生的全面素质与综合能力,是符合教育体制改革要求的新型教育模式 [7] 。
3. 基于CDIO理念与程序设计竞赛的数据结构课程教学模式
基于CDIO理念与程序设计竞赛的数据结构课程教学模式是以培养创新能力和实践能力为数据结构的课程目标,其数据结构课程的教学内容、教学方法和手段等各个环节都以实现课程目标为导向,各环节都是动态进行并循环往复的,从而形成了一个闭环反馈模式,如图1所示。
1) 理论教学
基于CDIO理念,以程序设计竞赛的相关典型案例为主线,引导各种数据结构的理论讲解和实际操作,从而加强学生的理论理解和实际编程能力,提高学生的学习兴趣,培养和发挥学生创造性思维和解决实际问题的能力。我们将数据结构授课中每一个知识点都渗透到程序设计竞赛的相关典型案例中,提出该知识点能解决这个案例中的什么问题,让学生带着浓厚的兴趣学习该知识。当学习完该知识点后,在回到原案例,讲解该知识点是如何解决该案例中的问题,从而使学生能够学以致用,培养其解决问题的能力,实现从应用到理论又回到应用的教学过程。例如,在讲到线性表的链式存储结构时,我们选择了“飞机射击类”游戏作为案例导入,引出线性表的链式存储结构及其特点,并在课堂结束时给出案例的解决思路或者算法。又如我们以“老鼠走迷官”引出栈和队列存储结构和特点,以“时战略游戏”引出二叉判定树及特点,以“数据编码”问题引出哈夫曼树,以“城市通信网”问题引出最小生成树算法等。
2) 实践教学
在实验教学中,以程序设计竞赛为驱动,将实验题目生活化、实际化和趣味化,充分激发学生的学习主动性和积极性,将被动学习转化为主动学习,更好地达到了实践教学的目的。我们将整个数据课程的实验按照其难易程度分为基础类实验、综合设计和创新性实验三类,突出模块化集成实验教学和分层次渐进式实验教学。基础类实验主要是对课程所学知识的巩固和进一步理解;综合设计和创新性实验引入一些程序竞赛里的一些比较经典的题目作为综合型题目。这些试题不但具有典型性和趣味性,还具有专业性和综合性,学生在做这样的题目时不仅有较高的学习兴趣,而且也为以后参加程序设计竞赛打下了基础。
3) 拓展提升
我们充分利用教师科研成果在学生创新能力引导培养上具有的鲜活性、有效性的特点,将教师的科

Figure 1. Design framework of teaching mode for data structure course based on CDIO and program design competition
图1. 基于CDIO理念与程序设计竞赛的数据结构课程教学模式设计总体构架
研成果引入数据结构课程实验教学中。基于教师承担的科研课题,设计了创新实验,积极引导学生参加各种课外科技活动和科研项目的研究和开发。通过参加这些活动,引导学生用所学知识解决实际问题,增加学生软件设计和实际应用能力。
4) 团结协作
以培养团结协作精神为目标。选择实际应用的问题,以小组方式合作完成创新实验。从选题、实施到答辩每一个具体的环节,都以合作完成,培养学生勇于探索、勇于创新、团结协作的精神。
4. 基于CDIO理念与程序设计竞赛的数据结构课程教学模式实施
基于CDIO理念与程序设计竞赛的数据结构课程教学模式实施于暨南大学信息科学技术学院计算机科学与技术专业的本科生课程数据结构后,收到了很好的教学效果,收到了学生的欢迎和好评。
在理论教学中,我们采用“问题提出–解决方案–实证分析”的启发式教学方式。让学生根据提出的问题,利用所学知识提出解决问题的方案,如:拟采用的数据结构,如何编写相应的算法,如何计算及分析算法时间复杂度和空间复杂度。最后,进行实证分析看是否可以解决原实际问题,逐步形成一个提出问题–解决问题的良性循环,从而培养学生分析和解决问题能力。例如:在讲解最短路径算法时,以“中心仓库选址”作为问题,引导学生围绕这个问题开展积极地思考、分析和讨论,让学生带着问题边思考边学习,在接下来的学习中发挥主观能动性。由“中心仓库选址”问题作为切入点,分析如何选择一个合适的数据结构来表示它,从而引出图存储结构和最短路径算法,使学生对授课内容要解决的问题有个具体的认识,激发学生学习的兴趣。最后,结合“中心仓库选址”的特殊之处,从而引出“中心仓库选址”解决方案和算法,并进行实证分析。在课堂教学结束后,给学生布置一个类似案例,如“学校选址”或“医院选址”,要求学生在课外完成算法审计和代码编写和调试,提交案例报告,使学生更好地理解课堂教学内容,以此来进一步引导学生运用所学知识解决实际生活中的各种问题,增强学生的实践应用与解决问题的能力。
在实践教学中,我们充分利用ACM程序设计竞赛及各种程序设计竞赛等作为驱动,引导鼓励学生积极参加各类重大赛事。ACM程序设计竞赛题目涉及面非常广,为学生提供了一个学习和使用程序设计语言和算法的完整实践模式。暨南大学每年都利用暑假举行ACM程序设计大赛的集训,积极引导和鼓励学生参加ACM程序设计大赛。近年来张震老师和余芳老师指导了我院多名本科生参加ACM程序设计竞赛,共获得亚洲区铜牌三项,三等奖9项,取得可喜成绩。同时,基于教师科研成果的创新实验,立项了“广东省大学生创新实验”多个和多个暨南大学创新工程,其中研究成果获“广东省大学生创新实验项目优秀成果奖”,广东省“思科杯”大学生网络创意大赛一等奖等。
实践表明,基于CDIO理念与程序设计竞赛的数据结构课程教学模式,很好地激发了学生的学习兴趣,使学生的知识和动手能力得到不断的积累、锻炼和加强,受到了学生的欢迎,收到很好的教学效果,学生综合素质和实践能力得到很大的提升。
5. 结束语
基于CDIO理念的教学模式已成为具有发展潜力的研究方向之一。本文开展了基于CDIO理念与程序设计竞赛的数据结构课程教学模式的探索与实践,并取得一些研究经验和成果。今后将继续深入基于CDIO理念与程序设计竞赛的数据结构课程教学模式的探索与实践,深入数据结构课程的教学改革,提高教学质量,达到培养创新人才的目的。