“数据结构”课程教学策略初探

时间:2022-09-10 07:47:54

“数据结构”课程教学策略初探

摘 要:“数据结构”课程既是计算机领域的专业基础课,也是承接程序设计与高效算法及后续学习的枢纽课程。文章从“数据结构”课程教学现状出发,运用认知结构理论提出了数据结构课程教学策略。

关键词:数据结构;认知结构;策略

中图分类号:G642.3 文献标识码:A 文章编号:1002-4107(2016)12-0027-02

近年来,高校教学改革关注的重点,除构建基础理论的知识结构体系外,也注重学生的实践能力的培养和创新性的提高。高等院校的计算机相关专业,应以计算机科学与技术学科理论知识为基础,加大实践教学环节的培养,以实现用科学、工程化的方法开发和维护具有较强实用性、高质量的软件为目的,从而培养新型实用性人才,以适应不断变化的就业需求。

“数据结构”课程的教学内容,侧重于典型数据结构及经典算法的讲解与演示,已经有较为成熟的理论知识体系,但存在着抽象难懂,实验时困难重重等问题[1]。解决目前的教学困境,需要在调整教学内容的同时,注重教学方法的改进。

一、明确教学目标

美国教育心理学家布鲁纳在认知结构教学理论中指出,发展学生的智力应该是教与学的主要目的[2]。在这里,教与学都应该有明确的目标。

从教的角度来看,提出教学目标,亦即通过课程学习,学生应掌握的理论知识和应具备的能力、素质。具体来说,就是:建立数据结构概念,树立数据结构设计与算法设计的基本思维模式;掌握采用不同数据结构分析问题和设计程序的方法;结合实际问题,选择高效的数据结构,并能分析相应算法的效率[3]。

从学的角度来看,学生对这门课程的期望值,分为三个层次,由低到高依次为:修完课程,达到基本要求,拿到学分;对计算机相关行业感兴趣,有强烈考级、考研需求,愿意花课余时间和精力去学习;热衷于对计算机理论、相关算法的改进和研究,致力于提高软件开发和运行效率,愿意不眠不休,花费大量时间和精力去钻研。

从历年的数字来看,学生的学习热情,从被动型(Ⅲ型)到积极型(Ⅱ型)再到狂热型(Ⅰ型),所占的比例也有所不同。笔者选取了西北农林科技大学信息计算专业近5年的学生情况进行分析对比,如表1所示。

表1 学生学习情况分型表

从表1中不难看出,近年来Ⅰ型学生的百分比有所下降,尤其是Ⅱ型学生,他们对这门课程的兴趣度下降非常显著,13级的数字显示,将近52%的学生都只是为达到课程要求而学习。这固然和专业需求、课程难易程度,及应用性要求密不可分,但也需要任课教师根据学生学习目标,适当调整教学目标和过程。

影响学生学习的关键因素是动机,它取决于学生的心理倾向和为学习所做的准备。在教学中,需要任课教师积极干预和引导,便于学生明确学习目标和兴趣点,为他们的后续学习做好铺垫。

二、使知识结构适应认知结构

学生学习的认知结构与人类认识客观事物的过程非常类似,为促进教学,应选择适当的知识结构及适合学生学习的方式。本门课程,是一个开放、有序、内容丰富的知识结构体系。它涉及领域广,涵盖知识点多,理论性较强。课程的知识结构主要有基本结构及应用算法两部分。学生的“数据结构”认知结构是学生按照自己的经验与理解,根据感知、记忆和思维的特点,使知识在头脑里组织成具有内部规律的整体结构,既包括学生已有的数据结构知识,又包括了这些知识的内部组织形式。

“数据结构”课程教学,需要尽早在这两种结构之间建立联系。课堂上,教师应首先把学科的知识结构和逻辑组织全面展示给学生,以便于学生的了解和掌握。

为缩小学生与知识结构间的差距,第一堂课引用员工信息表的例子,设计四种不同的应用场景,分别是:全员参加集体活动、按年龄大小进行体检、员工职务关系、员工之间的好友关系。该例中数据元素之间的逻辑关系,对应四种典型逻辑结构:集合、线性结构、树形结构、图状/网状结构。通过该例,学生能直观感受数据的逻辑关系,并重新发现自己原有的知识状况,促进、改造现有的知识结构,并且在此基础上修正和发现新的学习,同时还能增强学习的兴趣和信心。厘清逻辑关系后,再引入物理结构,提出顺序和链式存储结构的概念,使学生明确逻辑结构与物理结构研究的内容和之间的联系即可。在后续章节的讲授中,再进行深入研究和探讨。

三、合理设计教学序列

按照研究问题的过程,设计教学序列。学生的学习过程,不应是单纯地接受,而是积极地进行信息加工。

待学生对研究内容和学习方法有了初识,再引入算法和算法分析的概念。首先介绍算法特性和算法设计的要求。为避免混淆,可以用学生在学习编程语言阶段的编程题目为例,提高学生对概念的熟悉度及认同感,增强学习的信心。对于算法分析的量度,此处涉及渐进时间复杂度和空间复杂度,重点在于算法分析的方法。课堂教学时,采用问答式教学方法,既能启发学生思考,又能活跃课堂气氛,通过不同类型算法的分析,让学生掌握基本的方法。

