APP下载

基于CD IO理念的“数据结构”课程教学的探索*

2015-01-31李桂玲朱晓莲蔡之华

中国教育信息化 2015年24期
关键词:数据结构编码考核

李桂玲,朱晓莲,蔡之华,郭 艳,张 霞

(中国地质大学(武汉)计算机学院,湖北 武汉430074)

随着“质量工程”的实施,高校计算机专业在人才培养方面做出了较大的贡献,但在实际中,毕业生满足社会需求的针对性不够明确,主要原因是现有教学模式不能满足要求。CDIO工程教育模式是近年来国际工程教育改革的最新成果,国内外的实践证明CDIO模式先进可行,适合工科教育教学环节的改革。

美国ACM/IEEE组织一直对世界计算机教育起着指导性作用。ACM/IEEE CS 2013报告中显示,在计算机专业核心知识中,“数据结构”排名前三。[1]计算机专业委员会的调研也显示,IT项目主管认为排在前三位的专业技能分别是:编程能力、数据结构和算法。[2]针对计算机专业人才培养中的问题,鉴于“数据结构”在计算机专业中的核心地位,以及在就业中属于必备专业技能的重要性,我们将CDIO理念运用于“数据结构”课程的教学中,对该课程的教学进行了探索和实践。

一、CDIO理念

CDIO是由美国麻省理工学院和瑞典皇家工学院等工程院校于2000年共同发起,通过几年的研究、探索和实践建立的一种先进的工程教育模式。

CDIO代表着构思(Conceive)—设计(Design)—实现(Implement)—运作(Operate),它以产品从构思、研发到运行的生命周期为载体,让学生以主动的、实践的、课程之间有机联系的学习方式获取工程能力。

CDIO能力大纲包括四个层面:(1)技术知识和推理;(2)个人能力、职业能力和态度;(3)人际交往能力:团队工作和交流;(4)在企业和社会环境下构思、设计、实施、运行系统。[3]

我国自汕头大学2005年引进CDIO以来,教育部CDIO工程教育模式研究与实践课题组全国CDIO试点工作组于2008年12月成立,目前有39所试点高校。国内CDIO试点高校通过探索和实践,建立了适合校情的人才培养模式,取得了良好的效果。[4][5]

二、“数据结构”课程的特点

“数据结构”课程是计算机学科中的核心专业课,广泛应用于信息科学、系统工程、应用数学及各种工程技术领域。它以程序设计语言和离散数学为其前修课,同时又是后续大量专业课程,如操作系统、数据库、编译原理、人工智能、图像处理与模式识别等的基础和前修课。

“数据结构”课程的主要内容包括:(1)线性结构:线性表、堆栈和队列、串和数组;(2)非线性结构:树和二叉树、图;(3)两种常用操作:查找和排序。

该课程的教学目的是学会分析研究实际问题中数据对象的特性,并能根据问题的需要选择适当的数据结构和存储结构以及相应的算法,并掌握算法的时间分析和空间分析的方法,同时提高算法设计、算法描述和程序设计的能力。

该课程的理论性和实践性都比较强,我们在教学中发现,学生在学习这门课程时主要存在以下问题:(1)不容易理解课程中抽象的理论,包括一些算法,不会运用所学理论解决实际问题;(2)动手编程能力不高;(3)学生大多是在老师的安排下学习,缺乏学习的主动性和探索性。

三、CDIO理念下“数据结构”的教学探索

为改进“数据结构”课程的教学效果,提高学生的动手实践能力,我们将CDIO理念应用于“数据结构”课程的教学改革中。在严格保证课程教与学内容要求的前提下,将课程置身于计算机专业课程体系的大环境且处于核心的一环,将“数据结构”的学科知识与计算机拔尖创新人才所需具备的能力整合在一起,让学生亲自经历和体验项目从需求、设计、实现到运行的完整的生命周期,让学生在“做中学”、“做中懂”、“做中会”。[6]

1.启发式教学

与传统的灌输式教学不同,启发式教学是启而不发,强调学生是学习的主体,启发学生通过独立思考去解决问题。常见的启发式教学方法有:问题驱动法、创设情境法、行为驱动法等。

