APP下载

高职《数据结构》课程实践教学研究

2013-12-19陈文青

关键词:数据结构排序算法

陈文青

(绍兴职业技术学院 信息工程学院,浙江 绍兴312000)

由于《数据结构》课程具有较强的理论性、抽象性、复杂性和实践性,大部分学生感觉本课程非常晦涩难懂,难以灵活应用.不同层次的院校对数据结构课程要求不同,对于高职学生,该课程主要培养学生算法的应用能力,且由于高职学生一般存在基础薄弱、学习主动性不强等特点,因此在教学手段上要尽可能生动形象,这样才能更好地激发学生的学习兴趣,帮助学生理解掌握数据结构中的概念与算法.为达到这些教学目的,若仅通过传统实践教学方式,大多数学生对所教知识难以理解并应用,对课程感到枯燥乏味,极易丧失学习的信心与兴趣.本文针对高职学生的特点,尝试将CDIO理念结合Flash动画应用于数据结构的实践教学中,通过难度适中、实用性强的实践案例,将枯燥的算法以动态形式演示,激发学生的学习兴趣,增强其学习的信心.同时,实践操作时合理利用ACM测评系统进行动画等测评,培养学生的自主学习能力、分析解决问题能力及团队合作能力.

1 CDIO教育理念简介

CDIO工程教育模式的含义是构思(Conceive)、设计(Design)、实现(Implement)与运作(Operate),其基本的方法论是“基于项目的学习”和“做中学”.CDIO是一种全新的国际化工程教育模式,它是麻省理工学院和瑞典皇家工学院等4所大学在全球经济一体化的背景下,经过4年的研究而得出的成果[1].CDIO教育模式以项目和任务实现所必须的“知识、能力、态度”的问题解决技能,以培养个人能力(包括终生学习能力和实践能力)、团队能力和调控能力为主要目标,让学生以主动的、实践的、课程之间有联系的方式学习工程[2-3].CDIO强调在加强基础教育的同时,强调个人职业技能与人际沟通的技能并重;强调综合创新能力,与社会大环境协调发展[4].

2 数据结构实践教学存在的问题

数据结构课程具有理论性强、内容抽象等特点,不易被学生理解与掌握.要想达到良好的学习效果,需要具备一定的数学理论基础和程序设计语言基础.目前,数据结构课程的实践教学主要存在以下问题:

(1)算法一般比较抽象,学生对算法难以理解

由于《数据结构》内容抽象、算法相对复杂,不容易被学生理解并接受.同时,该课程枯燥难懂,许多学生不能完成实验内容,且实验内容与当前社会应用有较大差距,易使学生丧失兴趣.

(2)过度将ACM在线测评系统应用于平时上机实验

ACM在线测评系统对学生的设计内容是自动评判的,其对输出的数据格式有严格的要求,多一个空格或少一个空格,都不能通过测试.在一定程度上能够激发一部分学生的学习积极性,也为ACM大赛提供了很好的基础训练,但由于高职高专院校学生大部分存在基础知识薄弱、学习动力及自信心不强,自我管理以及自我约束力较差等特点,很多学生在经历几次测试失败后,丧失了学习兴趣和信心,对待该课程就处在听天由命的状态.完全依赖ACM测评系统进行平时的上机与考试,仅在格式控制一项就容易造成学生的畏难情绪,很难达到理想的教学效果.

(3)实验题目大多数属于验证性实验,缺乏来源于实际应用的素材,容易让学生觉得枯燥进而丧失学习兴趣

实践内容大多是对课本上已有算法的验证性实验,实验内容与当前社会需要有较大差距,与工程项目衔接不够紧密,与实际生活或工作无太多关联.学生在学习多种结构及其算法之后,不知道如何运用于实际,不知道学习该课程的用途何在.缺乏激发学生编程兴趣进而使学生获得乐趣和成就感的适当方式,长此以往,将会导致学生降低对该课程的重视程度.

(4)实验模式是学生独立进行学习和实践,强调了个人的能力,团队协作的能力得不到提高

3 CDIO理念结合Flash动画应用于数据结构实践教学改革

针对当前数据结构课程教学过程中存在的问题及高职学生的特点,结合CDIO教学理念及高职学生的培养目标,在数据结构课程的实践教学中采用实用有趣的案例与项目,以项目为载体,配合问题式驱动、分层次教学等多种教学手段,利用Flash制作的动画将算法进行动态演示,使算法视觉化,这样的教学方法将使算法容易被学生理解,从而激发学生的学习兴趣,提高他们的学习信心.合理利用ACM实验测评系统,改进测评方法,把传统测评与系统测评相结合,让学生在做中学,提高学生理论应用能力、团队合作能力和独立思考能力.

3.1 利用Flash制作算法演示动画,使数据结构算法视觉化

