“数据结构与算法”课程教学改革与实践

2015-07-25 06:51刘晓静
微型电脑应用 2015年11期
关键词:数据结构算法能力

刘晓静

0 引言

西部地区特别是青海作为经济欠发达地区,实现青海省对信息化人才培养提出的“以培养应用型人才为目标”,已成为一个重要的研究课题。计算机科学与其他学科之间的互相渗透与融合对复合型人才的需求日益增加,从科学技术发展方向和构建复合型人才知识结构的角度出发,青海大学计算机系开设了“数据结构与算法”课程[1-2]。

“数据结构与算法”就是随着处理对象的复杂性不断增加而发展起来的一门课程,作为计算机专业的核心课程,在专业人才培养链条中占有举足轻重的地位,该课程是一门承上启下的枢纽课程,同时也是一门实践性很强的专业技术基础课程[3-4]。课程内容包括将现实世界转化为在计算机世界中的抽象的数据描述,数据在计算机中的组织以及不同数据类型的基本操作实现等,是相对比较难于理解和掌握的课程。它不仅要有计算机方面的高级语言、计算机基础和计算机组成原理等软硬件基础知识,还需要有一定的如离散数学等数学理论[5-6]。

数据抽象能力的培养在计算机软件人才和硬件人才的培养中尤为重要,是计算机系统级人才培养重要的能力要求之一。计算机应用人才如何发现应用问题、软件设计人才如何进行概念层与实现层的抽象、计算机系统人才如何进行综合设计,这些问题的解决与计算机人才的数据抽象能力密切相关[7]。作为训练学生计算思维、数据抽象能力、算法设计和分析能力、程序设计与实现能力的重要课程,如何在课程研究型实践教学的探索中不断改革创新,加强学生理论学习和实践能力相结合,已成为课程专业教师必须思考的问题。从几年来对计算机专业的学生跟踪情况看,“数据结构与算法”课程掌握的程度与学生对学习后续课程的积极性密切相关,甚至影响到对整个专业知识的掌握。对毕业学生工作情况的跟踪调查看,工作中的程序设计能力也需要有数据结构的相关知识。一般来说,具有较好数据结构基础知识的学生,在工作过程中适应工作变动、开辟新的研究阵地的能力较强[8]。

因此,“数据结构与算法”课程的教学目标是理解抽象的理论概念、熟悉和掌握理论的典型应用、逐步培养利用数据结构知识解决实际问题的能力[9]。文中追溯“数据结构与算法”课程的发展历程,着重阐释其近年来的教育改革措施,并总结了教学改革所取得的成效。

1 “数据结构与算法”历史沿革

青海大学计算机技术与应用系成立于2007年5月,从2007年开始招收计算机专业学生。2008年开设“数据结构与算法”课程时,选用了清华大学出版的《数据结构》(用面向对象方法与C++语言描述)作为课程的主讲教材。在课程的教学中,依托清华大学对口支援的优势,聘请清华专家进行第一轮“数据结构与算法”课程的教学与课程建设指导工作。青海大学三位教师分A、B角担任助教,从大纲制定、课程讲解、作业批改到课程考核,全程跟踪参与,并根据第一轮教学情况及学生反馈情况对大纲、教学内容等进行修订。

青海大学跨入“211”建设大学的行列后,借着青海大学实施“211”工程项目的契机,“数据结构与算法”被列为校级三类建设课程。课程组发挥团队优势,积极开展重点课程教学建设工作,2012年“数据结构与算法”被列为校级二类建设课程。2013年3月,“数据结构与算法”课程被评为“青海大学精品课程”。

2013年12 月,在“清华大学携手谷歌(Google)助力西部教育”项目会议上,以MOOC慕课形式开设“数据结构”课程项目启动。2014年春季学期开始,青海大学教师利用清华学堂在线MOOC平台“数据结构”课程的资源,进行了翻转课堂的教学模式尝试。

2 “数据结构与算法”的教学改革措施

2.1 混合式教学方法

绝大部分接受此课程教学的学生是90后少年,其心理和学习习惯呈现个性化、多样化的趋势。对于相对内容比较枯燥的“数据结构与算法”课程,需要在不断改进教学方法,以便能够调动学生的主观能动性。具体形式有:

(1)趣味教学法

学海无涯“趣”为舟,好的开始是成功的一半,趣的产生是学好的一半。为了让学生感到“有趣、有味”,在教学中让趣味教学进驻数据结构与算法课堂,并且尝试引入课堂角色扮演,使学生在一种轻松、愉悦的环境中学习,从而激发了学生的求知欲,充分调动学生的学习积极性,使学生对理论知识的理解和掌握更加深刻、扎实,做到融会贯通、举一反三,而且能够帮助学生培养良好的学习习惯和养成浓厚的学习兴趣。这种教学方式极大调动了学生的主观能动性,培养了学生分析和解决问题的能力[10]。

