数据结构课程“五化”实践教学模式研究

2011-08-15 00:42刘文英
湖南广播电视大学学报 2011年2期
关键词:五化数据结构算法

刘文英

(岳阳广播电视大学,湖南岳阳 414000)

数据结构课程“五化”实践教学模式研究

刘文英*

(岳阳广播电视大学,湖南岳阳 414000)

本文针对数据结构课程实践教学环节存在的问题,总结出了实践教学内容“实例化”、实践教学形式“多样化”、实践教学策略“层次化”、实践教学过程“阶段化”、实践教学考核“公开化”的“五化”实践教学模式。该模式的应用能有效提高学员的编程能力和学习积极性。

数据结构;实践教学模式;实践能力;编程能力

一、实践教学中存在的问题

(一)数据结构是计算机专业公认的难上的课

数据结构课程主要内容包括将现实世界转化为在计算机世界中的抽象的数据描述,数据在计算机中的组织以及不同数据类型的基本操作实现等。课程内容广、概念多、难度大、算法编写复杂,具有很强的逻辑性、抽象性、灵活性和技巧性,因此造成了课程的教学难度大,学员的学习难度也大。学员首先从心理上畏惧数据结构,害怕实践,上机实验时常常不知如何动手。

(二)学员对程序设计语言掌握不好

根据教学计划,数据结构一般是第二学期开设,计算机科学与技术专业的部分学员以前专科并不是学计算机专业的,更没有程序设计基础。在此之前就只学习了一门高级程序设计语言 (如 C语言、C++等)。那些计算机专业专科学习基础的学生也有部分基础较差,缺乏对计算机较深入的理解,而且工学矛盾等原因,学过后也只是掌握这门语言的基本语法规则,对 C语言中的函数调用、指针和结构体等知识点根本就没有学透,还不具备应用程序设计语言编制程序解决实际问题的能力,加之不爱动脑、动手,导致时间花得多,效果不理想。而数据结构实验大量运用如 C语言中比较难的结构体、指针、链表等知识,这样数据结构的实验就更难了。

(三)实验学时和内容安排不当

传统的实践教学安排都是根据理论教学进度采取分散式的方式安排实验内容,完成一次理论教学,就安排一次实验,分次进行,一次 2-3课时,一次完成一个实验任务。加上开放教育学员工学矛盾、家庭原因等,课前没有任何准备,并且有的学员年龄偏大,操作也慢,实验时程序代码都没敲完,就下课了,回去也未继续。所以有的学员一个学期下来做了多次实验,却一个程序也未能调试通过,久而久之,对编程失去兴趣,根本就不会编写程序、调试程序,程序设计的能力也就可想而知了。另外实验内容通常由指导教师安排一些简单的验证式实验,也达不到巩固和促进理论教学的目的。再加上学员编程能力本来就有限,造成实验教学效果极差。

(四)“重理论,轻实践”的问题严重

在实际教学过程中无论是教师还是学员传统的“重理论,轻实践”的指导思想依然严重。数据结构理论教学多数偏重算法思想形成过程的分析,算法的描述用一种程序设计语言或用伪码,重在算法思想的描述。在实验中,有些学员甚至有了现成的算法,也不知道如何将算法改换成计算机能接受的程序。学员一看到伪代码就头痛,学习兴趣急剧下降,畏难情绪油然而生。

因此,数据结构的实践环节往往流于形式,加上实践教学过程中缺乏合适的监督管理和奖惩制度,大多数学员因程序设计基本功不扎实,当任务无法按时完成时就“拷贝”交差,蒙混过关。

二、实践教学模式的探究与实践

数据结构是一门理论性和实践性都很强的课程,培养学员求解问题的实践能力是教学的首要目的。上机实践是学员学好数据结构、培养实践能力最关键的环节。要求学员必须通过反复的实践训练,强化学员“数据结构 -算法 -程序”三者密切相关的意识,理解、习惯、掌握算法构造思维方法,从而获得求解问题的能力。针对数据结构的实践教学环节的要求以及当前存在的问题,并结合多年的教学实践,总结出了数据结构课程实践教学内容“实例化”、实践教学形式“多样化”、实践教学策略“层次化”、实践教学过程“阶段化”、实践教学考核“公开化”的“五化”实践教学模式。

(一)实践教学内容“实例化”

