APP下载

新工科背景下面向赋能教育的数据结构课程改革研究

2022-11-24杨智明夏春梅

创新创业理论研究与实践 2022年17期
关键词:数据结构课程教学

杨智明,夏春梅

(保山学院 大数据学院,云南保山 678000)

随着云计算、人工智能技术的发展,高校培养人才面临新的挑战。2017年,《教育部高等教育司关于开展新工科研究与实践的通知》提出,新工科研究和实践围绕工程教育改革的新理念、新结构、新模式、新质量、新体系开展。自此,新工科在全国各大高校引起广泛讨论与交流,高校在专业设置、课程改革、人才培养等方面进行了改革与探索。围绕赋能教育的目标,赋予学生思维能力、利用专业知识解决实际问题的能力,以及责任担当的能力[1]。笔者优化数据结构课程的教学设计,在教学内容上适当做“减法”,省略了一些纯理论的推导和繁琐的数学证明,增加了学生能力培养等方面的教学内容,把传授知识与能力培养相结合,重视学生解决复杂工程问题的能力培养,收到了很好的效果。

1 优化教学设计

数据结构是计算机专业的核心课程,也是考研的科目,学生特别重视这门课程的学习。针对数据结构课程的特点以及学生学习数据结构课程的认知规律,优化每一节课的教学设计,从而减少讲解知识点的时间,重视学生能力素养的培养。比如在顺序表中插入数据元素,学生不是把数据元素插错位置,就是把原来的数据元素覆盖掉,输出不正确的结果,学生还找不到出错原因,这是学生比较困惑的问题,因此,针对这个问题,进行了教学设计改进。

1.1 从实际问题入手

学生参加过军训,对军训队伍中队员的插入和删除较为熟悉。教学中可以让学生回想军训时的情景,有队员要插入到队伍中来,队伍中的其他队员如何移动。也可以到网络上找这类插入操作的视频或动画,播放时让学生仔细观察,当有队员插入队伍时,其他队员移动的情况。还可以把队伍中的队员想象成一组数据元素,据此制作一个动画,让学生仔细观察数据元素插入过程的变化。

1.2 依据原理设置问题

根据顺序表有限序列的特性,顺序表的中间不能有空的单元,因此,插入数据元素时,必须通过移动数据元素来实现。依据这个原则,事先设置以下几个问题,让学生带着问题看插入动画,并在教师的引导和提示下回答这些问题,把容易弄错的关键点标注出来,再让学生尝试用计算机语言来描述。

第一个问题,为什么要移动数据元素。该问题考查学生理解顺序表有限序列的特性[2]:如果数据元素不移开腾出位置,就把数据元素插入到这个位置上,原来在这个位置上的数据元素就会被覆盖而丢失。而这就是有的学生会把数据元素弄丢的原因。第二个问题,数据元素向什么方向移动,如何表达。学生往往知道数据元素从前向后移动,但是不知道用C 语言如何表达出来,这就需要提示学生,把前面单元上的数据元素赋值到后面单元上,这时学生就能理解数据元素移动的含义,就会用L.elem[j+1]= L.elem[j]语句来表示。第三个问题,从哪个元素开始移动。数据元素只有从最后一个开始移动,前面单元上的数据元素移到后面单元上,才不至于覆盖原来的数据元素,因此开始移动的数据元素初值为j=L.length-1,也就是将顺序表L 中的第L.length-1 个至第i 个数据元素依次后移一个位置,把第i-1 单元空出来,将要插入的新元素e 插入到第i-1 位置上。第四个问题,数据元素移动到哪个元素停止。这个问题是让学生理解第i 个数据元素和第i 个位置之间的差别,第i 个数据元素存储在第i-1 位置上,数据元素移动到第i 个数据元素就停止了,也就是到i-1 位置停止,写代码时注意减1,避免把插入位置弄错。第五个问题,什么时候不能插入。该问题主要考查学生查找边界问题的能力。如果不设置这个问题,学生在写代码的时候容易忽略边界,运行程序会出现错误数据,学生却很难发现出错的原因,因此,授课教师一定要进行指导和提示。有两种情况数据元素不能插入,一是插入位置不合法,i 的合法范围是在1 ≤i ≤L.Length+1 上,不在此范围内就做出错处理;另一种情况是顺序表表满,不能进行插入操作,可做异常处理,也可以动态增加顺序表的存储空间。第六个问题,插入后的顺序表长度如何变化。插入后的顺序表增加了一个数据元素,顺序表长度要加1,学生经常忘记这步操作,输出的数据元素就会因少一个而出错。

1.3 从回答问题中找到解决问题的突破口