后续章节内容的学习,分为两个层次,首先是按照线性结构―树形结构―图状结构的次序,从简单基本的结构入手,再逐步细化、深化;其次就是应用算法的层次,这里主要涉及排序、查找的经典结构、算法及分析。通过教学,学生了解并接受研究“数据结构”的流程:根据实际应用问题,分析逻辑关系,选择存储结构,实现算法,分析算法效率,优化。这样不仅能够提高学生的积极性,更能有效引导学生学习知识与掌握学习的方法。

学生学习知识,掌握技能的过程不可能一蹴而就,需要日积月累,循序渐进。在整个教学过程中,教师应考虑学生的认知结构和学习基础,激发学生的认知行为和潜力,积极引导学生充分思维,发散思维,充分体现学科的系统性和学生的主动性,并将其有序结合。

四、强化感性认识与理性认知

大学的“数据结构”课堂,多采用多媒体课件,除利用演示文稿讲解基本理论知识,还加入了动画、声音、视频等多媒体元素,能够动态模拟操作算法的执行。这种辅助教学方式浅显易懂,有利于学生的形象思维,加深学生对抽象问题的感性认识。但存在一个不容忽视的问题,就是学生变“笨”了,他们只重视概念的理解,忽略了算法实现,及代码编写。学生经常会有“课堂听懂很容易,实习编码写不出”的困扰。

对于抽象概念的理解,感性认识的作用不可或缺,但“数据结构”的教学,仍需进一步加强与深化。笔者的做法是在一个完整的知识模块里,挑选一个典型案例,精讲,细讲,透讲。对于刚接触课程的学生来说,能够有完整的范例供他们模仿,是很有必要的。比如在线性结构的线性表部分,可以用约瑟夫环的问题作为示范,该问题难易适中,规模不大,适合课堂讲解和演示。从建立单循环链表开始,综合运用线性表的查找、删除等操作,直到实现约瑟夫环的输出,在分析过程中示范编写代码。这样能保障学生课堂理解算法思想,课下能够模仿教师课堂的示范,还原解决问题的完整过程。模仿的过程,也就是培养和建立良好习惯的过程。这样的精讲范例,不用很多,结合课时分配,针对典型数据结构进行讲解即可。

五、注重实践教学探索

课堂教学之外,编程实践也是“数据结构”教学中至关重要的环节。目前使用的教材中,大多给出类―语言的算法,要求学生在实践环节实现代码的编写。实践时采用的形式是在现有实验平台上,由任课教师提供题目,输入,输出及测试用例,制定相应规则。要求学生独立设计算法,编写代码,完成相应题目的设计与实现。这种方式,让每位学生都动手编写代码,起到了理论阶段性验证的作用,但存在一些问题:部分典型算法的验证,课堂已讲解过,教材也有配套资源,导致学生积极性下降;题目的难易程度不尽相同,缺乏统一评价标准;不符合软件开发的标准流程。

笔者结合教学内容,将敏捷开发模型、综合实验平台引入到“数据结构”课程的实践过程中。

首先,通过“搜集―讨论―筛选―测试”的闭环过程建立实验课题库平台,使得原课程中分散的知识点转化为项目的技术亮点,有机结合,避免知识点过于孤立;丰富实验题库的内容,增设应用题库和考研题库,以激发学生的学习兴趣及研发热情;加大题目的难度,增强学生对难点问题的理解和掌握。

其次,选择敏捷模型,结合项目题库,融入到学生的实验过程中,形成一套行之有效的标准化开发模型。具体来说,有敏捷过程部署、角色设定、持续改进与自动化测试[4],将敏捷开发模型过程融入学生学习和实训的过程。例如,最短路径题目,将综合能力较强的学生设定为客户方负责人(PO),其整体负责需求组建、用户故事分解、各个特性团队的解耦。将动手能力较强的学生设定为敏捷专家(SM),其整体负责各个特性团队,并指导团队内的自组织、闭环学习以及故事的交付。各个特性团队除了设定敏捷专家,还配备质量分析师(QA)、开发人员。这个团队通过站会、看板、结对、会、回归会等一系列敏捷过程持续改进,完成最终的实验题目。

总之,“数据结构”课程是一门理论性较强,需要紧密联系实践的科学。用现代教育理念指导,结合先进的软件开发技术,指导“数据结构”教学及实践,对于提高学生的理论认知、培养学生的创新意识和编程实践能力,具有十分深远的意义。

参考文献:

[1]赵耀红,孙宇.数据结构实验教学的实践与探索[J].长

春大学学报,2012,(4).

[2][美]杰罗姆・布鲁纳;宋文里,黄小鹏译.布鲁纳教育文

化观[M].北京:首都师范大学出版社,2011:92-96.

[3]严蔚敏,吴伟民.数据结构:C语言版[M].北京:清华大

学出版社,2011:1-2.

[4]胡文生,赵明,杨剑锋等.基于UML模型的敏捷开发迭代

顺序的确定[J].计算机科学,2013,(12).

上一篇:物流工程全日制专业学位硕士研究生教育质量保... 下一篇:基于案例的翻转课堂教学模式研究