工作坊+任务驱动的数据结构与算法课程教学改革及实践探索
2016-04-12刘喜勋姜庆伟夏东盛
刘喜勋 姜庆伟 戚 娜 夏东盛
工作坊+任务驱动的数据结构与算法课程教学改革及实践探索
刘喜勋姜庆伟戚娜夏东盛
为了解决传统教学过程中面临的一系列问题,本文通过把工作坊+任务驱动教学模式引入数据结构与算法课程教学改革,通过陕西工业职业技术学院软件技术专业三年的教学实践,形成了“一个项目贯穿、两重身份交替”的运行机制,实现了知识传授、学生实践能力和创新能力培养。
工作坊+任务驱动 数据结构与算法 改革与实践
数据结构与算法课程是计算机专业课程改革和资源建设核心课程之一。在该课程中介绍的各类数据的逻辑结构、存储方式及相关的算法是程序设计的基础。[1]在教学过程中,如何培养学生的数据抽象、设计算法和开发软件的能力?如何培养学生在学习这门课程之后,应用数据结构的相关知识,解决软件工程的相关问题?如何培养学生创新能力?为了让这些问题得到解决,我们把工作坊+任务驱动教学模式引入数据结构与算法教学实践中。
工作坊+任务驱动概述
1.工作坊定义
工作坊(workshop)一词,最早出现在教育与心理学的研究领域之中。上世纪60年代美国的劳伦斯·哈普林(Lawence Harplin)成功地将工作坊的理念引用到都市建设计划讨论之中,使不同立场、不同阶层、不同族群的人们,可以在一起思考、共同探讨、相互交流。在讨论都市建设计划或是社区环境议题时,成为一种鼓励大家参与、实现创新以及找出解决问题对策的有效方法。[2]
2.任务驱动
任务驱动即任务驱动教学法的简称。任务驱动教学法是一种建立在建构主义学习理论基础上的教学方法,[3]适用于高职教育中,学生通过实际操作才能掌握的知识和技能,对计算机类专业,学习软件开发所需知识和技能尤其适用。任务驱动教学法强调学生的学习活动与具体任务或问题相结合,让学生带着真实的任务去学习,以探索解决问题的方法,[4]即学生在完成任务的过程中,明确学习目标,教师在引导学生完成任务中,传授知识。老师教的知识和实际问题结合越紧密,学生的学习兴趣越高,传授的知识更容易被接受。
3.数据结构与算法课程工作坊+任务驱动教学模式的特点
数据结构与算法课程工作坊+任务驱动教学模式,是以工作坊的轻松氛围,任务驱动教学模式完成教学和学习任务的。通过活动、讨论、互动、短讲等多种方式,共同探讨某个主题,完成理论知识储备,围绕任务展开教学。鼓励学生从不同的角度去考虑和解决问题。[5]数据结构工作坊+任务驱动教学模式形成了“一个项目贯穿、两重身份交替”的运行机制,目前在高职教学中,工作坊+任务驱动教学模式已成为越来越流行的一种教学模式。
数据结构与算法教学面临的问题
数据结构与算法课程,在我院经过三十年的教学方法积淀,通过主讲教师的说课环节,学生能够充分认识到数据结构与算法课程的重要性。经过老师的认真备课,做好教学设计,课堂认真授课,学生如果能够认真听讲,课后复习,学生就能够掌握课程的相关理论,听懂常用算法。但是遇到上机实现和实际项目就会出问题。
1.理论性强,知识点多
数据结构与算法涉及线性表、树、图等复杂的数据结构,在算法实现和时空分析时,必须掌握至少一门程序设计语言,具备一定的高等数学、离散数学、概率论的理论基础,但是,在现行的高职课程体系中,由于学制的原因,有些课程没有开设,有些课程课时数少。这就导致学生虽然认识了数据结构非常重要,但在学习该课程时,因知识积累不够,会觉得内容抽象,理解起来比较困难,学起来也比较吃力,严重影响到学生的学习热情和学习效果。
2.经典算法多,实际案例少
数据结构与算法课程中,涉及将近100个经典算法,虽然熟练掌握这些算法,对于广大同学将来的职业生涯至关重要,但是由于课程中实际应用案例少,产生数据结构用不到的错觉,导致老师上课讲得津津有味,学生听得昏昏欲睡,上课听算法,上机验证算法,进而导致学生降低对该课程的重视,以至于失去学习的积极性。
3.喜欢静听,不愿动手
数据结构与算法课程,经过老师认真备课,精心准备,借助现代化教学手段,使学生喜欢数据结构与算法这门课程,但是,学生只喜欢静听,不愿动手或难动手。因为现行教材中没有现成的源程序,要上机实现,需要完成数据类型的定义、规划接口(参数传递)、将类C或其他伪码描述的算法在特定编译环境编程实现。由于课程内容的相关性和实验内容的相互依赖,如果因个体的原因,使前面安排的实验没有按时完成,则容易造成后续实训无法完成。
4.只传输知识,不培养技能
在传统数据结构与算法课程教学过程中,把课程当作纯理论课上,多数教师采用课堂讲授+上机验证的教学方式,即教师在课堂唱独角戏、学生被动不参与,虽然在短时间内灌输了大量的知识,但是无法完成实践能力和创新能力培养。学生学习完课程,只是完成知识的简单记忆,不能达到对各类算法的灵活应用和创新,这样的教学方法,学生学习没有积极性、主动性,更难培养学生的创造性,使学生失去成为高素质创新人才的良机。
工作坊+任务驱动教学模式
1.任务的设计
工作坊+任务驱动教学模式的特点之一就是围绕工作任务展开教学。因此任务的设计是关键,目标:不仅使学生掌握知识,而且可以充分调动学生的创造性思维;来源:任务可以来源于企业的实际项目,也可以由有经验的老师完成设计;要求:需要把课程内容巧妙地隐藏在每个项目中,通过完成项目,掌握课程内容。根据课程教学计划,任务提前布置给学生,学生可以查阅资料,做好完成项目需要的准备工作,鼓励学生从不同的角度去考虑和解决问题。可采用一个项目组一个综合案例,如:学生信息管理系统、图书信息管理系统、校园导航系统等。
2.教学过程
教学过程贯穿于整个项目开发流程,项目一般设计过程包括项目的总体结构设计和模块设计、编程和调试、程序联调和测试等一系列操作。项目实施的每一个环节,都是教学环节,因项目来源不同、教学目标不同、涉及的内容不同,在实施过程中会有不同的议题发生,老师需要随机应变,变更操作的方法。但是,基本的方式和步骤是不变的,有以下五个环节。
(1)项目资讯的分享
因为,任务提前布置给学生,学生通过网络、图书馆查阅资料,已获得了一些有关项目的资讯。所以,工作坊第一个实施的步骤,就是项目组成员围坐在一起,以一种轻松的氛围,共同分享每个个体掌握的基本资讯。因个体的差别,资讯获取的能力和途径会有差异,通过这样分享的过程,让项目组成员能够在平等的立场下共同讨论某一议题、交换意见、发表自己的思考成果,从而达到在短时间掌握基础知识的目的。在此过程中,指导教师一定要参与,合理补充项目组成员需要掌握但未掌握的资讯。如:学生信息管理系统、图书信息管理系统,首先分析讨论它们的共性,确认学生信息表、图书信息表的逻辑结构是线性表。为了研究这种数据结构中元素间的关系,我们可以忽略记录中的具体内容,而只将它看作结构中的一个元素。一般情况下,一个线性表是由n个元素组成的有限序列,可记作:
L=(a0,a1,…an-1)
其中,每个ai都是线性表L的数据元素。数据元素可以是不同的数据类型。例如:整型、实型、字符、结构体(记录)等,但同一线性表中的元素必须具有相同的数据类型。
(2)项目组方案设计
第二阶段在小组范围内每个成员发表自己的意见和看法,提出自己的问题,共同研究方案,在未形成共识前,老师适当点拨,确定解决方案。如:学生信息管理系统、图书信息管理系统设计时,学生提出在该程序中涉及哪些数据?这些数据应该以何种方式存储到计算机中?对于线性表应采取什么存储方式等问题。讨论之后形成共识,线性表一般有顺序存储结构与链式存储结构两种存储方式,按顺序存储结构建立起来的线性表称为顺序表,按链式存储结构建立起来的线性表称为线性链表。
(3)系统概要设计
第三阶段就是项目各小组之间交流。比第二阶段的范围更大,层次更高,发表之前各小组共同讨论出来的成果。在老师的指导下,通过和其他小组互相交流,各小组阐述自己的立场观点。通过这次沟通协调的机会,共同得出最终的解决方案,为下一阶段奠定基础。
(4)详细设计,实施编码,系统测试
详细设计,实施编码,系统测试,是整个过程最重要的内容。根据小组讨论的结果,每个小组完成了统一的概要设计。软件系统的详细设计要求每个学生独立完成。在详细设计中,主要用结构化程序设计方法,用图形工具业务流图、程序流程图、PAD图、NS流程图,描述实现具体模块所涉及到的主要算法、数据结构、调用关系。一定要引导学生,使详细设计应当足够详细,对整个系统各个层次中的每一个程序(每个模块或子程序)的细节都要涉及到,应当保证软件能够完成所有需求,达到能够根据详细设计报告方便地进行编码和测试。在进入软件编码阶段,根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,选用自己熟悉的C语言,实施编码工作,实现各模块的具体功能,从而实现目标系统的功能。还需要进行接口定义、用户界面设计等方面的工作。系统测试,即鉴定系统的正确性、完整性、安全性和质量的过程。要求在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,如:计算精度是否满足要求?用户使用是否方便?实际输出与预期输出是否一致?
(5)项目验收,实习总结
最后的项目验收,要求学生按照时间节点,提供完整的资料,如在学生信息管理系统完成后,要求每个项目组上缴完成完整系统代码、《学生信息管理系统用户安装手册》《学生信息管理系统用户使用指南》、学生信息管理系统需求报告、学生信息管理系统设计报告、学生信息管理系统测试报告、学生信息管理系统项目设计总结等资料。通过撰写项目设计总结,学生可以把整个项目实施过程中,如讨论、编制程序、调试程序等每个环节中出现的问题、具体解决途径和办法、心得和感悟进行认真总结并记录到项目设计总结中,完成职业生涯的积累。
结论
通过多年教学实践,工作坊+任务驱动的数据结构与算法课程教学改革在我院成果已显现。近三年,学生在工作坊完成企业项目20余项、科技创新项目30余项,在全国、全省职业院校大学生技能竞赛中获得国家级奖项60余项。通过课改,调动了学生积极性、主动性。通过完成企业项目,较好地培养了学生的责任感、自信心、职业品格。实践证明,工作坊+任务驱动的数据结构与算法教学模式,对培养实践能力和创新能力非常有效。
[1]刘喜勋:《基于多态和模板的数据结构算法设计》,《陕西科技大学学报》2004年第4期,第108-110页。
[2]左靖、董冰峰:《工作坊》,新星出版社,2010,4。
[3]余文森、吴刚平、刘良华:《解读教与学的意义》,华东师范大学出版社,2005。
[4]李霞林:《任务驱动式教学法在Access数据库教学中的应用》,《计算机教育》2006年第11期,第30-32页。
[5]崔学荣、李娟、吴春雷:《数据结构与算法课程教学现状分析》,《课程教育研究》2015年第1期,第150-151页。
作者单位:陕西工业职业技术学院陕西咸阳