APP下载

基于BOPPPs模式的《数据结构实验》教学改革实践

2020-06-15柳欣张斌李徐周张波

高教学刊 2020年18期
关键词:数据结构体验式教学

柳欣 张斌 李徐周 张波

摘  要:为了改进传统教学方式的不足,将BOPPPS模式引入《数据结构实验》的教学过程。以“抽象数据类型三元组”为例,提出基于BOPPPS模式的教学设计方案。在参与式学习阶段,为了帮助学生增强信心和激发学习兴趣,将实验内容划分为“由易到难”的三个阶段。通过精心设置“陷阱”,使学生在动手实践过程中深入体会函数参数的“传值”调用与“传地址”调用的差别,达到体验式教学的效果。此外,在教学过程中综合运用“雨课堂”工具、类比教学法和图解教学法等辅助手段,确保了教学目标的顺利达成。

关键词:数据结构;BOPPPS模式;体验式教学;类比教学法;图解教学法

中图分类号:G642       文献标志码:A         文章编号:2096-000X(2020)18-0064-04

Abstract: In order to overcome the shortcomings of traditional teaching methods, the BOPPPS model was introduced into the teaching process of Data structure Experiment. A teaching design scheme based on the BOPPPS mode was provided, which takes "the abstract data type triplet" as an example. In the participatory learning stage, the experimental content was divided into three stages according to the way from easiness to difficulty. This kind of division helps students to enhance their confidence and stimulate their interest in learning. By setting "traps" carefully, students can deeply understand the difference between "value passing" call and "address passing" call of function parameters in practice, so as to achieve the effect of experiential teaching. In addition, the "rain classroom" tool was used in the teaching process, and the methods of analogy teaching and graphic teaching were also used as auxiliary teaching means to ensure the achievement of teaching objectives.

Keywords: data structure; the BOPPPS model; experiential teaching; analogy teaching method; graphic teaching method

《数据结构》是计算机相关专业的专业基础课。在我校最新版的专业人才培养方案中,将该课程拆分为专业核心課《数据结构》和专业实践课《数据结构实验》。将实验内容独立设课的目的是强化学生的算法分析和设计能力,培养良好的程序设计习惯。《数据结构》中的算法往往具有执行过程抽象的特点,而且将教材中类C语言的算法描述转换为C程序的过程本身就具有一定的难度。在传统教学方式下,学生普遍对于实验课有恐惧心理。为此,借鉴国内外高校的先进理念,将BOPPPS教学模式引入到《数据结构实验》课程的教学改革之中。

一、BOPPPS教学模式的内涵

BOPPPS教学模式是由加拿大高校率先引入的新型教学模型。与传统教学模式相比,该模式强调教学效果、课堂效率和教学收益[1]。在BOPPPS教学模式下,将课堂教学过程划分为六个阶段,分别是引入、学习目标、课前测试、参与式学习、课内评估和总结。在导入阶段,教师简要介绍教学内容,达成营造好的课堂氛围和激发学生学习兴趣的目标。在学习目标阶段,教师向学生介绍教学目标。在课前测试阶段,教师采取多种形式测试学生对先导知识的掌握程度,并且根据测试结果适时调整教学内容的难易程度。在参与式学习阶段,教师通过事先设计的课堂活动与学生形成真正的互动,让学生在体验的过程中完成学习任务。在课内评估阶段,教师通过多样化的测试手段来评估教学目标是否达成。在总结阶段,教师对教学的重点、难点进行梳理,归纳有效的思维方法。

二、基于BOPPPS教学模式的教学设计方案

下面,我们以课程的第一个实验《抽象数据类型Triplet的实现》为例,对基于BOPPPS模式的实验教学进行详细设计。将该内容列入课程实验的原因在于,抽象数据类型Triplet(简称Triplet类型)用于创建抽象类型的三元组(简称三元组)。该类型是基于顺序存储结构实现的,它是理解后续教学内容(顺序表、数组、静态查找表等)的重要基础。

(一)引入

在该阶段的教学过程中,主要采用了类比教学法[2]。我们将三元组类比为“写字台上三个相邻且相同的抽屉”。为了对抽屉进行区分,需要给每个抽屉贴标签,而这个标签就是三元组中每个元素的单元下标。Put操作相当于“在指定的抽屉中放置物品”,而Get操作相当于“从指定的抽屉中取出物品”。Triplet类型的常用的操作定义如表1所示。

(二)学习目标

本次课的教学目标如下:

1. 教学条件为具备《专业导学》和《C语言程序设计》课程基础,同时学习完《数据结构》课程绪论部分的理论教学内容。

2. 教学内容包括:Triplet类型的定义及其基本操作在顺序存储结构上的编程实现。

3. 教学要求包括:理解Triplet类型的定义以及基于双重指针技术的函数形参定义方法。掌握Triplet类型及其基本操作在顺序存储结构上的编程实现。

(三)课前测试

在实验之前,我们借助“雨课堂”工具[3]完成对学生的多项测试,且测试题型为选择题(如表2所示)。目的是检测学生对于C语言的掌握程度,以及是否熟悉教材[4,5]中关于类C语言描述的约定。

(四)参与式学习

我们按照“从简到难”的方式将实验划分为三个阶段。前两个阶段的任务相对容易,有利于消除学生对于课程实验的恐惧感和建立自信心。每个阶段的总体目标如下:第一阶段,实现对Triplet类型的实例化。第二阶段,在main()函数中完成Triplet类型三元组的创建并实现相关操作。第三阶段,将Triplet三元组的创建以及相关操作定义为函数,并且借助main()函数完成功能测试。