将Flash制作的算法演示动画提供给学生,学生可反复观看算法的演示,使算法视觉化,使学生容易理解算法思想,达到能够应用的教学目的.这样的表现形式既生动形象,容易激发学生的学习兴趣,又节省了学习掌握的时间.根据算法和算法讲解过程中所用到的实例,制作了动态演示片断,通过动态演示,学生对各个操作过程很容易理解,达到了很好的教学效果.在习题课和上机实验时,可以直接将一些调试好的算法程序的运行过程和运行结果演示给学生看.

例如,顺序表插入算法的Flash动画效果如图1至图3所示,可根据提示输入插入的字符与位置,然后按“执行”按钮,观看顺序表插入字符的动态过程与效果,若输入的字符或位置不合法,有相应的提示信息.教师可在演示过程中,讲解算法的主要思想.

图1 顺序表插入Flash动画

图2 插入执行成功最终效果图

图3 插入位置不合法效果

对数据结构中的顺序表基本操作(顺序表元素的插入、删除与查找)、单链表上的基本操作(头插法建单链表、尾插法建单链表、单链表结点的插入、单链表结点的删除与查找)、顺序队列操作、顺序栈操作、构造哈夫曼树的算法模拟、构造哈夫曼树过程、邻接表表示的图的广度优先遍历、邻接表表示的图的深度优先遍历、最短路径、内部排序(基数排序、归并排序、堆排序、快速排序、冒泡排序与选择排序)[5]等均可采用Flash动画进行动态模拟,且有一定的交互性,方便学生理解.

3.2 调整实践内容,分基础性实验、阶段性项目和综合性项目三阶段进行实践教学

第一阶段,设计选取来源于实际应用的基础性实验项目进行实践教学

实践课应该生动、有趣,学生是否感兴趣,实验案例是关键.目前的数据结构实践教学中,选取的案例大部分是对教材中算法的验证性试验,与实际应用关系不大甚至基本没有联系,且有的算法复杂度较高,学生上机时感觉困难、枯燥、乏味,不知学之何用,很快失去上机动手动脑的兴趣,非常不适合高职院校的教学.本文根据课程需要,从实际出发,以实用、简单、容易理解为导向,设计适合高职高专学生的实验案例,让学生学得有趣、有信心,继而愿意为学习本门课程而努力.

例如,设计队列实验题目时,学生以寝室成员为小组,模拟到学校阳光美食城买中饭的情形,建队、进队、出队、队空情况,实践题目数据有具体实际含义,而不是冰冷无趣的数字,充分调动了学生学习与探索的积极性.

在上机实践过程中深化理解算法的基本思想,掌握应用算法的基本程序.学生对日常生活中遇到的比较简单的问题,可按软件工程方法,进行需求分析,抽象数据结构,确定数据类型和数据存储结构等,然后进行详细设计编码及调试.在基础性实验引导下,通过解决实际问题,提高学生的主动探究能力和动手能力.

第二阶段,选择难度适中、有实际意义的阶段性项目进行实践教学

为让学生更加充分、深刻地理解和掌握数据结构中的算法与知识点,充分发挥学生的创造力,在完成一个阶段的基础性实验后,即可进行阶段性项目实验,整合复习前一阶段的基础实验内容.

教师根据教学内容、教学目的及学生的具体状况,与学生一起讨论项目的目标和任务,制定具有实用性的项目,最终确定项目完成的功能.指导学生利用所学的基础性实验知识点进行扩展合并,生成阶段性项目.教师做好引导工作,分析项目任务及用到的算法,并根据实际情况,提供给学生主要程序代码.学生在上机实践时,对代码进行修改并补充完整,直至程序调试成功.对阶段性项目,采用学生分组合作完成的上机实践形式.

例如,当学生对内部排序算法有了基本的了解后,可进行阶段性项目实验.设计一个关于内部排序算法比较的实验题目作为阶段性项目.通过编制一个演示内部排序算法性能比较的程序,对冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序和堆排序进行比较,学生从算法的思想开始分析了解,然后用C语言实现排序算法,以实际的算法执行结果来分析它的数据交换量、内存空间消耗和时间的消耗等.用clocl()函数把每一种的算法排序所消耗的时间显示出来,学生以小组合作形式完成实践题目.内部排序算法性能比较阶段性项目程序运行效果如图4和图5所示.

图4 内部排序算法比较运行界面

第三阶段,结合基础性实验与阶段性项目,进行综合性项目实践教学

经过基础性实验与阶段性项目实践,教师可引导学生运用所学知识解决较复杂的实际问题,使学生进一步掌握数据结构应用和软件开发方法.教师可提供部分综合性设计项目题目,也可由学生小组自行设计综合性设计项目题目,让学生充分发挥创造力,灵活运用所学知识去解决实际问题.在期末考核前,项目小组提交项目完成材料,材料文档包含项目设计思想、设计总体目标、用到的算法、完成的源代码及可执行文件等.

