“数据结构”课程的实验创新探讨

时间:2022-07-06 10:19:45

“数据结构”课程的实验创新探讨

文章编号:1672-5913(2009)08-0124-02

摘要:“数据结构”课程是计算机学科的专业基础课,是一门实践性比较强的课程。课程中的实验环节显得尤为重要,该环节可以锻炼和提高学生对复杂程序的设计能力。笔者在多年的教学过程中摸索出实验环节的教学模式,与大家共同探讨。

关键词:数据结构;教学内容;组织形式;考核方式

中图分类号:G642

文献标识码:B

利用计算机来解决实际问题的步骤是:给出问题描述,将问题抽象成数学模型,根据数学模型写出求解问题的算法,再根据算法写出程序代码,最后上机调试并分析结果。在上述过程中,非数值的数学模型是数据结构研究的主体,它操作实现主要是通过数据结构的实验教学环节来完成的,在该教学环节中作为教学主体的学生,首先要具备抽象思维能力和语言基础。往往在环节实施过程中,语言基础是薄弱环节,以至于课时用完了,学生还是写不出满意的算法及代码。鉴于此,我们在教学内容、组织形式、考核方式等教学环节中进行了一些设计,与大家一起来探讨。

1教学内容

我们在教学内容上,围绕课内、课外两条主线进行改革,给学生较大的自主学习空间,有利于学生创新精神及实践能力培养。整个实验教学由浅入深,重在基础、提高能力、挖掘潜力、拓展思路。在课时内的教学主要以基础性实验为主,安排一个综合性实验;课时外的教学主要以设计性实验和综合性实验为主。

1.1学时内的教学内容

在我校数据结构课程共64学时,理论课48学时,实验课16学时。安排了5个实验项目,由于多数学生语言基础不算太好,特别是指针的运用和结构体的定义是薄弱环节,所以在做实验项目时,主要是从教材上的算法出发,使得学生有章可循:

项目1:顺序表的操作

主要训练学生对顺序存储结构的理解,掌握顺序表的查找、插入和删除等基本操作;同时引导学生对于静态参数传递和动态参数传递的使用方法。

项目2:单链表的操作

主要是与顺序存储结构进行比较,完成线性表在链式存储结构上的查找、求长度、插入、删除等基本操作。

项目3:栈和队列的应用―停车场的管理

深入了解栈和队列的特征,以便在实际问题背景下灵活运用;利用两个栈和一个队列模拟停车场管理及相关操作。

项目4:二叉树的遍历

掌握二叉树的结构特征,以及二叉链表存储结构的特点;掌握二叉树三种(先序、中序和后序)遍历方法;熟悉并且掌握递归算法。

项目5:折半查找和快速排序

掌握折半查找和快速排序的方法,掌握要进行折半查找应该采取的存储结构形式。并进行对其进行时间复杂度的分析。

对于每个实验项目的实验目的和实验要求,提前2周放在教学平台上。在实验前1周,利用辅导课时间,以测试的形式,让学生写出算法代码,由于每个实验基本上可以在教材中找到源代码痕迹,所以难度不大。

在实验教学过程中,采用任务驱动式的教学模式,首先从总体思路上讲解10分钟左右,边辅导边发现问题,每半个小时总结1次。由于学生已经在课前作好了准备,在实验室里他们赢得了更多的自主时间用来调试程序,分析结果。学生水平参差不齐,在上课过程中穿插实验验收考核,考核的形式是现场写出主要操作的代码,在规定的时间内进行调试、分析。验收完一个模块,学生再进行下一个任务。教师通过讲课、辅导、验收使得实验课堂充实起来,由于学生每个时间段都有活干,所以课堂气氛非常活跃,讨论热烈。

1.2学时外的教学内容

在学时外,以课程设计的形式,利用开放实验室时间,严格按照软件工程的思想进行训练。

在课程设计时,教师列出多个设计课题,每个课题都有相应的要求或说明。各课题的难易度是有差异的,每个课题后以标准分的形式标出了难易度。例如:

课题1:设有n个人围坐在圆桌周围,现从某个位置m(1≤m≤n)上的人开始报数,报数到k的人就站出来。下一个人,即原来的第k+1个位置上的人,又从1开始报数,再报数到k的人站出来。依此重复下去,直到全部的人都站出来为止。试设计一个程序求出出列序列(难易度90)。

课题2:用递归算法和非递归算法实现下面问题,并比较其算法优势。把一只老鼠放进一个无盖的大箱内, 箱内设置若干隔板,使老鼠走动的方向受到阻碍,看其如何找到一条通道,走出大箱(难易度80)。

“难易度90”表示设计中的各项全部达到要求时的最高得分大致为90。因此,参加课程设计的学生首先要了解设计的任务,仔细阅读各题的设计要求,然后根据自己的基础和能力情况从中选择一题。一般来说,选择课题应以在规定的时间内能完成,并能得到应有的锻炼为基本原则。课程设计的总体思路是:数据模型选取构造求解算法选择存储结构编写程序代码调试测试总结分析。

在做课程设计时,不再拘泥于语言环境的限制和存储结构的限制,主要锻炼学生的开放思维能力和综合知识的应用能力。同时,引导学生从结构化程序设计到面向对象程序设计的思考。例如学生正在学习C#,在做课题1时,除了传统的设计方法外,可以引导学生画出类图和顺序图,写出C#的代码。