例如,二叉树是一种重要的非线性结构,哈夫曼编码是二叉树的一个经典应用。在教学中首先提出问题:通信中电文如何编码?常见的一种编码方式是等长编码,给出一段电文,对其进行等长编码,启发学生思考:等长编码有何缺点?如何改进?从而引出哈夫曼编码。哈夫曼编码分为两步,第一步构造哈夫曼树,第二步对哈夫曼树进行编码。接着给出哈夫曼树的定义,引出带权路径长度(WPL)的概念,并启发学生思考:如何构造哈夫曼树?通过分析,给定n个权值,哈夫曼树是含n个叶子结点的只有度为0和2的WPL最小的二叉树;要满足WPL最小,则权值越大的叶子结点应该离树根越近。由此引出哈夫曼树的构造算法,并通过实例用Flash动画演示哈夫曼树的构造过程。接下来介绍哈夫曼树的编码规则,对哈夫曼树进行编码,并证明哈夫曼编码是最优前缀编码。据此,对前面给出的电文进行哈夫曼编码,并将该电文的哈夫曼编码长度与等长编码长度作比较,证明哈夫曼编码的优越性,也完整地解决了教学开始时提出的电文编码问题。

在教学中,我们也注重启发学生将所学的知识进行拓展,从而解决其他相关的问题。例如,表达式的计算是堆栈的经典应用,课堂上的讲授以算术表达式为例,介绍完后启发学生思考如何应用堆栈的操作设计算法,对逻辑表达式和关系表达式求值。

2.项目式教学

项目式教学是以教师和学生共同参与,学生组成小组共同完成一个项目。项目式教学的特点是以项目为主线、以教师为主导、以学生为主体,让学生在项目的实践活动中体验“做中学”、“做中懂”,从而“做中会”。[7]由于“数据结构”课程理论比较抽象,实践性比较强,我们采用项目式教学将CDIO理念融入教学活动,旨在提高学生的实践动手能力,让学生在实践中更好地理解和掌握理论,同时提高学生的团队合作能力、交流与表达能力、自信心和创新能力。

为此,在“数据结构”课程中,精心设计课程中的项目,制定项目规范,每个项目包括项目大纲、项目内容、项目组织、项目进度控制和项目实施过程,并且注重项目前后内容和层次的衔接和深化;同时,组织学生以分组、团队合作的形式参与项目,每个分组选出一名组长,每个组员在项目中都有各自的任务和职责,团队制定阶段性目标及成果表;此外,改变以往以教师为主体的“满堂灌”的教学活动,倡导以学生为主体的主动学的学习方式,在课程上提供学生上台讲解展示的机会,让学生参与教学活动,激发学生主动学习的兴趣和热情。

针对“数据结构”的课程内容,我们设计了五个实习项目:大数阶乘问题、迷宫问题、文件目录管理与显示、全国交通咨询模拟、英语词典的维护和识别。根据项目对学生进行分组,授课教师在项目开展的过程中对学生进行适当引导,让学生发挥自己的主动学习能力。项目完成后,团队内各小组成员进行项目汇报,既包括在课堂上展示项目成果、用PPT形式演讲,也包括对项目文档进行整理、规范、总结并提交。项目汇报既是团队的成果展示与答辩,也可以促进各团队之间的互相交流与学习。通过项目汇报,也锻炼了学生在公共场合表达自己观点的信心、勇气和演讲水平。

3.上机实习

“数据结构”分为理论教学和实践教学,实践教学包括两个部分:课程内的上机实习和数据结构课程设计。课程内的上机实习是课程设计阶段的基础,课程设计是课程内的上机实习的深化和延伸。

在课程内的上机实习部分,针对教学内容,设计实习题目。例如,讲授完线性表的内容后,相关的实习题目有一元稀疏多项式的计算、长整数运算等。在数据结构课程设计部分,实习题目相对于课程内的上机实习而言,所涵盖知识点更综合,难度更大,相对于教学内容有所拓展。

例如,课程设计中,计算命题演算公式的真值,需要综合运用线性结构的堆栈和非线性结构的二叉树的相关知识来解决;学生完成了基于Trie树的英文词典检索后,将问题拓展至基于PATRICIA Trie树的英文词典检索。在实习题目的选择上,不仅注重现实生活中的实际应用场景的结合,如电话客户服务模拟、洗车仿真等;也注重引入一些最新的科研热点问题,如社交网络的图实现等,激发学生解决问题的兴趣。

4.考核方式

改变以往“数据结构”课程偏重于期末闭卷考试的考核方式,实施多元化的考核方式,不再仅仅为书本知识打分。考核的中心由重点考核学生掌握知识的多少,转变为考核学生运用所掌握的知识解决实际问题的能力。为了更全面地衡量学生的态度、知识、学习能力等因素,以及衡量CDIO理念在课程中运用的效果,对课程考核方式改革,对考核内容和形式作适当调整,形成多样化的考评方法。

