基于PBL的数据结构课程的融合式实验教学
2014-05-02刘端阳王万良
刘端阳,徐 卫,刘 志,王万良
(浙江工业大学 计算机学院,浙江 杭州 310023)
数据结构课程,即数据结构与算法课程,是计算机大类专业的重要基础课程。由于课程知识点多、理论性强、抽象程度高且实践性强,学习和掌握这门课程的难度比较大。传统的教学模式,即LBL(lecture-based learning)模式,一般都是教师进行课堂讲授,学生则被动地接受。在这种模式下,学生虽然可以比较系统和完整地学习课程理论和算法,但却缺少自主性和创新性,造成了很多学生只是肤浅地掌握了一些空洞的理论和算法,却不知道如何应用,如何编程实现。PBL(problem-based learning)教学法是以问题为中心的新教学模式[1-2]。它侧重于解决学生学以致用的问题,可以提高学生的自主学习能力、实践能力和创新能力[3-6]。但同时也存在着教学不系统、不完整[6],并且耗时、耗资源等问题[7]。为此,我们教学团队综合了LBL和PBL两种教学方法的特点,在数据结构课程的教学改革中,逐步引入PBL教学法进行实验教学,力争解决学生实践能力差、自主性不强和创新能力不足等问题,培养学生分析问题和解决问题的能力,提高学生的综合素质。
1 数据结构课程的教学情况
在计算机和软件领域,问题的核心往往是算法设计,而算法设计又高度依赖于数据结构,包括数据的逻辑结构和物理结构。张铭团队在跟踪研究美国IEEE/ACM CC2001-2005 课 程 体 系 和 我 国 教 育 部CCC2006学科规范的基础上,指出了数据结构课程是计算机专业课程的核心,其主要内容包括线性表、字符串、栈、队列、树、图以及排序、查找和索引等算法[8]。同时,数据结构课程与很多课程都有紧密的关系,不仅数据结构的理解和实现需要依赖于C/C++等程序设计课程,而且数据结构的理论和算法也广泛应用于操作系统、数据库、编译原理和人工智能等课程[8]。
我校计算机学院的数据结构课程属于省级精品课程,课程适用于计算机、软件工程、网络工程和数字媒体等多个专业。在长期的教学过程中,逐步形成了比较规范的教学体系和有效的教学方法,同时也形成了稳定成熟的教学团队。我们团队根据国家教育部的教学实施方案,着力培养科学型和工程型人才[8]。但最近几年,随着90后大学生的入学以及学生人数的增加,单一的LBL教学模式越来越不适应数据结构教学的发展,出现了一些问题:
(1)前修课程基础不扎实,增加了学生学习的难度。C/C++程序设计课程是数据结构课程最主要的前修课程,它直接贯穿着课程的整个教学过程,数据结构课程的理论和算法都需要借助于C/C++语言来进行描述、讲解和实现。由于教学模式单一化、教学大班化、学时有限、学生自主性差和实践经验不足等原因,学生的C/C++编程基础普遍不扎实,这直接增加了学生学习数据结构课程的难度,也是造成学生不能学以致用的原因之一。
(2)LBL教学模式的单向性,造成学生重理论而轻实践,学生缺少实践能力和创新能力。LBL教学模式主角是教师,通过课堂讲授知识,而学生则被动地接受知识,并完成作业和实验。在这种单向性的“填鸭式”教学过程中,学生只是机械式地理解课程理论和算法,而不愿意主动地去编程实践。同时,由于期末的卷面考试侧重于理论考核,学生更愿意花时间学习理论和算法,而轻视了实践能力和创新能力的培养。
(3)课程知识点多且比较零散,学生不知道数据结构的作用,造成了学习的盲目性。课程涉及诸多零散的数据结构和算法,基本内容包括线性表、栈、队列、串、树、图以及查找和排序算法等,另外,还包括多维数组、广义表、字符树、高级二叉搜索树、红黑树等。虽然这些理论和算法广泛应用于许多后续课程,但由于传统教学只侧重于讲述本课程的知识,不注重多课程知识的融合,相应案例也脱离实际,造成了学生并不知道数据结构的应用,课程的学习也比较盲目。
2 PBL教学法
PBL教学法是以问题为中心的教学模式,也是一种集中体现建构主义学习理论的教学方法[9-10]。美国神经病学教授Borrows于1969年在加拿大麦克马斯特大学医学院首先试行了PBL教学法[1],随后逐步在很多地区得到广泛应用,并发展成为一种成熟的教学方法[10]。我国从20世纪90年代初开始在医学教育领域引入和尝试PBL教学法,并取得了一定的效果[11]。近年来,越来越多的教育工作者开始关注PBL教学法,并在多个教育领域进行理论研究和实践探索[11],PBL教学法也逐步应用于计算机教育、工程教育、商业教育、建筑教育和法律教育等领域以及中小学教育[9]。
2.1 PBL教学法具有诸多优点
PBL教学法是以学生为主角,改变了传统以教师为主的“填鸭式”教学方式。在教师的指导下,围绕着问题情境,学生以小组合作的方式来共同解决实际或真实的问题,从而学习隐含于问题背后的理论知识,并培养学生的自主学习能力、实践能力和创新能力等综合素质。与LBL教学法相比,PBL教学法具有诸多的优点:
(1)自主性。有利于促进学生积极主动地学习,提高学生的自主学习能力。
(2)实践性。有利于学生进行独立思考和理论联系实际,提高学生的实践能力。
(3)知识融合性。有利于学生融合多门课程和多个学科的知识,提高学生综合能力和创新能力。
2.2 PBL教学法实施中存在的问题
PBL教学法可以弥补传统教学出现的问题,但是在实施过程中,也存在着一些问题[5,7,10]:
(1)教学资源要求高。PBL教学对教学资源的要求比较高,要求小班化教学、数量较多的指导教师、较长的教学时间和丰富的课外资源等,这些要求在我国大部分的高校都很难得到满足。
(2)情境问题的不良性。PBL教学的情境问题具有结构不良性,虽然可以很好地培养学生的实践能力,但学生掌握的知识却并不完整、不全面。
(3)教师和学生需要适应期。PBL教学对教师和学生的要求都比较高,不仅要求教师精通理论和实践,而且要求学生具有扎实理论基础和较强的学习能力。
PBL教学法的实施,不仅需要培训教师的综合素质,也需要学生改变学习方式,因此要有足够的过渡适应时间[12]。LBL教学法虽然教学比较单向,但知识的传授却比较完整和系统,对教学资源的要求不高,因此教学实施不存在上述PBL教学的问题。
2.3 PBL教学法与LBL教学法相结合
综合来讲,PBL教学法和LBL教学法都各有所长。因此,在教学实施时,有必要根据实际情况,采取PBL教学和LBL教学相结合的方法[5]。我校的数据结构课程,长期采用LBL教学,学生虽然掌握了一定的理论和算法,但实践编程能力却比较欠缺,后续课程的学习和毕业设计的情况都直接反映出这个问题。为此,我们教学团队改革了教学方法,在LBL教学的基础上,引入了PBL教学法。考虑到课程学时有限、教学资源有限、学生人数较多和教师素质等多种原因,以及PBL教学法的不足,课堂教学还是采用LBL教学,而实验教学(包括课内实验和大型实验)则完全采用PBL教学。
在LBL课堂教学的基础上,数据结构课程的实验教学采用PBL教学法,有几个主要原因:
(1)PBL教学法可以提高学生的自主学习能力、实践能力和综合应用能力,这正是计算机和软件专业实验教学的目标;
(2)实验教学在教学资源和教学时间上,可以较好地满足PBL教学的要求;
(3)在数据结构课程教学的过程中,课堂教学在前,实验教学在后,课堂教学可以比较系统和完整地向学生传授理论知识,在此基础上,采用PBL方式的实验教学,虽然设计的情境问题并不系统,但学生在掌握PBL情境问题的基础上,可以举一反三,实现理论知识的全面掌握;
(4)课堂教学可以适当融合后续课程的知识,如操作系统、数据库等,而在PBL实验教学中,则把这些课程的知识作为情境问题来应用各种数据结构和算法,这样可以实现多课程的融合式教学,不仅夯实了数据结构基础知识,而且也拓宽了学生的知识面,为后续课程奠定基础。
这种基于PBL教学法的融合式实验教学,可以在保持理论知识完整性和系统性的前提下,融合多课程的知识,提高学生的实践能力和创新能力。
3 基于PBL的融合式实验教学的实施方案
在我校的数据结构课程教学中,实验教学是非常重要的环节。但由于教学时间受限,课内实验只有14课时,不到总学时数(64)的1/4。为了弥补实践学时的不足,我们教学团队在培养计划中,增加了为期一周的数据结构大型实验,期望学生在大型实验的实践过程中,提高实践能力和综合应用能力。但原有的实验教学方法比较简单,教师给定实验题目,而学生按照要求完成即可,同时,由于学生C/C++编程基础不扎实,多数学生都依赖参考书或参考样例,自主性和创新性比较差。再加上,实验部分占课程考核的比重很低,学生也就更加轻视实践锻炼了。为此,我们教学团队在实验教学中引入PBL教学法,重点也在于培养学生的主动学习能力、实践能力和综合创新能力。同时,在PBL实验教学的情境中,进一步融合多门相关课程的知识,如C/C++和操作系统等,从而减少学生学习的盲目性。
PBL教学法的基本流程,就是首先设置合适的情境问题,然后在教师的指导下,学生组建学习小组,寻找技术思路,并通过资料搜集、知识学习、程序编写和调试、实验报告提交等,完成问题的解决方案,并最终进行评价考核和反思总结。为此,基于PBL的融合式实验教学的实施方案可以分为4个阶段,即情境和问题、人员和思路、学习和实现、考核和总结。
3.1 情境和问题
情境和问题阶段是PBL教学法的起点,直接影响着教学的效果。香港公开大学的调查报告[12]就指出,发现很多学生不喜欢PBL的主要原因就是相关问题同现实世界的联系不大。PBL教学法不同于LBL教学法,它主要依靠合适的情境和问题来吸引学生的兴趣和引导学生的学习,如果设置的情境和提出的问题过于虚假或抽象,脱离实际应用太远,就很难吸引学生的兴趣,也很难调动学生的积极性。
数据结构课程的理论和算法并不是孤立的,它不仅与C/C++前修课程紧密相关,也是很多后续课程的基础,为此,不少教学工作者都在尝试多门课程的融合式教学[13-14]。我们教学团队在PBL教学的情境和问题中,也引入了融合式教学。具体的做法,就是采用后续课程的数据结构与算法的应用实例,作为PBL的情境,并提出相关问题。如操作系统课程的打印机队列、页面替换算法、优先级队列等,数据库课程的索引文件、排序算法等,编译原理课程的字符串处理、语法分析等,人工智能课程的有向图、搜索树等。当然,在引入这种融合式的情境时,不能偏离数据结构课程的重心,需要围绕着数据结构与算法,对引入的课程知识需要进行适当裁减。为了防止知识量过大导致学生难以理解和接受的情况出现,我们在实施融合式教学时,重点引入和融合了操作系统课程的知识,其他课程如数据库、编译原理和人工智能等暂时不涉及。
3.2 人员和思路
设置情境并提出问题后,就需要教师根据实际情况进行人员分组,并在教师指导下制定技术思路。课内实验可以2~3人一组,大型实验则可以3~5人一组。长期的LBL教学使学生习惯了依赖教师,为了适应PBL的教学,需要允许学生有一定的适应期。因此,在技术思路方面,教师可以给出大致的框架和关键技术,并提供相应的资源网址,这样可以引导学生逐步适应PBL教学,提高自主学习的能力。
3.3 学习和实现
在这个阶段,学生根据教师的指导,搜集资料、自主学习、相互讨论并最终实现编程和提交实验报告。在这个过程中,学生进行知识的构建和综合应用,他们是解决问题的主角,而教师只起辅导作用。数据结构的实验教学,主要是提高学生的编程能力和综合能力,所需的资料大都可以借助于互联网。另外,课程有相应的精品课程网络平台,教师可以通过这个平台实现资料的上传和师生的互动。师生的互动,不仅可以在课堂上,也可以通过课外答疑、QQ通讯和电子邮件等。同时,教师指导学生撰写符合软件工程规范的实验报告,报告内容包括需求分析、概要设计、详细设计、编程实现和测试等。
3.4 考核和总结
在软件类的实验教学中,公正和合理的考核机制可以更好地激发学生的实践学习能力,防止重理论而轻实践的现象。一方面,我们提高了实验教学在期末成绩中的比重,另一方面,制定详细的实验教学评分标准,评分将具体到代码编写、注释、代码测试和报告撰写等细节项目,同时,制定相应的加分和减分措施。对于思路新颖的实验,可以适当加分,而对于代码抄袭等情况,则需要重罚。这样,可以引导学生积极地参与PBL实验教学,提高自身的综合素质。每次PBL实验教学课后,教师将反思和总结学生的实验情况,并把学生存在的问题和不足,在后续的理论课堂教学里,有针对性地进行讲解,形成良性的反馈弥补机制,加深学生对理论和算法的理解和掌握。
4 实验教学案例
根据PBL教学法,我们教学团队重新设计了实验教学案例,要求学生采用C++编程语言解决相应的情境问题。教学案例主要融合了操作系统课程的知识情境,如打印机队列、缓冲区管理、页面替换算法、优先级队列和计算机登录验证等,涉及的知识点覆盖了数据结构课程的大部分理论和算法,而且,每个教学案例都按照前述的PBL教学法进行组织和管理。表1和表2列举了部分基于PBL教学法的融合式实验教学案例。
表1 课内实验教学案例
表2 大型实验教学案例
表1列举了课内实验教学采用的2个教学案例,表2则列举了大型实验教学采用的案例。案例的背景、情境都来源于操作系统课程的知识,虽然这些知识比较专业,但由于学生经常使用操作系统,对于这些知识原本就有些简单的了解,实验教学可以进一步融合这些知识,激发学生的学习热情,使学生原来的肤浅认识变得更加深刻,不仅拓宽了学生的知识面,也夯实了学生课堂上所学的数据结构理论和算法。
5 教学效果和总结
PBL教学,虽然学生是主角,但对教师的综合素质要求更高,而且,由于PBL教学融合了操作系统课程的知识,也需要教师精通操作系统理论。同时,考虑到教学改革效果需要实践来检验,因此,初期我们只选择了少数教师重点在4个自然班进行了基于PBL的融合式实验教学,总人数约为120左右,目前实施已经有2届学生了。
PBL教学班级和普通班级的教学条件和资源基本相同,课程学时数相同,课程教材也相同。但由于不同班级的实验教学方法不一样,学生反馈的学习效果也不一样,如表3的实验教学调查表。表3的调查数据表明,相对传统的教学方式,PBL融合式教学不仅提高了学生的实践动手能力,而且提高了学生的自主学习能力、学习兴趣和分析能力,大多数学生掌握了基本的数据结构与算法,部分学生掌握了高级数据结构与算法。
表3 实验教学调查表
同时,PBL融合式实验教学也提高了学生对数据结构理论与算法的掌握。如表4的期末成绩对比表,PBL教学班级的优秀率(≥90)和良好率(≥80)都明显高于普通教学班级,不及格率也明显降低。表4的数据说明了PBL实验教学对传统的LBL课堂教学有良好的助益,加深了学生对抽象理论和算法的理解。
表4 期末成绩对比表
6 结束语
在PBL实验教学实施过程中,还是存在着一定的障碍,最主要的障碍是教师的综合素质有待提高,特别是教师的实践素质和掌握多门课程的能力。虽然PBL实验教学的主角是学生,但是教师不能只是简单地督导,他们需要承担指导和咨询作用,需要随时解答学生在PBL教学过程中遇到的难题。而且,由于引入了融合式教学,教师也需要精通数据结构后续相关课程的知识,如操作系统等。次要的障碍就是学生素质的差异性较大,少量学生由于理解能力和动手能力较差,不太适应PBL教学,跟不上学习进度。因此,在后期教学改革继续深入并推广至其他班级时,不仅需要提高教师素质,也需要适当调整PBL实验教学内容,增加不同难度的案例,以适应不同层次的学生需求。
(
)
[1]Barrows Howard S.The essentials of problem-based learning[J].Journal of Dental Education,1998,62(9):630-633.
[2]Rhem J.Problem-based learning:an introduction[J].The national teaching & learning forum.The Higher Education Academy.1998,8(1):1-4.
[3]Mayo W P,Donnelly M B,Schwartz R W.Characteristics of the ideal problem-based learning tutor in clinical medicine[J].Evaluation &the Health Professions,1995,18(2):124-136.
[4]Newman M J.Problem-based learning:an introduction and overview of the key features of the approach[J].Journal of Veterinary Medical Education,2005,32(1):12-20.
[5]林锐利,刘芳.PBL教学与我国高校教学现实适用情况探讨[J].黑龙江教育:高教研究与评估版,2008(1):98-100.
[6]刘儒德.基于问题学习对教学改革的启示[J].教育研究,2002(2):73-77.
[7]汤丰林,申继亮.基于问题的学习与我国的教育现实[J].比较教育研究,2005(1):73-77.
[8]张铭,耿国华,陈卫卫,等.数据结构与算法课程教学实施方案[J].中国大学教学,2011(3):56-60.
[9]刘儒德.问题式学习:一条集中体现建构主义思想的教学改革思路[J].教育理论与实践,2001,21(5):53-56.
[10]黄斌.PBL与我国的教育现实[J].现代教育科学,2005(6):7-9.
[11]谢仁恩,陈曙光,李华新.国内教育领域PBL研究的定量分析[J].现代教育技术,2009,19(2):30-32.
[12]Margaret TAPLIN,May S C Chan,Chu Wai Wanet al.基于问题的学习方法与香港学生[J].开放教育研究,1999(4):33-46.
[13]蒋秀英.《数据结构》与《程序设计》的融合教学模式研究[J].山东师范大学学报:自然科学版,2008(3):130-131.
[14]伍艳莲,刘金定,黄芬.知识融合教学模式在“数据结构”教学中的应用[J].中国农业教育,2011(2):79-81.