设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。主要包括:需求分析、概要设计、详细设计、调试分析、用户使用说明、测试结果、参考文献等。课时外的训练主要是为毕业设计打下基础,同时也培养了学生的团队协作精神。

2组织形式

2.1学生的组织

对于学生进行分组,每组中按照好、中、差的学生进行搭配。由于学生水平参差不齐,早做完的学生,进行考核验收。验收合格,同时给出相关思考题,可以再对于思考题进行进一步的思考,锻炼创新精神。同时,让已完成任务的学生辅导未完成任务的学生,这样培养了学生的团队协作精神,课堂气氛非常活跃,激发了学生学习的主动性。对于教师的工作也减轻了一些,教师主要是总体部署,分步考核,可以有充足的时间进行验收,比较清楚地掌握总体情况,以便讲评。这样组织学生,可以解决“优等生吃不饱,差等生吃不了”的局面,实现了“因才施教”。

2.2内容的组织

对于每一个实验项目的实验目的、相关要求等,以实验指导书的形式与学生见面,一本好的实验指导书能给学生的上机实验带来事半功倍的效果。

首先,让学生明确实验目的和要求。每个实验项目都给出了实验目的,并且提出了具体要求。有了实验目的,学生才有方向性;有了具体要求,学生实验时才有章可循。对于要求,要按时间分块执行。比如单链表的操作为2学时,第一个学时完成建立、查找、部分主函数工作;第二学时在第一学时基础上完成插入、删除操作,完善主函数。每一个学时在最后进行验收,若有问题通过小组完成。

其次,让学生掌握实验步骤。每一个实验项目按照软件工程的思想去组织,先需求分析,抽象出数据结构模型,再明确数据类型,详细设计,最后给出类C语言的算法描述。要求学生要严格遵循实验步骤来思考问题,这样,可以培养学生良好的工作作风和解决问题的方法,并且为后续课程做准备。

3考核方式

市场经济体制下的学生不如计划经济体制下的学生好教育,特别目前高校扩招,入学的学生素质参差不齐,基础相对薄弱,自学能力不强,不少学生在学习上存在畏难心理。而对于高等教育也不能降低要求,这样就要求在教学模式上进行革新,我校对教和学提出两个转变,“变学生管理为学习管理,变管理学生为服务学生”。对于课程教学,不能再采取应试教育下的考核形式。鉴于此,在数据结构的教学过程中,特别是实验教学,探索出了新的考核形式。

分数对学生来说是非常重要的,以此作为课程管理的抓手。对于教学计划内的实验项目成绩分成两个部分,一个是个人成绩,一个是小组成绩。个人成绩主要考核学生个人能力,小组成绩主要是考核学生的团队协作精神。对于个人成绩考核形式有两个方面,一个方面是学生的程序代码调试技能的测试,一个方面是书写实验报告,从实验报告上可以考查学生的逻辑组织能力。笔者把该考核模式称为“实验2+2”模式。每个实验项目结束前进行验收考核,经常进行阶段性考核,主要是激发学生的学习兴趣,保证了课堂教学纪律,基本没有缺勤的学生,让学生找不出来不学习的理由,因为每处都与成绩挂钩,都在拼命的去“挣分”。

对于课程设计部分,实验室开放时间结束时,由学生提交课程设计源代码和设计总结报告。源代码提交时,要生成可执行文件,对文件进行压缩,压缩文件名为“学号+姓名”形式,发送到指定邮箱地址。课程设计成绩根据学生设计任务完成情况、设计报告、设计成果的质量以及答辩情况综合评定。完成情况主要包括:功能实现情况和程序设计情况;设计报告包括课程设计报告格式,课程设计思路及设计过程,以及对设计的自我评价,收获和体会等;答辩要求思路清晰,模块关系清楚,回答问题敏捷。

对于学生的学业成绩采用结构化成绩,把100分不再作为一个整体看待,把它融进教学的全过程中去。学生的学业成绩由平时成绩、副卷成绩和主卷成绩构成,平时成绩占20%,副卷成绩占20%,主卷成绩占60%。在平时成绩中课程设计10分,作业和平时课堂表现5分,小考5分;副卷成绩中个人成绩15分(其中程序调试10分,实验报告5分),小组成绩5分。

4结论

通过实施验证,效果是良好的。实验的创新也带动了整个课程的进步,特别是上课出勤率,基本上是全勤。课堂气氛活跃,问题讨论热烈,学生的学习主动性大大提高了,网络教学平台登录次数明显增多。在问题答疑和考核验收方面,虽然增加了教师的教学工作量,但是提高了教师的工作热情。真正实现了“教”和“学”的良好互动,提高了教学质量。

参考文献:

[1] 周苏. “数据结构与算法”的教学改革和实验创新[J].计算机教育,2007,(15).

[2] 严蔚敏, 吴伟民. 数据结构[M]. 北京:清华大学出版社,1997.

[3] 严蔚敏, 吴伟民. 数据结构题集[M]. 北京:清华大学出版社,1999.

上一篇:“C程序设计”课程教学内容的模块化设计 下一篇:虚拟机:系统与进程的通用平台