实践内容的设计必须以实例求解为主线索,体现分析、设计能力的培养。针对每个教学单元的重要知识点,选择有代表性、难度适中、综合性的典型算法,合理设计“案例”作为实验项目,以点带面,使学员在面对实际案例中学会分析问题、设计解决问题的方案,让学员编程、上机、调试,在实验中加深掌握某种数据结构的数据组织、加工、处理方法,进一步理解算法的设计,同时锻炼编程和调试程序的能力。实践内容的设计要从“实例”引导入手,将枯燥的概念和公式融入到形象的比喻中,促进学员的理解和记忆。比如要完成“队列操作”实验,就以“排队买车票”着手,有关队列操作的实现思路可以通过排队买票的现象很好的理解。刚来到的人要买票的话,就要排在队列的最后 (入队列操作),买过票离开队列的一定是排在队列最前面的人 (出队列操作),正好印证了队列是一种特殊的“先进先出线性表”。也就是说队列的插入操作只能在队尾进行,队列的删除操作只能在队首进行,有了这样的思路,结合线性表操作的知识编程也就不难了。按照引入实例、然后启发学员分析问题、让学员自己去想如何解决问题的过程来设计实践内容。

(二)实践教学形式“多样化”

根据实践内容涉及到的理论知识点情况采用形式多样的实践教学:

1.验证式实践。以实验指导书为主,精心组织课程教学实验,验证教材理论,达到巩固理论知识的目的。通过单个实验项目,了解掌握基本数据结构的应用,掌握从算法到程序的转换,并学会调试、测试程序能力。如“排队买车票”实验,让学员体会队列基本数据结构的基本运算如入队、出队等操作的合理应用。如线性表、链表、查找、排序等内容实践操作后,根据程序运行后的结果是否正确就能判断程序的正确性。

2.课题式实践。在综合应用数据结构解决工程实际问题时,学员根据自己的兴趣爱好确定一个课题进行课程设计,通过查找相关资料,提出研究课题,写出实施计划,扩展相关算法,限期完成。课程设计是学员结合工程设计而进行的综合应用数据结构的训练,也是检验学员对所学内容的具体应用的能力。培养学员在本课程范围内,初步掌握解决工程实际问题时所应具有的查阅资料,技术标准和规范,以及绘图和调试等能力,为毕业设计及从事专业工作打下基础。可以采用集中式 (在学校)和分散式 (在家)两种形式完成。如针对求图的最小生成树知识内容,就可以设计一个“校园导游咨询”课题来实践。教师集中式讲解如何查找相关资料,介绍编程环境,强调在验证算法过程中需要注意的问题等;学员分散式完成课题任务。然后教师确定时间组织各学员进行答辩,学员对研究课题的目的、背景资料、理论依据、技术方法、计划和目标等进行解答,并回答教师提出的有关问题。

3.考察式实践。组织学员到校外实践基地考察,聘请技术专家现场讲解程序设计中数据结构的具体使用过程,使学员对数据结构的实际应用有一个直观的感性认识。

(三)实践教学策略“层次化”

数据结构本身建立在抽象的数据模型的基础上,理论性和逻辑性比较强,内容相对来说枯燥无味、抽象难懂,知识点也比较多。学员基础参差不齐,工学矛盾突出,学习精力、时间有限。我们必须改革实践教学策略,按基础性、综合性、实用性和拓展性四个层次循序渐进的完成实验任务,不但使学员加深对理论知识的理解,更能培养学员的动手能力、创新能力、分析问题和解决问题的能力。

1.基础性实验。针对某种数据结构的基本运算如插入、删除、查找等算法设计实验项目,其目的是让学员掌握基本概念、基础知识和基本操作,通过实验学会如何从算法转变为程序。如线性表的基础实验可以是编程实现线性表的插入或删除运算。

2.综合性实验。在一个实验项目中整合某种数据结构的一些基本运算算法,提高学员分析问题、解决问题和综合运用知识的能力。如线性结构的综合实验包括线性表的存取、插入、删除、查询、求表长等算法,如何在表头或表尾进行插入或删除操作,对于一个有序表如何完成插入、删除、查询算法,当线性表采用顺序存储或链接存储时的插入、删除、查询等算法。

