虚拟实验开发的数据结构课程设计探讨

虚拟实验开发的数据结构课程设计探讨

摘要:在工程教育专业认证背景下,针对原有教学模式下数据结构课程设计过程中存在的问题,提出一种基于面向对象的虚拟实验开发课程设计教学模式。将本课程的核心算法,通过面向对象的开发方式进行过程和结果的GUI展示,有效地培养学生解决复杂工程问题的能力。

关键词:数据结构;虚拟实验;课程设计;面向对象编程;工程教育专业认证

数据结构课程是计算机类专业的一门专业基础课,是后续数据库、操作系统、计算机网络、编译原理等课程的重要基础[1]。该课程是一门理论与实践紧密结合的课程,对学生的实践能力培养发挥重要作用。本课程的教学目标是培养学生对数据的认识和理解能力、逻辑思维能力、算法设计与分析能力、程序设计和实验能力。一般情况下,本课程的教学计划中均安排理论教学、实验教学和课程设计三个教学环节。数据结构课程设计作为本课程理论教学和实验教学完成后的实践环节。在工程教育专业认证背景下,学生在此实践环节,能够通过建立抽象数据模型来解决复杂工程问题,并对复杂工程问题的解决方案持续改进和优化[2]。因此,数据结构课程设计在课程体系乃至专业体系中占有非常重要的地位。

1数据结构课程设计教学现状

本课程的理论内容复杂、抽象,课程内容主要围绕线性结构(线性表、栈、队列、串、数组和列表)、树形结构和图形结构的三大逻辑结构、查找和排序两大应用展开[3]。课程大纲均结合章节内容安排一定数量的上机实验,实验内容大多围绕三大逻辑结构和两大应用来设计,要求学生通过编码的方式来解决一些问题,如约瑟夫问题、进制转换、二叉树的遍历、折半查找、快速排序等。实验多以某种程序设计语言(如C语言、C++等)的编译器为实验环境,以学生调试通过解决问题的程序作为主要评价依据,以实验报告作为课程设计成果。由于程序设计基础能力和逻辑思维能力的差别较大,学生的学习效果存在很大的不确定性。课程理论与实验教学结束后,一般会安排1~2周的课程设计,内容多围绕线性结构和非线性结构(树或图)进行设计,如大数相乘、表达式求值、迷宫求解、哈夫曼树编码和译码、最短路径、线索二叉树、二叉排序树和平衡二叉树的创建与应用等问题。课程设计具有如下特点:一是学生会参考一些资料,将所要解决的问题的程序验证性地调试通过;二是程序的运行结果比较单调,如常规C语言编译器的运行结果(字符模式);三是抄袭现象比较严重,特别是当题目相似时,更是无法避免。严格意义上说,设计过程应包括需求分析、逻辑设计、详细设计、编码和测试。但原有模式下的课程设计,学生往往会直接进行代码编写,达不到课程设计的目的,与工程教育专业认证的要求相差甚远,无法培养学生解决复杂工程问题的能力[4]。

2基于面向对象的虚拟实验开发的数据结构课程设计模式

2.1设计思路

课程设计主要是基于面向对象的虚拟实验开发来解决原有课程设计中出现的一些问题,在提升程序运行效果的同时,严格按照软件工程的要求来完成课题任务,这会极大地提升课程设计环节的训练质量,有效地培养解决复杂工程问题的能力。关于学生的开发能力,根据我校的情况,数据结构课程结束时,学生同步完成了面向对象编程技术课程,已初步具备面向对象的开发能力,通过课程设计,有助于其提升面向对象的开发能力。为了配合课程设计改革,本课程的教学和实验过程中需做好以下几项工作:一是生动地上好开学第一课,让学生了解本课程在专业中的地位、课程内容与学习方法、课程资源与评价体系,展示往届学生的优秀作品,激发学生的学习兴趣与积极性;二是学期中间的实验教学,借助网络资源,加大面向对象程序设计方法的指导力度,为实验结束后的课程设计环节做好铺垫;三是注意教学方法的多样性,在发挥教师主导性的前提下,可利用MOOC资源结合翻转课堂等手段提高学生的参与度,为课程设计环节的团队作战创造条件;四是加大指导期间的观察力度,客观评价每位同学在小组中的贡献,完善课程设计环节的考核方式。

2.2设计选材和要求

课程设计题目取材于课程大纲的重要知识点,在理解相关算法的基础上,通过面向对象的开发方式展现算法的实现过程,同时呈现图形用户界面(GUI)的运行结果。有些问题的初始化过程能够支持人机对话方式的实现,这样能够保证所要解决问题的动态规模,有效提高程序的适应能力。表1是笔者在课程设计教学实施过程中总结的参考选题及设计要求。

2.3设计案例展示

图1~图3展示了哈夫曼树的创建及编码过程示例。操作步骤如下:第一,通过“操作”→“设置”菜单打开“设置”对话框,输入结点数及对应权值,其中叶子对应字符按英文字母索引次序自动分配;第二,权值设置完成后,即可通过单击左边窗口中的“下一步”按钮观看创建过程,此步的逻辑过程需要哈夫曼树创建算法支持,同时通过开发工具支持的绘图功能将结点组成的各个子树绘制于主窗口(动态演示过程如图2所示);第三,最终创建的哈夫曼树及其编码表如图3所示。此案例是在VisualC++6.0开发环境下完成的,基于单文档模式开发。课程设计前,通过录制好的视频对学生的开发能力做短期培训,特别是VC++环境下基于MFC的绘图技术。

3结语

数据结构课程是计算机类专业的核心专业基础课程,在专业中所处的地位毋庸置疑。在实现课程教学大纲基本要求的前提下,通过面向对象的虚拟实验开发的课程设计环节,提升课题完成质量的同时,很好地训练了学生的综合开发能力,有利于培养学生解决复杂工程问题的能力。这种课程设计的改革,从表面上看增加了学生开发的难度,但从实施效果来看,学生的积极性反而得到了很好的调动,学生完成了一些非常好的作品,抄袭现象有所减少,教学效果比原有模式要好。数据结构课程设计对本课程后续课程的教学改革起到了激励作用,课程组教师也就更加坚定了这种模式的改革。

作者:储岳中 程泽凯 秦锋 单位:安徽工业大学计算机科学与技术学院