具体的课程考核改革措施有:从偏重期末考试的笔试考核改变到偏重进行阶段考核,增加多次小考核;以项目团队为单位考核,对项目的实施情况、成果展示和答辩进行评估;减少期末理论考试在总成绩中的比重等。其中,项目评分由选题、算法设计、程序运行、团队协作、项目汇报、项目文档等方面综合确定。

5.课程组建设

无论什么建设,归根结底在于人的建设,因此,一门课程建设的好坏关键在于课程组的建设。我院“数据结构”课程组申请该课程立项为校级精品课程,并且已经建设完成。课程组定期组织课程组的成员进行教学研讨,借鉴国外著名大学如MIT、UC Berkeley等“数据结构”课程的教学方式,结合我校计算机专业的实际情况,针对“数据结构”课程的前修后续课程情况等讨论CDIO理念以及课程改革。除了在课题组内互相交流讨论外,课题组成员也抓住机会走出校门,参加计算机教学研讨会,与其他学校的同行交流,并且将各种交流讨论的收获在教学中大胆实践。

四、效果评价

为了衡量CDIO理念在“数据结构”课程中的实践效果,我们设计了教学改革的调查问卷。针对CDIO大纲,调查问卷的内容主要包括六个方面:(1)专业基础知识及相关学科知识的掌握情况,衡量学习效果;(2)工程推理和解决问题的能力,衡量主动学习的能力和态度;(3)参与项目分组能力的提升,衡量团队协作能力;(4)系统的构思和工程化,调查“做中学”的效果;(5)教师教学的考核;(6)反馈建议。

根据学生反馈的调查问卷,统计结果表明,90.3%的学生认为掌握了“数据结构”课程的基本知识和理论,通过参与项目分组有助于提高团队的协作能力;93.5%的学生认为通过项目分组和上机实习后,动手实践编程能力得到了提高;96.8%的学生认为,查阅资料和学习的能力得到了提高,从项目组内成员以及其他组的项目汇报中学习都有收获;90.3%的学生认为“数据结构”课程的考核方式比较合理。在课程评估中,学生对教师的“数据结构”课程评分为96.16。针对CDIO教学法,学生也对今后的教学提出了一些很好的建议。

值得一提的是,项目五的题目是英语词典的维护和识别,该项目所涉及的课程教学的相关内容是查找和排序,团队学生通过自主学习、查阅资料,选择采用课程中未讲授的Trie树结构,并完成了项目的可视化开发,功能完善,项目组成员表示收获很大。

此外,基于CDIO理念在“数据结构”课程中的改革为学生带来了能力的提升,也为他们今后的专业学习和发展打下了较好的基础。学生积极参加科研立项和国际国内大赛,如ACM程序设计大赛、全国计算机仿真大赛等,获得较好的成绩。

五、结束语

CDIO理念是一种先进可行的工程教育模式,基于CDIO理念在“数据结构”课程教学中进行了改革和尝试,实践证明CDIO模式在教学中的有效性。今后我们将在课程教学中继续更加深入地探索。

[1]Joint Task Force on Computing Curricula,Association for Computing Machinery (ACM)and IEEE Computer Society.Computer Science 2013:Curriculum Guidelines for Undergraduate Programs in Computer Science[M].New York:ACM Press,2013:55-61.

[2]李晓明,陈平,张铭等.关于计算机人才需求的调研报告[J].计算机教育,2004(8):11-18.

[3]王硕旺,洪成文.CDIO:美国麻省理工学院工程教育的经典模式——基于对CDIO课程大纲的解读[J].理工高教研究,2009,28(4):116-119.

[4]顾学雍.联结理论与实践的CDIO——清华大学创新性工程教育的探索[J].高等工程教育研究,2009(1):11-23.

[5]顾佩华,沈民奋,李升平等.从CDIO到EIP-CDIO——汕头大学工程教育与人才培养模式探索[J].高等工程教育研究,2008(1):12-20.

[6]查建中.论“做中学”战略下的CDIO模式[J].高等工程教育研究,2008(3):1-6.

[7]姜大志,孙浩军.基于CDIO的主动式项目驱动学习方法研究——以Java类课程教学改革为例[J].高等工程教育研究,2012(4):159-164.

猜你喜欢

数据结构编码考核
生活中的编码
数据结构线上线下混合教学模式探讨
《全元诗》未编码疑难字考辨十五则
内部考核
子带编码在图像压缩编码中的应用
为什么会有“数据结构”?
创新完善机制 做实做优考核
Genome and healthcare
公立医院 如何考核?
高职高专数据结构教学改革探讨