3.实用性实验。实验项目是解决一些实际有意义的问题,进行实战训练,提升学员的兴趣和自信心,提高实践能力。如在“线性表”基本实验、综合实验训练后,给出“一元多项式计算器”问题,通过这个实验项目的分析、设计、编程实现,让学员体会线性结构如何从现实问题中抽象出来,又如何用来解决现实问题。一元多项式可以用线性表来表示,线性表可以用数组或链表两种方式存储,因而一元多项式的运算可以转化为对其相应的线性表的运算。因此可以用带表头结点的单链表存储多项式,多项式的项数存放在头结点中。用 C语言实现多项式计算器。

4.拓展性实验。给学员自主设计自主选择的空间,引导学员深化问题。如在“一元多项式计算器”问题的基础上,进一步引导学员思考“两个一元多项式的加、减运算”、“两个一元多项式的乘法运算”等问题,“如何存放学员的信息表”、“如何对学员信息表进行如查找、分类等操作”。同时鼓励学员提出新的问题,分析新问题,解决新问题,通过实验解决自己想解决的问题。

(四)实践教学过程“阶段化”

数据结构课程的实验学时数受总学时数的约束,不可能很多,只有利用课内课外相结合的方式。我们根据数据结构实验教学的指导思想和教学原则,考虑到培养计划的要求,对每一次实验课都进行精心地策划,从课前预习阶段、实践体验阶段和成果交流阶段等三个阶段来达到培养学员理论联系实际、提高实践动手能力的目的。

1.课前预习阶段。要求学员课前预习,初步了解实验目的和原理、实验环境的使用、操作方法和实验步骤等。实验前组织讨论,共同探讨实验原理、实验方案以及实验技术难点,包括编程环境、算法验证过程中需注意的问题、算法在相应数据结构中的地位和作用等。通过课前预习,保证了学员在实验前有了足够的理论储备,使学员在实验中思路清晰,能及时发现问题,其分析问题和解决问题的能力也得到增强,也就更易于取得实验的成功。

2.实践体验阶段。在实验教学过程中,我们不再充当“保姆”的角色,而是放开学员的手脚,使他们能发挥出最大的主观能动性。实验开始前,教师充分运用多媒体教学设备,生动、详实地向学员阐述算法的基本原理及该算法应用前景等,激发学员探究算法设计与实现的兴趣。在实验进行过程中,教师融入到学员当中,与他们进行双向的交流,针对学员在实验中出现的错误,采用提示和设疑的方法让他们自己动脑调试程序并纠正程序错误,并要求学员在实验中边操作、边记录、边思考。记录实验操作过程中每一个步骤的调试分析、调试数据设定、程序运行中间结果及其算法的结果描述。实验记录是描述实验过程并为实验后提供相关感性认识的原始资料,也是写好实验报告的前提。同时引导学员积极思考,有效保证实验质量。实验记录中要体现出实验者的思维过程,即实验者是如何理解每一个实验步骤,其目的和原理是什么,关键在哪里,可否有更好的改进方法等等。当得到的实验结果与预期不符时,要求学员深入思考,分析其产生问题的根源,是程序设计不当,还是上机环境的改变等,从而培养学员具有从事科学研究所必须的严肃的科学态度、严谨的工作作风和分析问题、解决问题的能力。

例如,在做循环队列的基本运算上机实验时,学员通过课前预习和教师讲解,得知循环队列用顺序结构存储,并且采用留空闲单元的方法处理边界条件问题。但这种算法在实现时受到初始化空间大小的限制,而且会导致操作预留空间而使队列越界的情况,因而,我们引导学员是否可以从改变队列的存储结构和边界条件处理方法着手解决问题。很多学员通过认真思考,查阅相关资料,提出了很多不同的解决方法,分析了改进循环队列算法的可行性。通过这种启发式、研讨式的教学方法,充分调动了学员的学习积极性,激发了学员的思维。

3.成果交流阶段。作为学员实验成绩评定的主要依据是实验报告,但是实验报告不是大段地摘抄实验指导书上的实验原理和实验步骤,再附上实验数据或结果便完成了。这种机械式的实验报告对于培养学员的能力几乎没有丝毫的帮助,也不利于教师对学员学习情况的掌握,无法公平地评定学员的成绩,往往是文字抄得多,字迹整洁就可得高分。因此实验报告应是对整个实验过程的总结,要求学员能从实验的方法、原理、操作步骤、实验的数据和结果等方面进行分析,掌握其中的基本实验方法,具体应包括三个方面的内容:第一,经课程辅导教师签字的原始实验记录;第二,实验中的异常情况分析、实验方法的重新设计或改进、实验总结等;第三,完成实验指导书上的思考题,完成课外阅读任务。这样做,强调了对实验过程和结果的讨论,有利于培养学员发现问题、分析问题和解决问题的能力。同时使学员不再盲目追求实验结果的准确性,转为追求解决问题的方法和过程,实验过程中关键步骤的原理及操作技术成了大家探讨的中心话题。

