张瑞霞,周 娅,唐 麟(桂林电子科技大学 计算机科学与工程学院,广西 桂林 541004)
基于数据结构教辅系统的实验课程改革
张瑞霞,周 娅,唐 麟
(桂林电子科技大学 计算机科学与工程学院,广西 桂林 541004)
摘 要:基于自行开发的数据结构教辅系统,提出应以教师为主导、学生为主体、源码学习为中心,综合利用Flash、Java、Android手机游戏、开源Linux等方式,在教学中将理论性、实践性与娱乐性有机结合起来,并分别从自主学习、个性化、兴趣性、探索性等方面说明数据结构教辅系统的具体应用。
关键词:数据结构;实验教学;源码;教辅系统
数据结构是计算机程序设计的重要基础课,该课程具有较强的理论性和实践性。实验教学对培养学生的动手实践能力和创新能力起着举足轻重的作用。传统教学存在的问题是教学手段单一、编程语言单一、实验题目缺少前沿性和趣味性以及实用性[1-3]。笔者针对教学中存在的问题,结合多年的教学实践开发了数据结构教辅系统平台。该平台不但能够辅助学生课后自主学习,而且能够辅助教师的课堂教学。
该系统以培养学生动手实践为主要目的,系统地设计融入教学的理念和方法并应用在实验教学改革探索实践中,结合大学生喜欢新生事物的特点,综合利用Flash、Java、视频录像、Android手机游戏、开源Linux等方式,将理论性、实践性与娱乐性有机结合起来,逐步培养面向应用的创新人才。
数据结构教辅系统包括理论知识点、动手实验环节等8个模块,内容分别是源码学习、教学资源、算法演示、开源Linux、实验互动、实践创新、Android游戏和作品展示,如图1所示,我们在理论和实验环节为学生构建了完整的自主学习资源。整个系统的核心模块是源码学习,在这个模块中包含了其他各个模块涉及的完整代码。这些源码可以辅助教师的课堂教学,更有助于学生课下的自主学习和探索性学习。
图1 系统模块
2.1算法演示与代码动态同步关联
对抽象算法的理解是学好数据结构的第一步,因此教学过程中我们采用Flash演示帮助学生更好地理解知识点。不过,传统的Flash脱离代码,学生在学习过程中虽然理解了算法,但在具体实现代码时却存在障碍。在算法演示模块中,我们利用Java和Flash技术,将算法演示与算法代码有机结合,实现了算法演示与当前代码的同步关联[4-5]。在二叉排序树的插入算法中,插入的数据既可以随机产生,也可以手工输入,具有良好的互动性。代码执行到哪里,Flash演示到哪里,这样就将数据结构的算法具体化,在算法理解和算法实现之间搭起一座桥梁。这种多媒体动态演示程序提高了实验教学效果,受到越来越多的教学者和学习者的欢迎。我们自行开发了30多个类似演示,包含数据结构的重难点部分,有助于学生的自主学习。
2.2动态调试方法帮助学生理解抽象的概念
在源码学习模块,共有70多个工程文件包含其他模块中所有案例的完整源代码,在软件安装时分类安装到系统目录中,可以方便学生的自主学习和教师的辅助教学。在课堂上,教师可以利用源码辅助教学。例如,在关于链表的学习过程中,为了使学生更好地理解指针和链表算法,教师在创建链表、插入算法、删除算法、设置断点时,通过单步调试帮助学生理解抽象的算法。教师将调试的过程放慢节奏并结合板书,给学生分析自动窗口和局部窗口指针的变化,通过单步调试方式帮助学生理解代码。调试技术有助于学生自行分析寻找自己在程序设计中的逻辑错误。锻炼学生的调试能力,是培养其动手实践能力的关键起步点。另外,项目组成员将每章中的重点算法调试过程制作成了微课,方便学生课下复习。
2.3实施个性化教学,支持多语言实验和课程设计
“适合教育是面向每一个学生的个性化发展教育,是因材施教的最高境界,是对每一个学生高度负责的教育”[6]。学生的个性品质是社会、家庭、学校共同作用的结果,学生个性特征、兴趣爱好的差异和学生学习多样化的需求,决定了高校的创新教育必然是一种因材施教、个性化的教育,因此应在一个大框架基础上将学生进行分类,让学生有一定的学习选择权,有属于自己支配的时间和空间,充分发展学生良好的个性品质,使学生个性张扬的同时产生创造性。我们制定了切实可行的、彰显学生个性和能力的方案,并应用到作业、实验以及课程设计中。
我们以C语言版本的数据结构为教材[7],但是更关注学生的个性,鼓励学生根据自身的兴趣爱好以及能力用其他语言(如C++或Java)实现。除了开发语言,学生也可以自由选择开发环境。笔者在学校信息安全专业2009、2010和2011级试点后,得到了学生的认可。从学生提交的作品看,这种形式真正发挥了学生的主观能动性。从2010级信息安全专业的58个学生来看,8个学生选择Java语言,10个选择C++,40个选择C语言。从平台来看,6个学生在Android平台上开发,8个选择Linux环境,44个选择Windows环境。其中15个优秀的作品中,使用Java语言的2个,使用Android的3个,使用Linux环境的2个。从中可以看出,这种灵活的方式更能调动学生的积极性和主动性。
2.4Android手机游戏培养学生兴趣
兴趣是最好的老师。结合大学生喜欢新鲜事物的特点,我们开发了3款原创Android手机游戏[8-9],帮助学生理解抽象的概念,激发学生学习的兴趣。“小球排序游戏”有助于学生理解二叉排序树的概念,游戏说明给出了涉及的数据结构知识点和玩法,左边的小球一直往上移动,上面的数字是随机出现的,玩家根据二叉排序树的性质放到合适的位置,在小球到达顶端之前没有完成插入,即游戏失败,正确完成7次排序后则进入下一关。“荆轲游戏”共设两关,分别包含了队列和栈的概念,主人公荆轲首先在3个商人那里购买狼、羊和白菜,如果按照安全的方式运到南岸,则进入下一关走迷宫;一旦走错,比如狼和羊单独在一起,则游戏失败重新再来。“师傅选掌门游戏”包含了循环链表的概念。这些游戏的实现都会用到某种数据结构,使学生切实感受到数据结构与算法无处不在的魅力,并有意识地应用到编程实践中。
2.5更新综合性和设计性实验题目和课设题目
如果不及时更新传统陈旧的实验题目,一方面不能调动学生的积极性和热情,另一方面,学生能够从各种渠道找到成熟的方案,留给学生自行设计的空间太少,不能达到设计性要求[10]。因此,应该紧跟时代发展,不断更新实验内容。题目可以由学生自拟,也可以由指导教师选择一些创意题目,如“基于Android平台的校园导航”能考查学生对图的最短路径的理解。这个题目贴合生活实际,符合时代趋势,激发了学生的兴趣。“基于红黑树的堆内存泄漏检测”能够跟踪由new和delete引起的内存泄漏问题,是在学生理解了复杂的红黑树后开发的较为实用的作品。“化学辅助工具”是学生为高中化学教师做的小工具,是学生对链表的灵活应用,该工具能够辅助化学教师构建复杂的化学符号和化学公式。“单词拼写检查器”是学生自学Trie树后设计实现的课设作品,具有高效访问、自动提示、错误检查等功能。优秀的实验和课设作品在作品展示模块展示,包括完整的设计文档、可执行程序和工程源代码,激发了更多学生的兴趣性和探索性。
2.6学以致用,不断创新,激励学生探索性学习
培养学生的实践能力并使其能够学以致用是教学的重要目标。为了培养学生这方面的能力,我们将Linux中的数据结构剥离,并引导学生学以致用,融汇在作业、课程设计以及创新实践中,这样学生对数据结构的认识向实用性迈出了一步。例如,课本上对链表的描述与Linux中真实使用的循环链表是有差别的。Linux中使用的链表为了实现通用性,其定义形式和课本上是不同的。学习通用链表能为后续学习操作系统课程打下基础,有助于学生深入理解和研究Linux操作系统中的某些模块(如文件监控模块、网络模块)。系统提供了多个案例,教师在课堂上抽取部分重点讲解。这些案例包含了对Linux中数据结构的讲解、使用工程及说明文档,从教学效果看,极大增加了学生对Linux的研究兴趣,学生由原来的好奇和畏惧,到一步一步深入探索性学习,加深了对学生探究能力的培养。
笔者指导的学生获得国家级创新项目1项、广西区级创新项目2项。我们应以创新项目为契机,引领基础扎实的学生进行创新开发。比如,“基于Android 平台的手机安全防护系统”是国家级大学生创新项目,“基于Linux的多媒体网络教学系统”是在Linux下利用开源库开发的广西区级大学生创新项目。
数据结构教辅系统在实现过程中吸纳了一批动手实践能力较强的学生参与完成,并且包含了大量的学生优秀实验作业、课程设计和创新项目。整个系统整合为一个安装包,学生能方便地安装在自己的机器上进行自主学习。该系统经过2009、2010、2011级3届学生的应用实践,教学效果明显,并获得第12届全国多媒体课件大赛工科组一等奖,并在进行不断的完善改进中。
参考文献:
[1] 陶影, 张斌. 数据结构教学应重视算法设计与分析能力的培养[J]. 实验室研究与探索, 2008(12): 120-121.
[2] 沈奇, 刘钰, 张燕.“数据结构”课程双语教学的研究与实践[J]. 实验技术与管理, 2012(12): 154-155.
[3] 杨程, 刘涛,范勇. 基于虚拟显示的数据结构三维动态教学系统[J]. 实验技术与管理, 2012(1): 74-75.
[4] 安博教育集团. Java核心技术[M]. 北京:电子工业出版社, 2012: 2.
[5] Rober L.Java数据结构与算法[M]. 许晓云, 赵研, 曾希, 译. 北京: 中国电力出版社, 2004: 2.
[6] 曾宪波. 适合学生的教育才是优质教育[J].湖北教育, 2012(9): 32-33.
[7] 张乃孝. 算法与数据结构: C语言描述[M]. 北京: 高等教育出版社, 2006: 12.
[8] 吴亚峰, 苏亚光. Android游戏开发大全[M]. 北京: 人民邮电出版社, 2012.
[9] 詹建飞. 想到做到: Android开发关键技术与精彩案例[M]. 北京: 电子工业出版社, 2012.
[10] 王慧琴, 吴庆丰, 梁晓军. 以应用为导向的大学物理实验改革的探讨[J]. 实验技术与管理, 2012(9): 148-149.
(编辑:孙怡铭)
第一作者简介:张瑞霞,女,高级实验师,研究方向为数据结构与信息安全,rxzhang@guet.edu.cn。
基金项目:广西区级重点项目(2014JGZ117);广西精品课程数据结构项目;桂林电子科技大学国家级计算机实验示范中心项目(教高厅函2015[2]号)。
中图分类号:G642
文章编号:1672-5913(2016)04-0068-03