APP下载

基于学习结果的工程教育模式在数据结构课程中的应用与实践

2019-12-20高春晓许晟华

计算机教育 2019年10期
关键词:数据结构知识点算法

高春晓,许晟华

(北京理工大学 计算机学院,北京 100089)

0 引 言

数据结构是计算机专业的基础课程,也是其他专业的必修课程,比如自动化专业和通信类专业,其重要性不言而喻。现在,国家对高校进行“双一流”建设,“双一流”建设首先需要对课程进行变革,于是基于学习结果的教育(outcomebased education,OBE)再度引起国内高校的重视。我们需要结合OBE 的工程教育模式对数据结构课程进行重新设计,使学生加深对课程知识点的理解,真正掌握动手编程解决问题的能力。

1 OBE教育模式

基于学习结果的教育于1981 年由Spady 等人提出[1],Spady 对 OBE 作出如下解释:“对教育系统中的每个环节进行清晰地聚焦和组织,确定一个学习的目标,围绕这一目标使学生在完成学习过程之后能够达到预期的结果。”OBE 已成为美国、英国和加拿大等国家教育改革的主流理念[2]。

OBE 理念强调要让学生主动学习,在学习的过程中有反馈,最终达到一个好的学习效果。OBE 理念下的教学是以学习结果为导向的。那么如何评价学习结果呢?OBE 理念下的评估不再是简单地以分数来作为评估,而是采取多样化的评估方案。

国内研究方面,文献[3]总结OBE 教育模式包含的“两个目标、三个假设和四个原则”,并且指出“如果不是以这四项原则为落实的中心,它就不能被称为真正的以结果为基础”。文献[4]对OBE 教育模式进行充分研究的基础上,对在汕头大学具体实施OBE 教育模式进行实践和探索,为建设有弹性、高水平和可持续的 OBE 工程教育模式提供了有意义的借鉴。

2 数据结构课程特点及现状分析

数据结构是计算机专业的基础课程,同样也是自动化、通信等相关专业的必修课程,数据结构课程的重要性不必多言。传统的数据结构教学模式中的主要驱动力是理论知识的传授,需要学生掌握迭代、递归、分治等算法设计方法,理解线性表、栈和队列、数组和广义表、树和图等典型数据结构,掌握数据结构的设计方法和算法复杂度的设计方法。学生在学习过程中往往难以深入理解相关概念和原理,当然这主要是与数据结构课程本身理论性较强有很大关系。由于学生往往针对课程的评价方式去针对性的学习,更导致了学生往往掌握了很强的应试能力,但实际对知识的理解还差一些。传统的数据结构课程教学主要存在以下几方面的问题。

2.1 先导课程基础不牢

在上大学之前,高中有相应的课程让大家接触计算机知识和编程技巧,由于老师和学生的重视程度不够,学生也并没有掌握得很好。大学一开始会有程序语言课程,目前国内高校大多会选择C 语言进行教授。数据结构的内容是程序设计课程的深入和延续。在刚进入大学时,学生一方面没有意识到程序语言课程的重要性,一方面没有编程语言的底子,对程序语言课程畏难情绪十分大,学习效果不尽人如意。当学生的先导课程没有学好的时候,何谈应用数据结构去解决实际问题呢?当学生没掌握程序的调试方法,又如何写出能解决问题的完整代码呢?

2.2 在教学过程中,过于强调知识讲授

传统的数据结构教学强调知识导向的教学模式,往往造成了学生只是去单纯地学习这个知识本身,而忽略了“为什么要学这个知识点”“这个知识点应该怎么用”“这个知识点和其他知识点的联系是什么”这些问题的思考。结果就是老师一直在“输出”,学生一直在“输入”,中间缺乏交流和思考。具体来说数据结构课程概念抽象,从 C 语言的简单数据类型一下子跃迁到数据结构的抽象数据类型ADT,学生不易接受这种表示方式,学习兴趣难以调动,算法跟着老师能理解,但自己独立做题时选择数据结构和设计算法就无从下手,出现“能听懂,不会写”的现象[5]。从原来的程序语言课程过渡到现在的数据结构课程,代码量也有着极大的飞跃,更是让先导课程没学好的同学望洋兴叹,无法通过上机实践来加深对数据结构的理解。而当数据结构的前面线性结构都没有真正掌握的话,那么后面的图、树就更加难以掌握。

2.3 未养成动手实践能力

