APP下载

兼顾考研与就业的数据结构课程教学探索

2019-10-23张兆维

计算机教育 2019年10期
关键词:结点数据结构考研

张兆维,刘 慧

(1.南京邮电大学 物联网学院,江苏 南京 210003;2.金陵科技学院 软件工程学院,江苏 南京 211169)

0 引 言

数据结构作为高校计算机专业的核心课程之一,既是对程序设计、离散数学等先修课程的进一步深入,又为操作系统、数据库原理、编译原理等后续课程奠定基础,在计算机类课程体系中起着承上启下的关键作用[1]。在一定程度上,学生能否学好数据结构对于其能否学好计算机类本科课程有着十分重要的作用,这也对其后续的工作和研究有着深远的影响。数据结构课程具有概念繁多(链表、栈、串、树、图等)、体系复杂(一对一的线性结构,一对多的树形结构和多对多的图形结构)、操作种类多(插入、删除、查找、遍历、平衡、排序等)以及算法(KMP算法、Huffman 算法、Dijkstra 算法等)难理解等特点,在一定程度上加大了学生的学习难度和教师的讲课难度。

针对数据结构在理论和实践方面的教学方法,众多专家和学者对此进行了广泛而深入的反思和讨论[2-4]。从学生角度来说,毕业去向无外乎两种:考研与就业。考研和就业是学生最为关心的话题,也是他们的实际需求。数据结构又恰恰在学生考研和就业两方面具有举足轻重的作用。考研偏重于理论计算,考查学生对基础理论知识的深入分析和总结[5]。就业偏重于工程实践,要求学生具有利用所学知识解决实际工程问题的能力[6]。

为兼顾学生考研和就业的实际需求,应分析当前教学存在的困难,根据各种教学方法的优缺点,探索考研与就业的分类教学模式。

1 面临的教学问题

同一个班级的学生,既有立志考研深造的,又有选择就业工作的。数据结构的教学活动需要围绕学生的这两方面需求来开展,才能激发他们的学习动力,但是在实际教学活动中,同时满足考研学生和就业学生的需求是比较困难的。

针对学生的考研和就业需求,一方面,如果教学活动偏向于理论计算以满足考研学生的话,就业学生就会认为深入的理论分析使学习变得枯燥,兴趣匮乏,从而应付考试。例如,一道考研题:一棵度为4 的树中,若有20 个度为4 的结点,10 个度为3 的结点,1 个度为2 的结点,10个度为1 的结点,则树的叶子结点个数是多少。这道题考查的是树的一个性质:“树的结点数目等于所有结点的度数之和加一”,这是考研试题中经常碰到的计算问题。考研学生通常希望能够在课堂和课后对此类题目多加练习,举一反三,但是这类理论计算在实际工程实践中却并不常见,应用较少。就业学生对此类计算问题缺乏学习动力,积极性不高。另一方面,如果教学活动偏向于工程实践以满足就业学生的话,考研学生就会感觉对考研用处不大,兴趣减弱,无所适从。例如,一个工程实践项目要求:利用树的算法,设计一种关系型数据库系统的索引结构。众所周知,数据库系统中的索引结构通常采用B+/-树,这是因为B+/-树的每个结点可以有更多的孩子,新的值可以直接插到已有结点,而不需要增加树的高度,从而大量减少重新平衡的次数,这就非常适合做大量查询和插入的数据库索引。作为平衡二叉树的变种,B+/-树在工程实践中应用非常广泛,而这却不是考研重点,考研试题通常偏重于二叉树和平衡二叉树的构造和计算。在这种情况下,考研学生会觉得大量课后实践B+/-树是浪费时间,不愿意做此类课后习题。

因此,在数据结构课程中,如何兼顾考研和就业两个方面的学生需求,以激发他们的学习兴趣并学有所用,就成为一个值得教学反思的问题。

2 教学探索

“课堂统一、课后分组、分类考查”的教学方法可以同时兼顾学生考研和就业的实际需求。

2.1 课堂统一,掌握基础理论知识

“师者,传道授业解惑也”,课堂授课是教师开展教学活动的主战场,具有不可替代的关键作用。授课内容面向所有学生,主要涉及数据结构的基本概念、理论和原理。在此过程中,如何运用各种技巧深化知识重点和难点,就显得十分重要。在实际教学过程中,以下几种措施具有良好的授课效果。

