数据结构Java语言描述课程实验设计(全文)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构Jv语言描述课程实验设计
数据结构是计算机类专业的核心专业基础课之一,主要讨论数据的合理组织和有效存储、处理以及算法的正确设计、分析和评价,课程本身概念抽象、方法灵活、强调逻辑思维能力、难度较大,同时课程实践性强,实验是该课程不可或缺的重要环节[1-4]。

通常数据结构课程实验是由教师将问题描述和基本要求作为实验题目给出,但又绝不是让学生拿到实验题目就直接上机进行编程调试,而是要通过在实验中贯穿软件工程的方法和原理,严格按照分析、设计、实现、测试等软件工程过程并结合具体的实现语言来完成实验,培养学生养成良好的实验习惯。

下文针对课程实验特点和目标,结合软件工程思想、面向对象语言Jv,在课程的实验组织、过程设计、保障等方面进行了一些探究。

1课程实验特点和目标
由于面向对象方法已经成为目前系统开发和程序设计的主流方式,而Jv语言是一种目前使用最为广泛的面向对象程序设计语言,因此不少计算机类专业的数据结构课程采纳了Jv语言描述。

作为是一种完全面向对象的程序设计语言,Jv在提高程序的复用性和安全性时,在不同类的资源配置方面,较面向过程的程序设计语言有更高层面的要求,通过Jv语言表现各种数据结构、实现相关算法是数据结构课程的难点之一,这给语言基础薄弱的学生完成实验带来很大困难,迫切需要在目标、过程、方法等各方面精心组织和设计实验。

如图1所示,作为课程教学的重要组成部分,课程实验的目标主要围绕数据结构与算法、软件分析与设计、程序实现与验证、抽象逻辑思维等方面展开[4-7],即:①以数据结构和算法为核心,帮助学生加深对数据结构的理解;②以软件工程思想为基础,反复练习包括软件分析与设计在内的软件开发过程,培养分析问题、解决问题和程序设计的能力;③以面向对象的Jv程序设计语言为工具,提高学生利用Jv语言实现和验证算法的能力;④在理解掌握数据结构、应用软件工程思想、熟练使用Jv语言的同时,还要培养严密的抽象逻辑思维能力。

上述实验目标师生都提出了更高的要求,为了更好地达到上述目标,并帮助学生在学习过程中充分发挥主观能动作用,围绕课程在数据结构、软件开发、程序实现、逻辑思维各个方面的目标,进行了课程实验的设计,主要包括切实可行的实验任务组织、科学合理的实验过程设计、结合多种方法的严格过程保障等方面,如图2所示。

2实验任务组织
根据课程实验特点和目标,对实验任务进行了精心组织,主要是针对不同基础和层次的学生进行了任务的划分,如图3所示。

2.1基本任务
对于所有的学生,不管其基础或层次如何,都必须完成一定的基本任务,那就是用程序验证各种逻辑结构的基本实现和算法,在实验的总体结构中实现函数的编写、测试、调试、验证,通过
这一验证过程达到加深理解各种数据结构和算法、掌握基本教学内容的目的,这也是传统的数据结构课程实验所要求的任务。

2.2基础强化
部分学生学习基础较差,特别是Jv语言的编程能力不足,对类、接口、封装、多态、方法调用等的认识较模糊,需要在基本的Jv语言以及基本的方法功能理解、方法编写及调用等方面加强实验,通过对基本数据结构和算法与对应程序的反复阅读、编写、测试等训练,达到提高对Jv程序结构、语法以及Jv方法在程序设计中作用的认识。

2.3能力提升
针对基础较好、学习兴趣较浓的学生,为提供其发挥能力的空间,有效提高其学习兴趣,提出一些要求更高、具有一定挑战性的任务,要求能进行分析、设计并实现、测试,包括:完成比教材里典型基本功能更强的拓展功能,开拓学生的思路,如统计线性表中给定值的元素个数;使用已学的逻辑结构和物理结构完成一些扩展任务,提高学生分析问题、解决问题的能力,如统计二叉树的结点个数;灵活应用编写的方法,实现不同的功能要求,培养学生对实验总体结构配置、方法外特性的认识,如利用队列和堆栈实现单链表的逆序排列。

总之,在课程实验组织中,做到有对整体结构加以介绍的说明;有给学生完成实验的思路提示;对有一定难度的任务还给出具有参考价值的实现作为参照。

这样,根据课程实验目标和学生
的基础、兴趣设计客观、可行的实验要求和过程,符合人们认识事物的特点,幸免了因为要求难度太大挫伤学生的学习热情。

