“数据结构与算法”小班教学方法探索实践

作者: 厉夫兵 孙剑


[摘 要] 为提高“数据结构与算法”课程教学效果,针对课程大班授课存在的师生互动频率低、学生课堂学习主动性不高、课堂学习效果难以随时评估等问题,对小班授课教学方法进行了探索。通过安排本门课程与先修课程进行平稳衔接,采用多种教学手段相结合的方法,例如,动画演示数据操作过程、微课视频讲解重要知识点、示例程序现场运行演示计算结果,以及使用随堂测验方法检查学习效果等方法,改善了师生互动效果,增强了学生的学习主动性,学生考试成绩得到提高。

[关键词] 小班授课;教学方法;数据结构;电子信息

[基金项目] 2021年度北京信息科技大学教学改革项目“以学生为中心的‘数据结构与算法’课程小班教学方法探索”(2021JGYB14);2023年度北京信息科技大学教学改革项目“基于小组学习的数据结构与算法课程教学改革与实践研究”(2023JGYB16)

[作者简介] 厉夫兵(1982—),男,山东日照人,博士,北京信息科技大学信息与通信工程学院副教授,硕士生导师,主要从事信号处理、目标特性建模研究;孙 剑(1986—),男,辽宁开原人,博士,北京信息科技大学信息与通信工程学院副教授,硕士生导师,主要从事光通信、光信号处理等方面的研究。

[中图分类号] G642.0 [文献标识码] A [文章编号] 1674-9324(2024)17-0133-04 [收稿日期] 2023-04-06

自班级授课制诞生以来,以班级为单位的授课方式被广泛采用[1]。自20世纪90年代开始,世界上一些学术声誉较高的大学和学院纷纷寻求教学质量的突破性提升,其中最为重要的改革就是增加小班级教学的比重。小班教学是美国顶尖大学保证本科教育质量的核心手段,越是重视本科教育的大学越强调小班教学的重要性。在哥伦比亚大学课程中,大约60%班级的学生人数低于20人,本科生生师比达到6∶1[2]。同期,国内高等教育正处于从精英阶段到大众阶段的过渡时期,随着高校生师比的不断提高,教学资源趋于紧张。受限于教师数量,虽然多数自然班的学生规模在30人左右,但授课教师不得不将若干个自然班合班授课(即大班授课)才能保证正常的教学进度,这种大班授课的教学方式也越来越多地出现在基础课和专业课的教学活动中[3]。大班授课能在学校教学资源相对紧张的情况下,保证学生能够得到公平的学习机会,使教学资源得到最大限度的利用,保证正常的教学进度;但不可否认的是普遍存在师生互动少、学习气氛沉闷等问题[4-5]。随着教学资源紧张局面的逐步缓解,有条件的高校也开始对一些专业课尝试进行小班授课。小班授课在客观上为教育质量的提高提供了有利条件,教师有机会照顾学生的个体差异,有机会了解每名学生的学习状况并进行有效交流,保证所有人参与其中而非置身事外,能够避免偷懒行为。因此,小班授课在国内高校受到越来越多的关注[6-8]。

一、“数据结构与算法”大班授课存在的问题

“数据结构与算法”课程的教学目标是,通过本课程的学习,使学生掌握常见数据结构的概念、类型和实现方法,并能够将其用于表述本领域的相关工程问题;对于具备相似特性的数据结构,能够分析其之间的相互联系和性能差异;通过对复杂工程问题进行分析,能够结合已有知识选择合适的方法进行处理。在实践方面,通过本课程的学习,培养学生建立基于数据结构的编程思维,为后续理论课程以及涉及编程的各种实践课程的学习奠定良好的基础。