(五)实践教学考核“公开化”

当学员完成一个项目后,让学员自己展示成果,推销自己的作品,在提交实验报告的同时,确定专门的时间要求学员对实验过程进行答辩,打破传统的学员做完实验提交实验报告就算完成的做法。依据答辩情况和实验报告进行评分,让实践教学考核“公开化”。这不仅是老师检查学员学习效果的手段,而且可以让学员相互学习,取长补短,并从中充分体会到成功的喜悦。对待学员所展示的成果,应该抱着欣赏的态度,从肯定的角度给予评价。成果展示时,有的学员可能设计得不太理想,但介绍自己的设计时语言非常简练而且幽默,会博得同学们的阵阵掌声;有的学员可能设计得很好,但表达能力欠佳,或者语速太快,同学们没能听清,或者结结巴巴不能成句;有的同学可能设计得比较好,但不敢上台介绍,或者理论上不能自圆其说。不管是什么情况,作为教师都应该引导学员,鼓励学员,让学员慢慢的进入角色,能够完整的介绍自己的作品。这样的成果展示不仅检查了学员对本项目的知识掌握情况,而且还锻炼了学员的编程能力、写作能力、语言组织能力和语言表达能力,同时体现考核结果的公平、公正、公开。

三、实践教学的保障条件

计算机专业的课程实践性比较强,不通过上机实践,是很难达到对知识的理解和掌握的。通过多年的教学实践,发现学员的学习目的很明确,他们希望增强在实际工作中使用计算机解决问题的技能,他们渴望学习的内容能与计算机科学技术发展同步,或者至少能够及时掌握技术领域流行的实用技术。因此对学员进行实践环节学习指导也是必不可少的一项重要任务。一是辅导学员阅读经典算例和综合性程序,要求学员掌握设计思路、关键步骤、程序设计技巧;二是指导学员改写或模仿编写程序;三是引导学员在编写程序时要融入初步的软件工程思想:需求分析、建立模型、整体设计、算法设计、数据结构设计、实现步骤、编程技术、用例测试等。

(一)实践活动内容要与课程教学内容相结合

课程辅导教师要整体规划实验内容,使实践活动的内容与课程教学有机地结合起来,以理论教学内容指导实验教学内容,以实验教学内容巩固和促进理论教学内容的推进,培养和锻炼学员理论与实践相结合的科学态度,提高学员学习兴趣、分析和解决问题能力、程序调试能力、程序编程能力及创新素质。

(二)合理进行“课程实践教学一体化设计”

数据结构课程实践教学一体化设计把课程作业、课程实验、课程设计、课程大作业等内容进行一体化设计,对课程特点、教学资源情况和实践教学活动安排整体思考和说明,对实践教学内容、教学要求、教学进度、教学形式等具体安排。在实践教学过程中要紧密围绕“一体化设计”组织实践活动,扎实做好每一环节,做完每一环节要找出存在的问题和不足及解决办法,不断总结提高。

(三)更新教学理念,建立和谐的师生关系

良好的学习环境不仅能提高学员的学习热情,更能提高教师的教学水平。教师要主动充当引导者、指导者、辅导者的角色,以服务者的心态平等的与学员对话、交流。

(四)以网络平台为载体,丰富网络资源,加大网络活动力度

将学员学习观念从以面授为主转到基于网络的教学平台、小组协作学习为主,以学员为中心。教师利用电大平台上传有关实践教案、实验资料,学员利用电大平台上传作业、提交实验报告和实验程序。网络的强大功能不仅节约了资源,也有利于教师及时批改实验报告,针对报告中出现的问题,学员和教师可以及时互动交流,使得学习中的疑惑得到尽快解决。

(五)加大投入,改善实践教学环境

一是学校加大校内设备设施改善力度,提升学校现代化教学水平。建立高标准的网络室,提供各种计算机软件工具,极大地满足开放教育实践性教学的需要。二是增加实践组织管理力度,提高指导教师水平,为实践性教学工作提供师资保障。三是投入一定的资金,建立稳定的校外实践基地,花重金聘请专家学者来校讲学,通过这些活动极大地调动了学员参与实践教学的积极性。