传统的数据结构课程教学强调以教师为中心,学生按照教师的要求完成学习任务,整个教学过程按照既定的教学计划、时间、进度开展学习。目前多数高校重理论轻实践体现得非常明显,因为数据结构是理论与实践并重的课程,所以这一重理论轻实践的现象是非常不利于学生学好数据结构的。目前高校的解决办法就是寄希望于学生课下准备好,但是由于大学生的学习意愿不如高中强烈,加上还有各种学生会、社团等活动牵扯大量精力,这种解决办法在多数情况下都是失败的。那当学生准备不足,实践时间又比较紧张,老师又急着要学生完成作业,就会导致一种不好的风气——学会或者应付了事,或者参考同学完成。这样无论是老师的时间还是学生的时间都被浪费掉了。学生通过百度去查找题目,机械地重新敲一遍代码,这样的方式对学生又有什么真正的提高呢?当学生无法高质量地完成实践环节,教师不得不给学生讲解,那实践课又与理论课有什么区别呢?理论和应用完全脱节,课程很难达到预期效果。实践题目不够灵活,也没有针对性。不同的学生,肯定也是掌握程度不一致,那么面对掌握程度不同的学生,要有差异化教学方案。目前数据结构课程的实践课程题目往往沿用多年前的题目,更新周期太长,并不能对学生有针对性的练习。

2.4 评价方式单一

成绩考核的方式决定着学生怎样学习。当考核方式是以期末试卷考试为主,那么就会造成学生在考前突击,死记硬背,通过题海战术大量练习。当考核方式以上机实验为主,那么就会造成学生事先查找上机问题的答案,花大量的时间去撰写实验报告,去做所谓的“面子工作”,实际的动手能力并没有得到真正的练习。试卷考核和上机考核的线性组合貌似科学,但这种评价方式不能真实反映学生应用知识解决实际问题的能力,容易滋生针对考核方式去练习的现象,不利于学生真正提高。

3 OBE教育模式下的数据结构课程建设

3.1 基于OBE 的教学目标

定义学生的学习产出目标是OBE 教育模式的关键[6]。没有清晰的目标,整个课程建设会十分混乱,无法科学有序进行。我们主要围绕专业认证、行业能力需求和学校毕业要求三个方面来确定产出目标。本课程的教学改革把专业认证作为一个重要参考,还与奥克兰大学进行了大量的交流,探讨了要达到OBE 效果需要设立怎样的教学目标。我们通过走访和调查部分专业相关的用人单位和毕业生,了解他们的具体要求。结合北京理工大学毕业要求指标点,最终确定了基于OBE 的教学目标如下。

(1)掌握迭代、递归、分治等算法设计方法,掌握它们与对应数据结构的关系,解决基本非数值计算问题的算法设计问题。对应于北京理工大学的毕业要求指标点:能够运用数学和自然科学知识进行计算机算法的设计与实现。

(2)知悉和理解线性表、栈和队列、数组和广义表、树和图等数据结构的逻辑关系、存储结构和操作特点。掌握数据结构的设计方法,解决典型工程问题的模型表示、数据逻辑结构和存储结构的设计问题。对应于北京理工大学的毕业要求指标点:具备将数学和自然科学基础知识应用于正确表述复杂工程问题的能力。

(3)掌握算法复杂度的定义和分析方法,形成计算思维模式。拥有根据所掌握的数据结构和算法设计方法,针对各种典型的计算机应用问题设计数据结构和算法的能力,形成算法思维模式。对应于北京理工大学的毕业要求指标点:具备数据抽象能力,能够针对特定需求确定数据的结构、关系并设计算法,能够对算法的计算复杂性进行正确分析。

3.2 基于OBE 的教学设计

基于OBE 的教学改革,并不是仅仅只改革数据结构这门课程,改革的是整个体系,而数据结构这门课程是知识体系中的一个节点。在整个体系中,数据结构的先导课程程序设计课程、计算机科学导论等课程要通过改革达到一定的OBE教学,这样数据结构课程才能更好地展开。而数据结构课程又是自然语言处理、计算机视觉等应用类课程的基石。整个计算机教育体系要合理有序,逐层递进,才能使学生教育达到OBE 结果。比如就数据结构的先导课程程序设计课来说,首先经过科学有效的讨论,对标国外名牌大学,选择合适的先导课程,是选择C 语言还是选择Java抑或是Python?在上数据结构课程之前还需要哪些课程?当然,整个计算机教学体系OBE 教学设计是一项十分浩大的工程,我们仅讨论数据结构课程的OBE 设计。总之,我们希望有合理的教学体系,在数据结构课程之前,学生就养成了一定的编程能力和计算机基础知识,这样才有利于学生更好地学习数据结构与算法课程。

数据结构课程的理论部分要以学习效果为导向,不以知识教授为导向。往往大学里的教育都强调“教”,老师按照自己的教学大纲,依照教学计划,将课程的知识按部就班地“介绍”完,就算教完一门课程。这样做的一大弊端就是忽略了“学”,忽略了学生的学习效果。万丈高楼平地起,试想在课程伊始,学生没有学懂,而老师只是一味地“教”,学生愈发听不懂。所以需要对整个教学进行改革设计。在教学内容上,通过结合具体项目案例来讲授知识点,案例的选取要贴近生活,具有一定实际应用价值,而不是讲抽象的数据结构知识。案例的设计需要花费大量的精力,要做到生动有趣,是学生们日常所见、触手可及的,这样学生才能真正地参与进来。在教学方式上,采用学生知识讲授、指导建模、自主学习、小组讨论等多样化的教学手段,充分调动学习积极性,有效实现OBE。