此外,开发了“数据结构与算法”演示系统,如图1所示:

图1 “数据结构与算法”演示系统

在介绍典型算法时,课堂上不仅介绍算法本身,也通过形象生动的算法动画演示将抽象的算法执行过程以浅显易懂的形式展现在学生面前,从而增强学生对算法的感性认识,使学生能够快速的掌握算法基本思想。

(2)案例教学法

在教学中,开发了“学生成绩管理案例”、“景区旅游管理案例”以及“航空订票管理案例”三个案例,如图2所示:

图2 案例系统界面

可以将线性表、栈、队列、树、图、排序等知识点贯串进来。在具体的实施过程中,按照探究未知知识领域的途径,通过提出问题、分析问题、创造性地解决问题、知识迁移等步骤对该教学方式予以实施[11]。

案例教学法既突出了知识的应用性,又让学生对项目开发工作的整体框架有了更清晰的了解,可以对不同程度的学生,特别是青海少数民族学生,进行个性化培养,以激发他们的学习热情,锻炼他们的逻辑思维能力,培养他们的创新精神和实践能力,使他们都能在不同程度上得到提高和发展。这种教学方法能将书本上的知识变“活”,可以使学生更好地理解课堂教学内容,拓展知识面,延伸和扩展课堂教学,提高学生的抽象能力、思维能力、算法和数据结构的设计与分析能力,从而使学生学会如何把书上学到的知识用于解决实际问题,以培养软件工作所需要的动手能力[12]。

(3)问题—探究式教学方法

在教学中,从问题出发,分析问题,建立求解模型,研讨算法设计,改进算法,强调问题求解的过程,从而展示思维的细节,层层递进,步步设问,梳理教学内容,把书读透、读薄,使学生学会思考、学会探究,体会创新[13]。

在树及图的部分知识讲解中,采用“问题—探究”与算法演示相结合的教学模式。比如,在最小生成树知识点的讲解中,让学生先思考在青海省6个景点之间修建公路,使6个景点能连通起来,如何安排修建,才能使费用最省?当6个景点确定下来以后,景点和景点之间的距离就可以确定下来,它们之间的距离可以测量出来,那么这个实际问题就可以抽象为一个数学问题。权在实际问题中可以代表距离、费用、同时可以代表量,这个问题转化为在图中找到一个路径将这个6个点连通起来。假设修建公路的费用与距离成正比,要找到一个没有回路的图将6个顶点连接起来,也就是生成树,同时这个树边上的距离要最小,也就是最小生成树,从而引出可要解决的主要问题。

接着分别详细讲解利用普里姆算法与克鲁斯卡尔算法求出最小生成树的详细过程,从而解决了实际问题。随后,利用动画再次演示两种算法,增强学生对算法的理解。再接着,通过课堂练习,加深学生对这两种算法的印象。

最后,对算法进行总结,并通过“基于改进最小生成树算法的油田电网网架优化研究”、“一种新的基于最小生成树的物流配送优化路线算法”以及“最小生成树算法在旅行商问题中的应用”3篇文章,让学生了解普里姆算法与克鲁斯卡尔算法在实际生活中的应用,并引领学生阅读文献、查阅文献,从而提高学生的综合能力。

(4)尝试将CDIO理念引入课程设计中

CDIO工程教育模式是近年来国际工程教育改革的最新成果,是“做中学”和“基于项目教育和学习”的集中概括和抽象表达[14]。CDIO既注重抽象理论知识的“教”和“学”,又强调教学过程中“做”的重要意义;既增强了学生的动手能力,又培养了学生的创新意识、项目设计能力和团队协作精神。开设课程设计的目的主要是培养学生的动手操作能力和团队协作精神,鼓励学生互相沟通、共同探讨、共同参与。课程设计是独立的实验环节,是对理论知识的综合应用,正好符合CDIO强调的项目完整性与综合性。

一个基于项目的课题设计,一个学生很难在短时间内完成,因此通常考虑分组合作的形式,每个小组由组长负责与指导老师沟通、汇报以及整个课题的完成进度。在教学过程中,结合学生的实际情况,采用学生提交实验报告及进行小组答辩的方式考核。这种形式从开始的查阅资料、整体方案的设计、详细设计、编码以及整个过程中不断地讨论、不断地解决问题,每一个环节都可以锻炼学生的沟通能力、解决问题能力、团队协作精神。在课程设计答辩过程中,学生们通过PPT、代码等演示方式对所做的课程设计进行了答辩陈述,现场气氛严肃又不失活跃,在设计内容和过程等方面的阐述上,同学们思路清晰、语言流畅。即是答辩人,又是评审人的同学们,秉承认真负责的原则,给出了自己认为最合理的分数,除答辩外,自己也从评审人的角度收获颇多。