在前几年的教学过程中,由于教学资源有限,为保证正常的教学进度,本课程一度采用大班授课的方式,每位教师承担2个班甚至3个班(60~90人左右)的教学工作,教学过程中存在一些比较突出的问题:(1)“数据结构与算法”课程理论性强、一些概念抽象、涉及的算法多。课堂教学过程中,教师授课以PPT展示为主,学生一直被动听课,稍微走神,就会跟不上后面的内容,容易产生听课疲劳;师生互动频率较少,课堂气氛相对沉闷,难以评估学生对重要知识点的理解程度。(2)上机环节教师难以与大部分学生就程序问题进行探讨。由于上机学时有限,学生众多,教师没有时间和精力解决多数学生遇到的程序问题,难以保证教学效果。多数程序问题是学生对编程语言不熟引起的,且对数据结构本身的编程着墨不多,导致上机效果不佳。(3)与先修课程衔接不畅。本课程被安排在第三学期,与先修课程“面向对象程序设计基础”课程(第一学期)中间间隔了一个学期,课程衔接不畅,导致学生对数据结构经常使用的C语言知识(如结构体、指针、数组、函数等)遗忘较多,使得学生在上机过程中将大量时间花在基础语法排错方面,直接影响了数据结构的学习和上机实践。

二、小班授课条件建设

北京信息科技大学信息与通信工程学院3个专业(电子信息工程专业、通信工程专业、物联网工程专业)均开设了“数据结构与算法”课程。在2020年版培养方案修订之前,3个专业独立承担本专业的“数据结构与算法”课程授课,课程大纲、授课学期、授课学分不尽相同。由于自2020级新生开始实施大类招生,新生入校第一年不分专业,因此需要将大一阶段的课程进行统一。借助于2020年版培养方案修订的契机,学院将3个专业的“数据结构与算法”课程统一安排在第二学期,并且还将本门课程的课程大纲和课程学时进行了统一,客观上给“数据结构与算法”课程小班授课创造了几个良好条件。

(一)与先修课程做好衔接

2020年版培养方案修订之前,各专业的数据结构课程的上课学期并不统一。以电子信息工程专业为例,本课程被安排在第三学期,其先修课程“面向对象程序设计”被安排在第一学期,两门课程之间间隔了一个学期。实际教学中发现学生的C语言知识遗忘较多,给本课程的理论学习和上机实践带来了困难。在2020年版培养方案中将“数据结构与算法”课程与C语言类课程进行了良好的衔接,减少了学生编程语言基础知识的遗忘程度。

(二)加强授课教师队伍

实行小班授课最大的困难在于教学资源有限,特别是授课教师数量有限。经过此次培养方案修订,3个专业的数据结构授课教师形成一个教学队伍,避免了某个专业教师承担教学任务量过大的情况。此外,受益于学院师资力量的补充,近年来,“数据结构与算法”课程的授课教师数量不断增加,教师同时面向多个自然班授课的情况不断减少。到目前为止,本课程共有授课教师8名,实现了1名教师负责1个自然班的授课目标,为小班授课奠定了良好的基础。

(三)统一授课范围

3个专业通过协商,将授课范围以课程大纲的形式进行了统一。此外,还统一了授课PPT,教师可以在此基础上各自进行适当修改。此外,总结了本课程中经常用到的先修课程的知识点,通过与C语言授课教师进行沟通,在其讲授过程中加强了对结构体、指针、数组、函数等内容的练习力度,尽可能降低其对数据结构课程学习的影响。

三、小班授课教学方法探索与实践

为保证小班授课教学质量,对小班授课教学方法进行了探索,如图1所示。单一的教学方法无法持久吸引学生的注意力,本课程采用多种教学手段并举,一方面主动吸引学生的注意力,增加师生沟通频率;另一方面通过随堂测试等方法督促学生在课堂上认真学习课程要点,提高学习效率。

(一)动画演示重要知识点

PPT是本门课程主要的授课载体,但单一的PPT展示容易让学生产生疲劳。由于“数据结构与算法”课程知识点多、理论性强,为提高学生听课的注意力,加强师生互动,在小班教学过程中,将先前重要知识点的演示方式从静态图片大量更新为动画演示,如顺序表/单链表的插入/删除/归并等操作、出入栈/队列、二叉树和图的相关操作,以及各种排序/查找操作等。相对于静态图片,使用动画可以使操作过程更加清晰且容易理解。虽然动画演示需要教师花费大量时间进行构思制作,但由于其突出的优点,教师和学生在授课和学习过程中都会感觉比较轻松。

(二)微课资源建设