(1)案例辅助。数据结构中的很多概念晦涩难懂,仅从文字描述或定义中很难理解其含义,从而加大了学生的学习难度。例如,栈是一种只能在一端进行插入或删除操作的线性表,队列是一种仅允许在一端进行插入操作而在另一端进行删除操作的线性表。对于这段描述,学生往往难以理解和分辨栈和队列的概念。在课堂中,可以将栈类比为一个带开口的容器,插入和删除操作就对应于放入和取出物品,从而容易理解栈的“先进后出”的核心特点。另外,可以将队列类比为学生生活中经常遇到的车站排队买票的问题,排在前面的人先买票,后来的人依次到后面排队,加深理解其“先进先出”的特点。案例辅助使枯燥知识形象化,能够活跃课堂气氛,促进学生对抽象知识的理解。

(2)动画演示。数据结构的一些算法包含很多步骤,各个步骤之间又具有某种联系,使得学生不容易理解数据各个状态的变迁和交互。在这种情况下,以动画演示来展示算法的运行步骤和数据状态变化就显得十分必要。例如,在经典的快速排序算法中,动画演示可以让学生清楚地看到算法每一步的运行过程和结果。每一步运行开始,第一个数据首先突出显示,提醒学生这是一个基准元素,所有的数据依此分为两部分;然后以动画给学生展示一个大于基准元素的数据和一个小于基准元素的数据相互交换。至此,动画提示学生这是一次完整的一趟划分,加深学生的理解。经过多趟划分,快速排序完成。动画演示将算法的各个步骤动态地展示出来,让学生一目了然地看到算法的整个运行过程。

(3)课后反思。数据结构中的很多数据操作种类很多且较为繁琐,学生不易区分和记忆。例如,在平衡二叉树的平衡过程中,教材将调整分为LL、RR、LR 和RL 4 种类型。在讲完这4 种类型之后发现,学生既不容易记忆,又容易记混。通过仔细分析这4 种类型的异同,总结出一套处理流程:插入新结点,判断是否平衡,寻找最下层不平衡点,中间值替换不平衡点,左右子树调整。在这之后,将这一套处理流程再传授给学生,既能减轻学生的记忆压力,又使学生意识到平衡过程的核心思想。“尽信书,不如无书”,课后反思可以总结出更适合学生理解的数据处理方法,加深学生对知识的理解和运用。

2.2 课后分组,夯实考研重点和难点,演练工程实践项目

“师傅领进门,修行在个人”,课后学习是学生的第二课堂,对巩固和掌握课堂所学知识具有十分重要的作用。在此过程中,课后习题的设置就显得十分关键,习题既要能覆盖课堂知识,又要在某一方面有所深入。根据学生自身的考研或就业需求,课后习题分为两组,学生从中任选一组。

(1)第一组习题面向考研学生,以理论计算和分析为主。众所周知,考研试题考查学生的理论深度和分析,而不注重具体的实现过程。为备战考研,本组习题要求考研学生做到以下两点:①找出与本节知识点相关的历届考研真题,分析试题类型(选择题、填空题或计算题),梳理出考研重点和难点,做到心中有数;②对相关知识点的考研模拟题作针对性训练,熟悉解题过程和技巧,夯实考研重点和难点,做到胸有成竹。通过以上两种方式,考研学生能够掌握考研的重点和难点,提早备战,做到有的放矢,事半功倍。另外,为适应研究生的科研环境,本组习题也鼓励学生参加相关的学术讲座,了解当前的科技前沿和进展。对学有余力的学生,鼓励他们参加老师的科研项目,培养创新意识,为以后的研究生学习奠定良好的前期基础。

(2)第二组习题面向就业学生,以工程实践为主。在科研院所和企业的工作中,数据结构更多地是以工具的角色出现,其承担的是项目开发的具体实现任务。本组习题要求就业学生做到:①了解企业需求,调研本节知识点在各种实际项目开发中的应用实例(包括软件开发、算法设计、系统集成等),梳理出知识点的应用场景和范围,能够意识到所学知识的用武之地;②针对某种具体应用实例,能够进行简单的模拟演练,熟悉项目开发的基本流程,增长经验和开阔视野,达到工程实践锻炼的目的。通过以上两种方式,就业学生能够意识到所学知识在工作中的巨大作用,珍惜学习机会,为未来的就业选择添砖加瓦。另外,本组习题鼓励学生参加竞赛(如ACM 国际大学生程序设计竞赛、微软创新杯、挑战杯、中国大学生计算机设计大赛等),激发学生的学习动力和兴趣,达到以赛促学的目的。

2.3 分类考查,评估理论分析深度和解决实际问题能力