(5)翻转课堂式教学方法

根据学生所学过的“程序设计基础I”、“程序设计基础II”与“VC++面向对象与可视化程序设计”课程的成绩,综合考虑学生的编程能力等方面将学生分成8个组。课程组教师开会讨论具体实施方法,并召集学习委员及8个组长针对学生具体情况制定详细的实施方案。

在具体实施过程中,通过3种形式进行翻转课堂教学。第一种,学生课下学习知识,课堂解决实际问题。栈和队列的理论与实验课程中,学生课下学习知识,教师给每组不同的题目,但考察的知识点相同,而每组通过抽签的方式进行选择题目。课堂上以组为单位进行讨论解决各自的问题,教师随机让组员进行讲解,其他同学提问,教师根据学生所讲情况及其他同学提问情况及时进行总结。第二种,学生课下学习知识,课堂上利用问题讲解知识点。在AVL树的学习中,课堂上通过解决问题的方式反过来让学生详细讲解AVL树的单旋转和双旋转以及插入与删除操作,教师进行补充。第三种,学生课下学习知识,课堂上利用角色扮演熟悉知识。在排序算法中选择直接插入排序、希尔排序、折半插入排序、归并排序、冒泡排序、快速排序、直接选择排序以及堆排序八种排序方法进行翻转课堂的实践尝试,让学生课前自学,课堂上分组利用角色扮演的方式展示不同的排序方法思想及算法。

翻转课堂教学方法,突出以学生发展为中心,让学生真正“动”起来,从而创设了和谐、生动、愉快的课堂教学环境,提升了学生的主观能动性,同时有效加强学生的人际交往能力、组织领导能力、团队协作能力,进而拓展了学生的社交能力。

(6)开展第二课堂

通过开展程序设计交流会,提高学生的编程能力。通过开展“数据结构与算法”课程学习经验交流会,收集学生对课程的反馈,从而及时调整教学进度和方法。通过举办算法设计微视频大赛,让学生感受MOOC带来的互联网变革,从而提高学生的综合能力。

2.2 以创新人才培养为目标的实验教学模式

为了解决“数据结构与算法”课程实验教学中普遍存在的问题,以创新人才培养为目标,以学生为中心,对实验教学内容以及实验教学方法进行了改革和实践。通过算法演示实践教学,增强学生的感性认识;通过施案例实践教学,锻炼学生逻辑思维能力;通过实验和科研项目结合,引导学生进行探究性学习;通过优化实验考核评价方式,激发学生实验课学习的主动性和积极性。数据结构课程实验教学改革强化实践教学活动中的“教、学、做”合一,从而加强了学生的软件开发能力和自主创新能力。

此外,在作业批改中利用作业在线批改及相似度检测系统,如图3所示:

图3 作业在线批改及相似度检测系统

根据教师日常布置作业的特点,将作业模板的分析考虑进来以提高检测的准确程度,作业在线批改及相似度检测系统能够对作业内容解析并进行两两比对,给出量化结果并进行聚类分析,并以直观形式给出作业雷同程度的分布情况以供教师参考。通过可视化的界面展示及数据统计输出,能够很快地锁定疑似抄袭的作业,从而加强对学生的督促作用,同时也大幅提高教师批改作业的效率,这对提高教学质量具有重要意义[15]。

2.3 双语教学模式

21世纪培养多层次、高水平、具有国际竞争力的信息人才是我国经济社会发展的一项基础性、战略性任务。双语教学作为培养国际性人才的重要途径,尤其是在计算机专业方面,备受人们的关注。如何尽快地缩短我国与美欧在计算机等高新技术领域的差距,培养出具有国际竞争力、国际交流能力,掌握先进核心技术的人才,是当前面临的重大课题。

针对此大的背景以及计算机系学生的实际情况,2013年春季 “数据结构与算法”课程开展了双语教学试点, 由剑桥大学博士采用全英文课件、全英文讲授,并实行外籍教师与专业教师合作教学,相辅相成,避免用语、发音等不一致的现象。课程组教师课后多次召开学生座谈会,及时了解、反馈学生的学习情况,并对授课过程进行了录像。

采用双语教学,营造了学生的英语语言环境,尽可能地扩大学生与英语接触的时空范围,加强了学生学习专业英语的意识,提高了外语技能,也为学生通过全国英语四六级考试奠定坚实的基础,同时培养了学生以后查询、阅读英文科技资料,进行国际学术交流的能力。此外,在双语教学过程中,可以吸收西方的思维方式和教学方法、培养方式,有利于深化素质教育改革。

2.4 优化课程考核方式