根据这些回答的问题,按处理问题的先后次序,就可以归纳出顺序表插入操作的算法思想,然后按照这个操作步骤,就能写出对应的插入操作的算法函数ListInsert_Sq[2]。第一步,判断插入位置i 是否合法,i 的合法范围是在1 ≤i ≤L.Length+1,如果i 不在此范围,只要否定这个条件即可,语句为if (i<1||i>L.length+1) return ERROR。第二步,判断顺序表是否为满,即if(L.length>=L.listsize)条件满足,说明顺序表已满,不能进行插入操作,需要用realloc 函数重新申请(L.listsize+LISTINCREMENT)倍的连续存储空间,并把其存储空间的起始地址进行强制性转换后赋给新的指针变量newbase,需要注意这个地方的强制性转换的地址类型ElemType 一定要与sizeof 后面的ElemType类型一致。另外,为了知道能否申请到存储空间,要加一个溢出标识OVERFLOW 说明,即使没有申请到存储空间,也需要返回一个溢出标识说明,即if(!newbase)return (OVERFLOW),把刚申请到的新基址newbase 赋给L.elem,虽然顺序表的存储空间增大了,但是仍保证顺序表的起始地址是L.elem,便于后续操作。最后,再把L.listsize 和增量LISTINCREMENT 相加后赋值给L.listsize,说明增加了顺序表的存储容量。第三步,将顺序表L 中的最后一个数据元素至第i 个数据元素依次后移一个位置。因为第i 个元素和第i 个位置相差1,所以最后一个数据元素就是L.length-1 位置,第i 个数据元素就是i-1 位置,for 循环语句j 的初值为L.length-1;移动到第i-1 位置停止,因此,j 的判断条件是j>=i-1,注意等号一定不能漏掉,否则数据就少移动一个位置而出错;j 的值从大变小,因此,j--;数据元素移动的方向是从前往后,语句是L.elem[j+1]=L.elem[j],注意一定是j 位置中的数据移到j+1,千万不能弄反顺序。第四步,将要插入的新元素e 插入到i-1位置,其实就是赋值操作。第五步,顺序表长度加1。

通过这样的教学设计和实践教学,学生根据解决问题的思路,很容易就能写出对应的代码。

2 提升教学效果

优化教学设计后,减少了知识传授的时间,增加了培养学生能力的时间,为学生的赋能教育提供了改革的空间。

2.1 培养学生的计算思维能力

选取合适的教学案例,培养学生用新的思维方法去观察和理解问题。比如,让学生带着问题观看插入操作的动画,学生就容易理解内容的难点,并会在潜意识中使用计算机处理问题的方式来分析,从而降低了写代码的难度。比如,学生一旦理解了移动数据元素必须从最后一个开始,重复移动数据元素的for 循环语句,j 的初值很自然就会写成j=L.length-1,或者j=n-1,就不会出现不知道初值究竟是赋什么数据才合适的问题。根据动画回答问题,再对应答案写出相应的代码,就能达到听得懂、写得出、耗时少、出错低的目标。对扩展的内容,比如,“写出在顺序有序表中插入新元素e 后仍然有序的算法”,只要提醒学生在插入算法的基础上增加查找插入位置这一步,多数学生能很快找到解题的突破口。另外,提醒学生查找e 元素时,找到e的插入位置在i+1 上,插入语句写成L.elem[i+1]=e,其他代码与插入算法相同,学生就能把这个算法完整地写出来,这样,学生的思维能力得到锻炼,教学内容也得到扩展。

另外,学生回答完问题后,还要让学生分组分别讨论:(1)归纳插入操作的算法思想;(2)分析数据元素从后往前移动的情况;(3)分析前移和后移的异同点,每组由一个代表分享讨论成果。这样,既锻炼了学生的表达和沟通能力,又提高了学生的思考和辨析能力。

2.2 培养学生解决问题的能力

数据结构课程的重要性在于能用计算机解决实际问题,利用数据结构课程中的知识编写程序解决生活中的实践问题。从生活中发现的问题入手,采用学用结合的方法,按分析问题→建立模型→框架设计→编码实现→项目测试完成等过程进行教学设计[3],并通过这门课程的教学和相应的训练,使学生养成解决问题的思维能力[1]。

学习数据结构构图知识后,有学生开发完成一个校园导航系统,解决了新生初入校园迷路的情况。也有学生通过编程设计帮助外卖小哥解决了最短路线配送选择和缩短外卖配送时间等问题。

学习模糊算法后,有学生设计和开发一个在线考试和主观题评阅系统,有效降低了相邻学生考试作弊的可能性,还解决了教师出卷和阅卷工作量大的问题。

这种学用结合的学习过程,既是学生探索知识和锻炼技能的过程,也是进行复杂程序设计训练的过程,既培养了学生解决复杂工程问题的能力[4-5],又提升了学生的专业能力和竞争力。

2.3 培养学生对前沿技术的敏感度

在教学中适当引入前沿技术运用的原理,比如,共享单车的扫码骑乘、机器人护理、红外热成像人体测温筛查预警系统等的原理,可让学生了解“物联网获取数据,云计算承载数据,大数据技术对数据进行挖掘和分析,把数据变成信息,人工智能对数据进行学习和理解,把数据变成知识和智慧”[6]这一过程,这样既可激发学生的学习兴趣,又能增强他们对新技术的敏感度。

2.4 在知识传授中实现价值塑造

根据每次课的教学内容,用1~2min 时间给学生讲一个小故事,使学生树立正确的人生观和价值观。

讲队列内容时,教授学生做人做事要懂规矩、守秩序的道理。

讲单链表的插入操作时,鼓励学生要积极上进并持之以恒。

讲树型结构时,讲解家谱文化,鼓励学生学习并传承中华优秀传统文化[7],让学生学会感恩和团队合作。

这样,通过每节课的知识传授,既把社会主义核心价值观穿插在教学中,也把心态课、平衡课和协作课融入知识讲授中,使学生知敬畏、守底线、懂感恩。

3 结语

本课程改革突破了传统教育的思维定式,通过改进教学设计和实践教学,学生的思维能力、分析解决问题的能力均有所提高,教学效果有效性得到提升,取得了良好的人才培养效果。

猜你喜欢

数据结构课程教学
课程思政在专业基础课程中的实施
《管理学原理》课程中开展“课程思政”教学改革
数据结构线上线下混合教学模式探讨
课程思政在组织行为学课程教学中的探索与实践
重典型应用,明结构关系
“自我诊断表”在高中数学教学中的应用
A—Level统计课程和AP统计课程的比较
在遗憾的教学中前行
计算教学要做到“五个重视”
教育教学