例如,将图的遍历、最短路径和邻接表等知识点进行整合,将学校的教学楼、教工宿舍楼、学生宿舍、图书馆、创业中心和食堂等抽象成6个结点,估算各结点的路线长度作为权值,构建出一个带权无向图;然后以邻接表的方式进行存储;据此设计一个“校园导游信息系统”,以实现校园遍历、求最短路径和关键路径等信息.

由于学时有限,在以项目为导向的实践教学中,教师可提供给学生实践项目的整体框架代码,学生在此基础上进行代码的编写调试,分工合作完成一个完整的项目.在完成项目任务的过程中,学生能有目标地进行自主学习,查阅相关资料,提高了学生自主探究、分析与解决问题的能力.

图5 选择简单选择排序运行界面

4 合理利用ACM实验测评系统,改进测评方法

一般的ACM在线评测系统只能评测输出结果唯一的程序,对不唯一的情况要使用额外手段进行正确性评价.由于系统是自动评判,对输出的数据格式有严格的要求,比如多一个空格或少一个空格,都不能通过测试,特别是在学生还未能熟练应用程序设计语言时,仅在格式控制一项就容易造成学生的畏难情绪,可能因纠结于格式而造成学习上的本末倒置.实践教学环节不单纯依赖测评系统,而是结合传统教师评判方式,给学生更多的鼓励与信心.

5 调整实践教学考核方法

增加实践考核比例,将实践考核成绩所占比例增至50%,制定三阶段实践考核细则,完善平时考核点.不仅考核学生实践题目完成情况,而且将实验项目完成的规范性、实验项目的新颖性、程序执行效果、小组汇报情况与课堂活动情况等都作为考核激励点,通过不间断的考核评价,激发学生学习的内在动机,把传统测评与系统测评相结合,合理利用目前的ACM测评系统,使得课程考核成绩更加合理、公正,形成良性竞争.

6 丰富学生的学习内容和学习手段

搭建丰富多元的实践教学平台,以立体化、全方位的形式把知识呈现给学生,增强学生学习的兴趣与乐趣.利用ACM离线版和在线版平台,学生课后可登陆系统自行练习,最大限度满足教学需求的目的,丰富学生的学习内容和学习手段,激发学生自主学习的兴趣.

7 课程改革的效果

作为一所高职院校,绍兴职业技术学院在数据结构算法教学改革与实践中取得了一系列丰硕的成果.课程组教师所指导的学生在浙江省第七届大学生程序设计竞赛中获得银奖与铜奖;在浙江省第八届大学生程序设计竞赛中获金奖、银奖与铜奖;在浙江省第九届大学生程序设计竞赛中获金奖、铜奖;在浙江省第十届大学生程序设计竞赛中获金奖、银奖与铜奖.在绍兴市组办大学生技能竞赛程序设计竞赛中,多次获一、二、三等奖.

8 结束语

应用Flash动画演示算法,使数据结构算法视觉化,容易被学生接受与理解.选取的实践项目题目注重实用性,项目题目与生活密切相关,难度适中,使得学生学习的兴趣大大提高.学生带着明确的目的去解决实际问题,学会把数据结构的知识应用于实际,可大大提高学生学习的目的性与主动性.ACM测评系统上有大量各层次难度的题目,结合ACM测评系统,学生则可根据自身特点和实际掌握情况,选择合适的实验内容进行练习.阶段性项目与综合性项目采用分组、多人合作形式完成,在良性竞争的引导下,学生相互合作,共负责任,共同承担,有利于学生的心理健康,树立正确的社会责任感和培养团队合作精神,这样的教学方法大大调动了学生学习的积极性,发掘了学生学习的内在潜力.数据结构课程中的算法虽然难教难学,但是如果采用正确有效的教学实践方法与合理的考核评价方式,仍然可以取得良好的效果.

参考文献:

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

[2]Edward F Crawley.Creating the CDIO Syllalus,a Universal Template for Engineering Education.32nd ASEE/IEEE Frontiers in Education Conference.November 6-9,2002,Boston,MA.

[3]吴雅娟.CDIO教育模式在计算机基础教学中的应用研究[J].计算机教育,2010(14):141-143.

[4]李竹林,杜利锋 ,刘兴平 .基于CDIO教学理念的数据结构课程设计方法[J].延安大学学报(自然科学报),2010(3):92-94.

[5]张世和,徐继延.数据结构[M].北京:清华大学出版社,2010.

猜你喜欢

数据结构排序算法
排序不等式
恐怖排序
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
节日排序
进位加法的两种算法
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
一种改进的整周模糊度去相关算法
高职高专数据结构教学改革探讨
TRIZ理论在“数据结构”多媒体教学中的应用