孙丽云++刘淑艳++李珊
【摘要】以开发应用型教材为主线,从“数据结构”课程的课堂教学、实验教学、课程设计等角度进行课程教学改革,课程内容综合计算机类的“数据结构”和经济、管理类的“运筹学”课程,促进课程间知识互通,使得多学科共同发展,达到培养应用型人才的教学目标。
【关键词】数据结构 应用型 多学科 教学改革
【中图分类号】G642 【文献标识码】A 【文章编号】2095-3089(2015)11-0028-02
“数据结构”课程是计算机相关专业的专业基础课。如果对“数据结构”课程内容没有较好的掌握,在后续专业能力的提升上会遇到很大的阻碍,难以突破。所以“数据结构”课程的教学在计算机相关专业的教学体系中有着举足轻重的地位。
一、传统教学模式存在的部分问题
(1)“数据结构”课程理论性较强,内容较抽象,传统的以教师为中心的课堂模式中,以教师讲解演示为主,课堂上着重于概念、术语、算法步骤的解释,教学过程比较枯燥。学生对所学知识只是知其然而不知其所以然,不能真正领悟课堂所学知识的用途[1]。
(2)传统的大部分“数据结构”教材中,算法都用伪代码的形式表示,这给学生造成了很大困扰。很多学生在上机实验时,按照教材上的算法来敲程序,但往往都无法运行,学生不能理解原因,对课程的学习造成了较大困惑。
(3)传统的“数据结构”课程中,上机实验的课时所占比例较小,学生实现算法的能力得不到锻炼。
二、全面的教学改革方案
针对目前传统“数据结构”课程中存在的问题,“应用型”课程教学改革势在必行。
1.课堂教学模式的全面改革
(1)开发一本适合应用型本科学生使用的教材。
1968年,美国出现第1本“数据结构”方面的教材。自20 世纪70 年代起,“数据结构”在西方被普遍列为计算机本科的必修课程。我国引进该课程的时间是20世纪80年代,教材也是从80年代逐步建设。这些教材中的大部分都用伪代码来表示算法,且对概念、算法的描述都较抽象。学生使用这些教材学习时,大部分能够学会算法,但对于如何实现这些算法及算法的用处理解的都不够深。
①我们开发的“数据结构从应用到实现(C语言版)”的教材中,每章以实际例子引出知识点,每章最后综合应用全章知识解决一个实际问题。在介绍基本知识的基础上与实际应用相结合,加深学生对知识的理解。
如线性表章节中,对顺序存储结构实现了8个基本算法,并在综合应用举例中利用int GetLength(SeqList *L);DataType GetNode(SeqList *L,int i);int LocateList(SeqList *L, DataType e);DeleteList(SeqList *L,int i);这4个基本算法完成了集合的“差”运算,使学生能够将《离散数学》课程中的差运算与实际程序相结合来理解,既加深了对集合差运算的认识,又练习了利用基本运算对综合算法的实现。
在线性表章节的最后又分别用顺序表与单循环链表两种存储结构实现了约瑟夫问题,学生可以更直观的感受到顺序表与链表不同的算法实现。
②为了便于学生理解所学知识,本书还增加了对C语言中结构体知识的简单回顾。书中全部算法用C语言实现,且全都可编译执行。每章后面附有相关习题,书中最后附有参考答案,便于学生自己练习相关知识点。
(2)结合教材开展课堂教学模式的改革,采用案例教学法进行理论知识的讲解。教学过程中,引入“运筹学”课程中的实际案例,提高学生对现实问题的抽象理解能力及将所学知识运用于其他学科的实践能力。
(3)教学过程中根据学生的基础及目标,进行分层次的教学,因材施教。
①根据学生上一学期的C语言成绩及后续的发展目标——工作或者考研,将学生分成不同的小组,根据学生的不同的层次制定不同的教学计划。
如考研的同学除了
②讲课过程不再采用传统的以教师讲解为主的方式,而是采用以学生为中心的案例式教学。每章课程内容中的基本概念及基本知识点会在该章开始集中介绍,后续课时以小组课下完成案例——课上组间讨论、老师答疑——小组答辩(其他小组为评委)的形式展开教学。
2.实验教学的全面改革
(1)开发一本能够培养学生创新能力的,以“设计性”、“综合性”实验为主的实验指导书。
教材中包括线性表、栈和队列、树、图、查找、排序等相关的基本操作及综合应用案例,锻炼学生的动手能力。实验指导中全部算法用C语言实现,且全都可编译执行。每章包括主教材中课后习题的解析,为学生灵活掌握相关知识点提供保障。
(2)结合实验指导将学生的实验内容由“验证性”实验改为“设计性”或“综合性”实验,提高学生对知识的理解及应用能力。
如打破教材原有章节的限制,综合教材中线性表、查找和排序的知识点,要求学生完成一个综合的学生成绩管理系统,锻炼学生综合应用知识的能力。一个综合的学生成绩管理系统中,涉及到的知识点包括:对线性表不同的存储结构的理解;在不同的存储结构下进行查找、插入、删除及对元素按某关键字进行排序算法的对比;同时可以理解不同的查找、排序算法的效率等等。
(3)根据课堂教学中分层的情况,对不同层次的学生提出不同的实验要求,调动每个层次学生的积极性。如对基础较差的同学,保证其能实现基本操作;基础好的同学则以完成“设计性”、“综合性”实验及竞赛题目为主,并可通过竞赛结果检验课程改革结果。
(4)在实验环节中,根据专业特点,我们模拟实际工作场景——每个实验中,老师作为“项目经理”带领学生做项目。为了调动各个层次学生的积极性,让每个层次的学生能力都得到提高,还在班级中增设了一个“项目经理助理”的岗位。让能力强,提前完成任务的同学帮助老师对其他同学的项目进行辅导,根据其辅导的情况,给“项目经理助理”一定的分数奖励。
(5)在实验环节中,引入“蓝桥杯”比赛评分机制,培养学生养成良好的编程习惯。
“蓝桥杯”比赛成绩是以选手提交程序的运行结果作为主要评分依据的,要求程序有规范的数据输入和输出。且为了阅卷老师能尽快把握程序意图,选手应对函数过程及关键语句作必要的注释[1]。这些都是我们在实践教学中要培养学生形成的良好编程习惯,通过科学的评分机制可以强化和训练学生这方面的能力。
3.课程设计的全面改革
(1)综合其他学科中的实际问题,让学生完成大型的综合性实验。提出问题由学生解决数据结构的选取及实现,并以答辩形式检查成果。
(2)学生的实验成果可用于“运筹学”课程中相关算法的演示,给其他学科的学生以直观的感受,更好的理解他们所学知识。
三、实际建设成果
在课堂教学、实验教学与课程设计三个方面的全面改革过程中,我们取得了较明显的效果。
(1)应用型教材建设中,课题组成员查阅大量文献及各类资料,积极思考;并通过与其他学校、其他学科的教师多沟通,多交流的形式,找出了大量适合培养应用型人才的、与知识点关系密切的典型案例。
(2)在注重应用型人才培养的过程中,需考虑各个层次同学的需求,比如打算毕业工作的学生和想考研的同学其学习目的与学习方式就会有所不同。为了在课堂教学与实验教学过程中,能够充分调动不同层次学生的积极性,在“数据结构”课程体系建设过程中采用“分层次”教学的方式解决该问题。且我们的“分层次”教学中,对学生的分组考虑了“基础”与“发展”两个方向——上一学期的《C语言程序设计》课程的“基础”和毕业后的“发展”是要考研或者工作。
(3)由于数据结构课程教学现状是“重理论、轻实践”,所以相关的考试题目、实验题目、课程设计题目都存在偏重理论考查,与实际应用脱离的情况。在进行课程体系建设的过程中,我们注重对“数据结构”各种题库的应用化建设。课题组成员完成了大量习题、考研真题、实验题目及课程设计题目的收集、整理,完成了大量试题库的建设。
四、总结与展望
在整个课程体系建设过程中,我们从“数据结构”课程的课堂教学、实验教学及课程设计三个方面进行了系列的改革,主要目的是提高学生的应用能力,对“数据结构”课堂上所学知识能够活学活用。我们教学过程中通过大量的案例练习,特别是引入其他学科的案例,对学生的动手能力培养及学生对知识的理解都有非常显著的效果。
参考文献:
[1] 邓玉林,覃晓. “蓝桥杯”软件大赛对《数据结构》课程教学改革的启示[J].广西师范学院学报:自然科学版,2012:29(4):111-113.
基金项目:
2014年度河北省教育厅自筹经费项目“基于多学科的应用型“数据结构”课程体系建设综合研究”(SZ141189)