数据结构Java语言描述课程实验设计

时间:2022-05-30 10:10:47

数据结构Java语言描述课程实验设计

摘要:实验是数据结构Java语言描述课程的重要环节。本文在分析并确定课程实验教学的主要目标基础上,重点讨论在课程实验中结合软件工程思想、面向对象语言Java的任务组织、过程设计以及保障措施,取得良好效果。

关键词:数据结构课程;实验;设计;Java;软件工程

数据结构是计算机类专业的核心专业基础课之一,主要讨论数据的合理组织和有效存储、处理以及算法的正确设计、分析和评价,课程本身概念抽象、方法灵活、强调逻辑思维能力、难度较大,同时课程实践性强,实验是该课程不可或缺的重要环节[1-4]。通常数据结构课程实验是由教师将问题描述和基本要求作为实验题目给出,但又绝不是让学生拿到实验题目就直接上机进行编程调试,而是要通过在实验中贯穿软件工程的方法和原理,严格按照分析、设计、实现、测试等软件工程过程并结合具体的实现语言来完成实验,培养学生养成良好的实验习惯。下文针对课程实验特点和目标,结合软件工程思想、面向对象语言Java,在课程的实验组织、过程设计、保障等方面进行了一些探索。

1课程实验特点和目标

由于面向对象方法已经成为目前系统开发和程序设计的主流方式,而Java语言是一种目前使用最为广泛的面向对象程序设计语言,因此不少计算机类专业的数据结构课程采用了Java语言描述。作为是一种完全面向对象的程序设计语言,Java在提高程序的复用性和安全性时,在不同类的资源配置方面,较面向过程的程序设计语言有更高层面的要求[3],通过Java语言表现各种数据结构、实现相关算法是数据结构课程的难点之一,这给语言基础薄弱的学生完成实验带来很大困难,迫切需要在目标、过程、方法等各方面精心组织和设计实验。

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

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

2实验任务组织

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

2.1基本任务

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

2.2基础强化

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

2.3能力提升

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

总之,在课程实验组织中,做到有对整体结构加以介绍的说明;有给学生完成实验的思路提示;对有一定难度的任务还给出具有参考价值的实现作为参照。这样,根据课程实验目标和学生的基础、兴趣设计客观、可行的实验要求和过程,符合人们认识事物的特点,避免了因为要求难度太大挫伤学生的学习热情。

3实验过程设计

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

3.1实验过程的规范

首先严格规范实验流程,让学生反复体会从接受任务到分析、设计、编码、测试的软件开发过程[5]。在最初的两三个实验时,由教师根据实验题目指导学生一步一步完成图4所示内容:①问题描述,即实验要解决问题的描述;②基本要求,即实验要达到的具体要求;③测试数据,即设计能达到测试目的的测试数据;④算法思想,即描述解决相应问题的算法思想;⑤类划分,即分析问题所需的类,并给出类的逻辑功能描述;⑥源程序,即有充分注释的参考实现源程序清单;⑦测试情况,即程序的测试情况以及必要的分析和说明。由于数据结构实验尚未要求进行较强功能软件的开发,故上述过程中虽然涉及了软件工程思想和软件开发过程,但一般并不强调过分详细的需求分析、概要设计、详细设计等步骤,也不必要求提供详细的使用手册。在随后的整个课程实验过程中,对学生严格要求、反复强调必须严格遵守图4的实验过程,并采用抽查等方式保证其严格执行。

3.2关注点的分离

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

4实验保障措施

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

4.1动手习惯的培养

部分学生没有动手的习惯,实践教学中应注重培养学生的动手习惯,特别是培养记录、画图、打草稿等基本的动手习惯,避免学生对知识把握不准、似是而非。如在讲解、演示或讨论时,让学生跟随教师动手在草稿纸上画图、记录,讲解完立即就刚刚所学内容的部分关键步骤再抽查学生重新讲解,并要求辅以图、表等(当然抽查也可以在下一次课进行),如果存在问题可以由其他同学纠正,最后由教师进一步分析、总结,让学生深刻体会动手习惯对知识学习所起的巩固作用。

4.2简单知识的积累

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

4.3编程能力的提高

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

为了使实验过程清晰并降低实现的难度、提高可操作性,要求学生一开始所设计的ADT不一定功能很完备,只要具有那些典型的、能初步表现问题需求的基本功能即可,随着上述步骤的一作结束,根据问题的需求,进一步完善现有的ADT及其实现。让学生既在运用中逐步体会了软件工程原理和应用,又对通过不断运用Java的基本知识,提高了编程能力。

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

5结语

基于实验在数据结构教学中的重要地位,精心的任务组织、科学的过程设计和严格的保障措施是十分必要的。一段时间的运行表明,上述做法对于促进学生在学习过程中充分发挥主观能动作用,增强对数据对象特征的理解、数据组织方法的掌握、软件开发过程的熟悉、程序实现技能的培养以及抽象逻辑思维能力的提高等方面都起到了积极的作用。

参考文献:

[1] 杨红宾. 数据结构课程改革探讨[J]. 教育与职业,2009(32):131-132.

[2] 沈根海. 高职院校数据结构实验教学的探索[J]. 电脑知识与技术,2008(33):1427-1428.

[3] 张济础,杨亚莉. 高职院校“数据结构Java语言描述”课程的实验设计[J]. 计算机教育,2010(1):64-65.

[4] 杨晓波. 浅析数据结构课程教学中的实验环节[J]. 甘肃高师学报,2003(5):49-50.

[5] 朱战立. 数据结构Java语言描述[M]. 北京:清华大学出版社,2005:295-299.

[6] 周大庆. 实用数据结构教程Java语言描述[M]. 北京:人民邮电出版社,2007:1-2.

[7] WEISS M A. Data structure and problem solving using Java[M]. London:Pearson Education,2006:1-5.

Experimental Design of Data Structure Course Using Java

LI Gang, HUANG Tongyuan, ZHANG Xiaochuan

(School of Computer, Chongqing University of Technology, Chongqing 400050, China)

Abstract: This paper analyses the experimental teaching objectives of Data Structure course using Java, and it focuses on the discussion of tasks organization, processes design and guarantee measure integrated with Software Engineering and object-oriented language Java in experiments.

Key words: Data Structure; experiment; design; Java; Software Engineering

上一篇:研究生编译课程教学探讨 下一篇:程序设计语言教学过程中的学生思维能力培养