改革传统的教育评价形式和考试方法,强化过程考核,采取多因素评定学生课程成绩。在讲授与实践过程中,采用作业、课堂讨论、学生综述、答辩、小测验等形式,调动学生的积极性,培养学生的自学能力。课程设计引导学生从需求分析、模块设计、编程实践、调试测试各个阶段进行引导,加强学生们综合应用数据结构和算法知识的能力。

此外,引导学生跟踪数据结构与算法的前沿应用技术,引入研读论文并作报告的讨论班形式,可以调动学生学习的热情,培养学生的捕捉新理论、新技术的科研能力,从而促进学生研究性学习能力的发展。

3 教学改革措施的成效

经过不断的实验教学改革与实践,取得了可喜的成绩。

在教研方面,课程组教师共完成校级三类课程建设2项,校级二类课程建设1项,在建校级一类课程建设1项,完成校级教改项目3项,完成省级教改项目1项,在研教研项目5项,获得教学表彰11项,申报软件著作权2项。此外,发表教研论文8篇,其中北大核心2篇,EI检索1篇,ISTP检索2篇。

在培养学生方面,计算机2009级-计算机2012级本科生中,有 3项校级大学生科技创新项目获批;获批 Google助力西部教育大学生科技创新项目10余项,获批总经费达10万余元;获得国家、省、校级各类学科竞赛奖项共20余项,其中2013年“挑战杯”全国大学生课外学术科技作品竞赛二等奖1项、三等奖1项、“科教杯”学术论文大赛国家级一等奖1项,全国“第九届青少年科技创新奖”1项、中国计算机学会百名大学生奖2项;学生发表专业论文10余篇,其中EI检索5篇。

4 总结

在“数据结构与算法”课程不断的教学改革与实践中,强化实践教学活动中的“教、学、做”合一,教师的“教”是前提、学生的“学”是主体、学生的“做”是实践,让学生在学习中感受到愉快活泼的情绪,抒发自己的情感,发挥潜能与创造力。通过师师、生师、生生的协作,突出以学生发展为中心,让学生真正“动”起来,从而创设和谐、生动、愉快的课堂教学环境。

[1] 刘晓静,黄维通,王晓英.西部地区 CDIO 理念下的数据结构与算法课程建设[J].计算机教育,2013,17:107-111.

[2] 刘晓静,王晓英,张玉安等.以创新人才培养为目标的数据结构实验改革[J].实验技术与管理,2014,31(11):184-187.

[3] 李晓鸿,骆嘉伟,季洁.“数据结构与算法分析”研究型实践教学的探索[J].实验室研究与探索,31(1):121-125.

[4] 刘越畅,钟秀玉,钟治初等.数据结构课程工程化实验教学的探索和实践[J].实验室研究与探索,2012,31(8):339-341.

[5] Xiaojing Liu,Weitong Huang,Xiaoying Wang,Xiaoqing Wang. Application Research of Blending Learning in Course Study[J]. Advances in Intelligent and Soft Computing,2012,146:337-342.

[6] Xiaojing Liu,Xiaoying Wang,Rui Wang.Application of Blended Learning in Data Structures and Algorithms Course Teaching[J].Advances in Intelligent Systems Research,2013:1070-1074.

[7] 熊岳山,钱程东,徐凯.数据结构课程教学中的数据抽象能力培养体会[J].计算机工程与科学,36(A1):27-30.

[8] 李晓鸿,骆嘉伟,颜华,等.研究型大学创新性“数据结构与算法分析”课程建设[J].计算机教育,2011(8):34-38.

[9] 张同珍.数据结构课程实验教学探索与实践[J].实验室研究与探索,2011,30(9):293-295.

[10] 刘晓静,王晓英,薛媛媛,等.让趣味教学进驻数据结构与算法课堂[J].青海大学学报,2011,29(5):95-97.

[11] 谭定英,陈平平,刘慧玲.以问题为中心的案例教学法在数据结构与算法课程中的应用[J].计算机教育,2013,12: 50-53.

[12] 刘晓静,王晓英.基于项目导向的数据结构与算法课程教学研究与实践[J].微型电脑应用,2014,30(9):48-50.

[13] 唐艳琴,陈卫卫,施蕾.“数据结构”小班化教学探讨[J].计算机工程与科学,2014,36(A1):244-247.

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

[15] 王晓英,靳力,王晓青等.基于序列匹配的作业相似度检测系统[J].计算机工程,2012,38(24):53-61.

猜你喜欢
数据结构算法能力
消防安全四个能力
数据结构线上线下混合教学模式探讨
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
大兴学习之风 提升履职能力
你的换位思考能力如何
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
一种改进的整周模糊度去相关算法
高职高专数据结构教学改革探讨