(六)全程监控,确保实践教学实效

为加强实践性教学环节,我们出台了《开放教育实践教学管理规范》等文件,对实践教学的实施、成绩评定、成绩管理等进行规范。以学校督查监控为主,健全实践性教学的考核机制和评估机制。做到定性考核与定量考核相结合,学员自我评价与教师评价相结合。要求每个学员在每次实践实验活动后写出总结报告或心得体会,既全面总结实践实验心得体会,又客观评价自己在实践实验的得失表现。教师在收集整理这些总结报告时,再将具体意见反馈给学员,增强了实践教学的针对性。

四、实践教学模式应用效果

经过多年的实践,数据结构课程采用的“实例化、多样化、层次化、阶段化、公开化”实践教学模式,在实际教学中取得了较好的效果。实践内容“实例化”增加了学员的感性认识,增强了学员面对问题求解的信心,以便加深对知识的理解;实践教学形式“多样化”为学员实践能力的提高、创新思维的拓展提供空间;实验教学策略“层次化”帮助学员不断加深对数据结构、算法的认识和理解,循序渐进提高编程能力;实践教学过程的“阶段化”体现了从理论 -实践 -总结的过程;实践教学考核“公开化”提升了学员的编程能力、写作能力、语言组织能力和语言表达能力,同时体现考核结果的公平、公正、公开。

四年来,按照这个模式来组织数据结构课程的实践教学活动,运行效果好,学员学习的积极性明显提高,教学效果明显好转。通过对学员问卷调查表明:一是学员自主学习的积极性和主动性得到了提高。有 82%以上的学员能参加并完成实践教学任务。二是培养了学员动手动脑、理论联系实际的能力。有 78%以上的学员认为在完成实践教学任务后,更进一步加深了对理论知识的理解。实践教学中要求学员动手动脑,手脑并用,既应用了已掌握的知识,又促进了思维力、理解力和创造力的发展。所以,我们认为知识与智力上的综合训练是发展智力的重要条件。在实验教学活动中,学员们不仅动手编制了相关的应用程序,而且还掌握了使用相关编程工具的方法,并通过实践和反复总结后,理解了对同一算法可以从多种不同的角度来实现的深刻内涵。最后,当顺利完成实验报告并通过教师验收时,他们感到有一种来之不易的成就感。所有这些,使他们更加坚定了自信心,激发了学习兴趣,锻炼了能力。

[1]黄现代.数据结构课程教学改革与实践[J].计算机教育,2007,(16):38-39,53.

[2]周玉林,赖鑫生.数据结构教改中的问题研究与探讨 [J].上饶师范学院学报,2008,(03).

[3]黄桂敏,周娅.数据结构实践教学模式的探讨[J].桂林电子科技大学学报,2007,(03).

[4]龚红仿,杨宏杰,程思蔚.数据结构实验课教学改革与实践[J].计算机教育,2007,(12).

On the“Five-steps”Practice Teach ingMode i n Data Structure Course

L IU Wen-ying

Aiming at the problems existing in the data structure course,Tthis article explores a“five-step”practice teaching mode,that is on data structures in the practice teaching process request and the current problems and combine years of teaching practice,the instantiation of practice teaching content,the diversification of practice teaching for m,the layering of practice teaching tactics,the phase of practice teaching process and the opennessof practice teaching assessmentfrom data structure course practice teaching Concluded“Wuhua”practice teachingmode,contentof practice teaching“examples”,form of practice teaching“diversity”,strategy of practice teaching“Level”,process of practice teaching“stage”,assessment of practice teaching“open”.The mode of application of effective programming and improve the students the ability to solve practicalproblems and learning.The application of thismodewill improve students’programming capability and learning initiative.

data structure;practice teachingmode;practical ability;programming ability

G728

A

1009-5152(2011)02-0073-05

2011-03-06

湖南广播电视大学课题“现代远程开放教育课程教学模式改革的研究与实践”(XDK2010F-C-15)

刘文英 (1967- ),女,岳阳广播电视大学副教授,高级工程师。

猜你喜欢
五化数据结构算法
基于MapReduce的改进Eclat算法
Travellng thg World Full—time for Rree
进位加法的两种算法
“五化”建设给力纪律审查
着力促进“五化”协同
“五化”凸显作文魅力
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
一种改进的整周模糊度去相关算法
“五化”管理提升企业党建科学化水平
高职高专数据结构教学改革探讨