3实验过程设计
如果仅仅依靠传统的验证型实验,学生只是将课本中算法的对应程序敲入计算机,运行一下程序、验证一下结论而已,基本上没有涉及到问题思考、分析分析、总体结构设计、程序设计等软件工程所强调的工作,而如果教师没有严格要求、反复强调、严格考核,多数学生都不做预习准备工作,更不用说养成分析、设计、比较和总结的习惯,结果是学生来作实验了,但不了解实验的目标、流程、问题产生的原因,实验效果、课程学习效果大打折扣。

3.1实验过程的规范
首先严格规范实验流程,让学生反复体会从接受任务到分析、设计、编码、测试的软件开发过程。

在最初的两三个实验时,由教师根据实验题目指导学生一步一步完成图4所示内容:①问题描述,即实验要解决问题的描述;②基本要求,即实验要达到的具体要求;③测试数据,即设计能达到测试目的的测试数据;④算法思想,即描述解决相应问题的算法思想;⑤类划分,即分析问题所需的类,并给出类的逻辑功能描述;⑥源程序,即有充分注释的参考实现源程序清单;⑦测试情况,即程序的测试情况以及必要的分析和说明。

由于数据结构实验尚未要求进行较强功能软件的开发,故上述过程中虽然涉及了软件工程思想和软件开发
过程,但一般并不强调过分详细的需求分析、概要设计、详细设计等步骤,也不必要求提供详细的使用手册。

在随后的整个课程实验过程中,对学生严格要求、反复强调必须严格遵守图4的实验过程,并采纳抽查等方式保证其严格执行。

3.2关注点的分离
为了将数据结构与Jv语言、软件工程有效结合,要求在课程的实验过程中也始终与理论教学中一样,按图5所示的三个典型步骤来解决所遇到的数据结构和算法问题:①抽象,即分析问题需求,抽象出一个解决该问题的适当的数学模型(抽象数据类型DT);②接口设计,即对应地设计一个规格说明来描述DT应支持的操作,并将这个规格说明用Jv接口来表示;③实现,即选择合适的数据结构和算法来实现上述Jv接口,最后对各种不同实现的代价进行分析和比较。

这样的步骤清楚地区分了DT的接口与实现,体现了软件工程中分离关注点的重要原则,同时很好地利用了Jv语言在抽象、封装等方面的优势。

4实验保障措施
通过已有的实验过程发现,仅有实验任务组织和实验过程设计是不够的,还必须要有良好的动手习惯培养、基本知识积存以及编程能力提高等作为保障措施,才能较好地达到所提出的课程实验目标。

4.1动手习惯的培养
部分学生没有动手的习惯,实践教学中应注重培养学生的动
手习惯,特别是培养记录、画图、打草稿等基本的动手习惯,幸免学生对知识把握不准、似是而非。

如在讲解、演示或讨论时,让学生跟随教师动手在草稿纸上画图、记录,讲解完马上就刚刚所学内容的部分关键步骤再抽查学生重新讲解,并要求辅以图、表等(当然抽查也可以在下一次课进行),如果存在问题可以由其他同学纠正,最后由教师进一步分析、总结,让学生深刻体会动手习惯对知识学习所起的巩固作用。

4.2简单知识的积存
部分学生不注重积存那些功能简单的小算法,实践教学中教师应注重培养学生对简单知识的理解、记忆、积存,经常抽查,在面对那些较为复杂的数据结构和算法时,充分分析、分解其中涉及到的基本知识点之间、算法之间的联系,提示学生注意类的小型化、原子化,只有长期注重对基本知识点的理解、记忆和积存,才能幸免遇到问题时无从下手,幸免理论与实践脱节。

4.3编程能力的提高
由于前导课程如C语言、Jv等掌握不好、认识不深、基础不牢,不少学生编程能力较弱,缺乏把数据结构和算法转化成代码实现的能力,部分学生甚至不能把一些简单的算法转换成完整的程序,以及缺乏基本的排错能力,都大大影响了这些学生学习这门课的积极性和效果。

为了使实验过程清楚并降低实现的难度、提高可操作性,要求学生一开始所设计的DT不一定功能很完备,只要具有那些典
型的、能初步表现问题需求的基本功能即可,随着上述步骤的一轮操作结束,根据问题的需求,进一步完善现有的DT及其实现。

让学生既在运用中逐步体会了软件工程原理和应用,又对通过不断运用Jv的基本知识,提高了编程能力。

另外,加强现场指导、交流、沟通,及时发现学生的困难,有针对性地帮助学生提高认识、解决问题,以及实验完成后进行分析总结,集中讨论实验中的一些普遍问题,都是提升实验效果的有力措施。

5结语
基于实验在数据结构教学中的重要地位,精心的任务组织、科学的过程设计和严格的保障措施是十分必要的。

一段时间的运行表明,上述做法对于促进学生在学习过程中充分发挥主观能动作用,增强对数据对象特征的理解、数据组织方法的掌握、软件开发过程的熟悉、程序实现技能的培养以及抽象逻辑思维能力的提高等方面都起到了积极的作用。

相关文档
最新文档