数据结构课程的上机部分要考虑到每位同学对知识的掌握程度不相同,上机题目要有层次性,可以分为多个子问题,难度渐升。在上机的过程中,要注重于学生的交流,给予学生具体的指导。当教师资源不够的时候,可以采用学长帮扶的形式去完成上机实践。

3.3 基于OBE 的教学效果评价

传统的教学评价往往是期末考试与上机成绩的线性组合,这种方式可能导致学生进行针对性的练习,出现“高分低能”的现象。我们需要设计多元化的评价方式来达到OBE 效果。在理论环节,我们需要考查识记能力、理解能力和表达能力。在实践环节,我们需要考查动手能力、人际交往与合作能力和创新意识。在考查的过程中增加学生自评、组内互评和组间互评环节,还可以通过在教学过程中交流来确定学习效果。

4 OBE教育模式下的数据结构课程实践

在具体的数据结构教学中,我们会遇到一个不可避免的问题,那就是如何在有限的时间内达到一个较好的教学效果?

在实践中需要采用学生知识讲授、指导建模、自主学习、小组讨论等多样化的教学手段。

关于学生知识讲授。通常来讲,学生有时也很难判断自己是否真正掌握了一个知识点,可能会出现这样的一种情况:学生想当然地以为自己掌握了这个知识点,但是掌握得深度是不够的。所以我们采用这样一种形式:学生用半个课时来讲授知识点,接着同学自由提问,最后由老师进行总结。讲解的学生通过讲解和答疑,一定会加深这个知识的理解。而提问的同学更是开动脑筋,一是对知识点有了初步的了解,二是带着问题去学接下来老师讲授的知识,学习效果更好。

指导建模指的是老师为了巩固学生所学知识,提出一个实际问题,让学生去编程解决,但考虑到教师资源有限,可以通过学长帮扶、指导建模这样一个形式去帮助学生完成这个任务。因为学长们肯定比学生理解得更加深入,也更熟悉学生在哪些点上会遇到困难,哪些点上容易犯错误。学长们也会比教师更有热情,这也是这种形式的另一个优点。

自主学习指的是课后学生去了解知识点背后的趣味历史。我们希望学生不仅仅只学到这个知识本身,更希望学生学到为什么产生了这个知识点。而获得这种能力的一个有效途径就是去了解发展的历史,而且考虑到我们也不能给学生课后布置太难的任务,不然会打击其学习积极性。然后每次上课在最后让学生分享给大家,一方面增加课程的趣味性,一方面让学生清楚知识点的来龙去脉,还可以锻炼学生的表达能力。

小组讨论指的是在每讲授一个知识点之后,让学生自由讨论自己的疑惑,并尝试着给其他同学解答疑惑。在实际的学习过程中,每个人都有着不同的疑问,指望老师在备课时考虑到所有的情况是不现实的。所以我们让学生自己去提问,找同学去解答,同学解答不出的由老师讲解。这样一方面解放教师在答疑方面所花费的精力,另一方面锻炼了学生思考问题的深度以及如何给别人讲解的能力。

以上的方式,形式上多种多样,但最终的目的都是将数据结构课程的重点从“教”变成“学”。当然形式上不局限于上面的形式,只要是基于OBE 的教学创新都可以去尝试,结果要通过实践来检验。

在教学效果的评价上,我们通过学生互评,组长打分,学长打分收集学生的平时成绩。在这里我们根据平时成绩得分获取平时成绩的排名,然后我们将排名映射到正态分布,这样无论采用什么考核问题、得分形式,对学生来说都是公平的,学生都是在和身边人去比较,也不会存在整体得分偏高和整体偏低的情况。最后我们根据得到的平时成绩,上机成绩和试卷成绩进行加权,最终获得学生的课程成绩。我们可以采用F1 score 评价方式,对这三个成绩加权。

5 结 语

基于OBE 数据结构课程设计,以学生为教学主体,采用知识讲授、指导建模、自主学习、小组讨论等多样化的教学手段,将数据结构课程的教学与专业实践应用相结合,相信会在提高数据结构课程的教学质量和提高学生程序设计的实践能力方面取得了较好的效果。以后我们还要在课外教学过程控制和组织方面进一步探索和实践,以期教学的各个环节都得到有效的控制和评价。

猜你喜欢

数据结构知识点算法
哪种算法简便
一张图知识点
一张图知识点
第四页 知识点 歼轰-7A
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
Travellng thg World Full—time for Rree
进位加法的两种算法
根据问题 确定算法
关于G20 的知识点