1. 第一阶段的教学设计

本阶段的教学目标是帮助学生建立起对于Triplet类型的直观理解。我们要求学生在编译环境下输入规定的代码,完成引入函数库以及定义类型别名的子任务。该阶段最核心的代码如下所示:

从课前测试阶段问题1的回答情况来看,多数学生可能会在理解上述语句时遇到困难。我们运用了类比教学法,即将“利用typedef命令为int和ElemType*定义别名”的操作类比为“分别为变量ElemType和Triplet赋值”的操作。通过变量代换得出,Triplet事实上是int *的别名。具体推导过程如下所示:

现在,学生不难得出:Triplet类型可用于声明“能指向int类型三元组首地址的”特殊指针变量。

2. 第二阶段的教学设计

在第二阶段,我们要求学生编写main()函数,解决以下问题:

(1)创建三元组,并依次将每个单元赋值为1,2,3。

(2)实现取T的第i个元素、为T的第i个元素赋值、取T的最大/小值等操作。

该阶段的实验过程相对顺利,学生基本掌握了创建三元组及其操作的实现方法。同时,也初步领会了将类C语言的算法描述转换为C程序的基本方法。

3. 第三阶段的教学设计

在第三阶段,我们强调此前的实验代码存在以下缺陷:

(1)三元组的创建工作不能在main()函数中完成,尚缺少初始化函数InitTriplet()。(2)在创建三元组时,仅仅采用了静态赋初值方式。为了便于修改三元组的内容,需要编写赋值函数Put()。

然后,我们要求学生定义如下的函数:

同时,要求学生在main()函数中增加如下的测试代码:

当编译运行上述代码时,学生会发现程序莫名其妙地终止运行了。事实上,这是我们为了帮助学生理解函数参数的“传值”调用与“传地址”调用而精心设置的“陷阱”。出错原因在于,InitTriplet()函数的形参T采用“传值”调用方式。当该函数结束后,外部指针变量Trip的取值仍然是不确定的。当执行到printf语句时,程序会因此而终止运行。为了便于教学,我们利用图解方式对上述分析过程进行展示(如图1,其中8521888090H表示不确定的内存地址)。至此,学生亲身体会到如果对参数的传值方式使用不当,将引发严重的后果。

接下来,我们向学生提供修正后的InitTriplet()函数代码。事实上,仅需在每个变量T之前增加“*”号即可。本质上讲,修正后的代码将形参T改为“传地址”调用方式。在教学过程中,我们将在功能函数中修改外部变量取值的方法归纳为方法1。只要理解指针的概念,就不難理解该方法。然后,我们将方法1推广为方法2(如表3所示)。在归纳完成后,学生此前对于指针技术的恐惧感顿时消失了。此外,我们采用图解方式对两种方法的运用进行了示范(如图2所示)。

通过逐步引导,我们帮助学生理解了双重指针的用法,而这恰好是整个实验的难点。此后,学生较为顺利地完成了后续的实验任务。

(五)课内评估

我们围绕Triple类型的实例化、函数形参的“传地址”调用这两个核心知识点设计了多道思考题。在实验结束后,我们要求学生完成这些题目,从而实现对学习效果的检验。

(六)总结

在该阶段,我们针对函数参数的“传值”调用和“传地址”调用进行总结,并且要求学生在实验报告上对本次实验的核心设计思想进行总结。此外,我们将数据结构实验的规律总结如下:首先,定义一个新类型。然后,声明并且实现该类型最常用的功能函数。接下来,利用main()函数对编写的功能函数进行功能测试。同时,我们强调“深入理解双重指针技术对于数据结构实验是至关重要的,它是学习好《数据结构》课程必须翻过的那座高山”。

三、结束语

本文以抽象类型Triplet的实现为例,提出基于BOPPPS模式的《数据结构实验》教学设计方案。在方案实施过程中,借鉴体验式教学的思想,精心设置“陷阱”代码,使学生在参与式教学阶段亲身体验到两种函数参数调用方式的显著区别。此外,通过运用类比教学法和图解教学法,实现了降低实验难度、直观展示教师思维和激发学生学习兴趣的效果。上述教学手段的综合运用,有助于培养学生的实践动手能力,进而培养他们在探索算法技术方面的创造性和适应能力。

参考文献:

[1]陈卫卫,鲍爱华,李清,等.基于BOPPPS模型和问题驱动教学法培养计算思维的教学设计[J].工业和信息化教育,2014

(6):8-11,18.

[2]李佳静,徐慧.操作系统课程教学中类比教学法的应用探讨[J].教育现代化,2019,41:143-144.

[3]程海涛,李鹏,徐鹤.基于雨课堂的“微型计算机原理与接口技术”课程教学模式探讨[J].计算机时代,2019,10:93-95.

[4]严蔚敏,吴伟民.数据结构(C语言版)[M].清华大学出版社,1997.

[5]严蔚敏,李冬梅,吴伟民.数据结构(C语言版)(第2版)[M].人民邮电出版社,2015.

猜你喜欢

数据结构体验式教学
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
体验式教学在高校思想政治教育中的应用
分析体验式教学在中职会计课中的应用
体验式教学法在小学品德与生活教学中的应用研究
体验式学习在数学教学中的应用研究
数据结构与算法课程设计教学模式的探讨
高效学习数据结构