“尺有所短,寸有所长”,每个学生根据自己的考研或就业需求而偏重于理论或实践的学习,从而具有不同的优势。在这种情况下,采用同一套试题考查所有学生是不合理的。如果期末试题偏向于理论分析,就业学生的优势无法发挥,这样就会打击他们的学习积极性,反之亦然。在分类考查中,期末试题分为必做题和选做题。必做题的分值占60%~70%,考查学生对数据结构基础理论知识的掌握程度。选做题分为两组,分值占30%~40%,学生可从中任选一组作答。

(1)第一组面向考研学生,以理论计算为主,考查学生的理论分析深度(以考研题变式为主)。通过仔细分析近年的考研试题,从中选取代表性的试题,加以改变作为考试题。这类试题可以让考研学生接受考研试题的考验,对试题的理论深度和分析难度有一个比较清醒的认识。考研学生对此类试题具有浓厚的兴趣,认为对未来考研帮助很大。

(2)第二组面向就业学生,以工程实践为主,考查学生解决实际问题的能力(以项目应用模拟为主)。从企业或科研院所的实际工程项目出发,提炼出某些算法的应用模型作为考试题。这类试题可以使学生提早接触到未来工作的项目,启发学生理论联系实际的意识。就业学生对此类试题得心应手,有利于其毕业后就业方向的选择。

综上所述,“课堂统一、课后分组、分类考查”要求学生掌握数据结构的基础理论知识,根据自身的考研或就业需求分别深入理论分析或加强工程实践,并在期末考试中发挥自身特长,从而提高学生的学习兴趣和效果。

3 教学效果

为分析本文所提方法的实际教学效果,笔者对学生的学习过程、学习兴趣、学习成绩等进行了问卷调查和统计。被调查的对象包括258 名三本独立学院大二学生和196 名二本普通高校的大二学生。

两所学校学生在课后分组中选择考研和就业的比例如图1 所示。

图1 学生选择课后考研组和就业组的比例

从图1 中可以看出,在三本独立学院学生的课后分组中,选择考研和就业的人数分别为145和113 名,对应的比例为56%和44%;在二本普通高校中,选择考研和就业的学生人数分别为167 和29,对应的比例为85%和15%。这说明二本普通高校学生的考研需求强于三本独立学院,而三本独立学院(尤其是技术应用型学校)学生的就业意愿相对较为强烈,但是考研学生比例仍然过半。

图2 比较了学生对传统教学方法和本文教学方法在课堂讲课、课后习题和考查考试3 个方面的教学满意度。作为对比,传统教学方法指的是对所有学生统一讲课、统一布置课后习题和统一考查考试,不区分学生的考研和就业需求。从图2 可以看出:①学生对课堂讲课的教学反馈几乎一致,也就是说学生对基础理论知识的学习在两种方法下是接近的;②对课后分组习题,本文教学方法的教学满意度要高于传统教学方法,这说明学生对于本文教学方法对考研和就业需求的满足度得到了较好的认可;③对考查考试来说,学生对本文教学方法的满意度要超过传统教学方法,期望在期末考试中能够体现考研和就业的需求,做到学以致用。

图2 学生对新教学方法和传统教学方法的教学满意度比较

图3 对比了本文教学方法与传统教学方法的学生学习效果(学习兴趣、不及格率和平均成绩3 个方面)。从图3 可以看出:①与传统教学方法相比,本文教学方法明显地提高了学生的学习兴趣,其原因在于满足了学生考研和就业的不同需求;②本文教学方法显著地降低了学生的不及格率,这说明学生在期末考试中有了选择权,便于发挥自身优势,更能适应必做题和选做题的考试模式;③在学生期末成绩方面,本文教学方法提高了学生的考试平均成绩,这也是学生学习兴趣上升带来的直接效果。因此,本文教学方法兼顾了学生的考研和就业需求,激发了学生的学习动力,提升了学生的学习效果。

图3 新教学方法和传统教学方法的学习效果比较

4 结 语

实践证明,“课堂统一,课后分组,分类考查”的教学方法可有效地激发学生的学习兴趣和动力,降低学生的不及格率,一定程度上提高教学效果。该方法更具针对性,可以根据具体情况,如院校的人才培养目标、学生的知识储备、考研学生与就业学生的比例等,适当地调整考研和就业两方面的习题难度、时间分配、期末必做题与选做题比例等。在实际教学过程中,如何改进并灵活运用该方法仍然需进一步探讨。

猜你喜欢

结点数据结构考研
我的考研故事
LEACH 算法应用于矿井无线通信的路由算法研究
基于八数码问题的搜索算法的研究
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
考研,我是怎么坚持过来的
考研,我是怎么坚持过来的
工作十二年后,我才去考研
数据结构与算法课程设计教学模式的探讨
高效学习数据结构