微课视频的目的是利用专业的多媒体技术,将重要的知识点,特别是那些比较抽象的概念、模型、算法原理等,以视频的形式展示出来,便于学生在短时间内迅速掌握知识点的核心内容。微课视频资源是教师课堂授课的有益补充,学生利用碎片化的时间就可以对重要知识点进行快速学习。微课需要教师去筛选主题、准备素材、设计讲解语言和示例题目,并配合摄制组录制,以便在有限的时间内将复杂问题分解,降低学生的学习难度。教师选取了本课程的重要知识点,结合本专业案例录制了14个微课,供学生参考。

(三)代码程序课堂演示

上机编程是数据结构学习的重要实践环节,也是学生学习的难点。课本中的示例代码通常为类C伪代码,通常无法直接运行,学生编程实现时存在困难;再加上上机实践环节学时有限,在学生对数据结构还没有直观认知的情况下,直接利用数据结构思想解决特定问题存在一定难度。为此,教师除了讲解数据结构的C语言实现外,还要在课堂上演示典型示例程序在软件中的代码编写和调试,使学生尽快熟悉上机内容。这类演示将在前几章的教学中反复进行,帮助学生加深印象,降低上机困难。

(四)随堂测试检验听课效果

布置课后作业的主要目的是检验学生的学习效果,巩固知识并加深理解。但在往年的实际操作中,发现学生提交的课后作业解题过程相似度较高,没有达到布置作业的目的,也反映出部分学生课后复习时间不足。对于这部分学生,应当尽可能提高他们课堂学习的积极性,使他们在课堂上可以基本掌握重要的知识点。为此,教师可以事先准备好若干知识点试题,课堂教学完成之后当堂测试,学生利用手机进行简单操作即可快速答题,答题结果实时反馈给教师,测验成绩纳入平时成绩。通过这种方式,学生课堂听课的主动性明显提高,对关键知识点的掌握也得到加强。

(五)多种形式的师生交流

在小班授课过程中,教师可以采取多种形式与学生进行交流。在知识点讲解过程中,教师与学生保持较高频率的眼神交流,关注学生的反馈,并通过适当提问打破沉寂的课堂气氛;对于重要的知识点,例如Huffman树、最小生成树、哈希表的构建等,在课堂时间允许的情况下,采取让学生到黑板做题并点评的方式加深学生对知识点的理解;对于一些有着密切联系以及容易混淆的知识点,如顺序查找与折半查找的异同、各种排序方法的异同等,可以以小组讨论的形式进行教学,以提高教学效果。

三、教学效果

通过两年的小班教学实践,“数据结构与算法”课程教学取得了一些初步成效:(1)建立了课程PPT动画资源和微课视频资源库。通过与本专业典型案例相结合,在方便学生学习相关知识的同时,为教师授课方式提供了更多选择。(2)在授课过程中,学生听课的专注程度提升,对教师提问有明显的反馈;教师提问学生的次数以及与学生沟通的质量得到提高;上机实践环节也比之前顺利许多,学生有更多时间去咨询与数据结构相关的编程和调试问题,纯语法类的程序咨询次数显著降低。(3)在试卷难度保持基本一致的情况下,学生的考试成绩有了一定程度的提高。小班授课前(平均授课人数72人),学生的试卷平均成绩为72.1分,优秀率为11.0%,卷面不及格率为18.3%;小班授课后(平均授课人数29人),学生的试卷平均成绩提高到76.0分,优秀率为18.6%,不及格率降至10.2%。

结语

针对大班授课存在的诸如师生交流有限、课堂气氛沉闷等问题,对“数据结构与算法”课程实行了小班授课,并就相关教学方法进行了探索尝试。为降低学生编程语言遗忘的程度,将本课程与选修课衔接,强化学生的数据结构编程基础训练;为提高学生课堂听课的主动性,采取了在课堂中进行随堂测验的方法,提高学生的课堂学习积极性;通过眼神交流、提问、黑板答题及案例讨论等方法,提高师生交流的频率;为使学生尽快熟悉上机流程,在课堂上演示了典型示例程序在软件中的代码编写、运行和调试过程。通过以上方法,改善了大班授课中存在的课堂气氛沉闷、师生沟通频次过低的问题,学生的课堂学习主动性得到了加强,卷面考试成绩也有一定程度的提高。

经典小说推荐

杂志订阅