数据结构课程实践教学改进探讨

2016-07-13 07:03张小刚塔里木大学信息工程学院新疆阿拉尔843300
湖南科技学院学报 2016年4期
关键词:数据结构实践教学

张小刚(塔里木大学信息工程学院,新疆阿拉尔843300)



数据结构课程实践教学改进探讨

张小刚
(塔里木大学信息工程学院,新疆阿拉尔843300)

摘 要:“数据结构”课程是计算机专业重要课程之一,也是理论抽象程度较高的课程,巩固理论知识的实践教学对数据结构的掌握和灵活运用至关重要。论文通过分析研究,针对我校数据结构教学中存在的重理论、轻实践,重验证、轻设计的弊端,提出从实验设置内容和实验过程保证两个方面来改进实践教学,并结合多年的教学实践,具体从实验内容、实施方式、考核方法、实验流程等方面展开研究和探讨。

关键词:数据结构;实践教学;实践教学改进

引 言

实践教学能使学生巩固理论知识,加深理解,是对知识掌握从抽象到具体的必经阶段,是提高学生实践能力、创新能力与创新意识的基础,对提高学生综合素质,培养创新精神和实践能力有着理论教学不可替代的特殊作用[1]。“数据结构”是计算机专业一门重要的专业技术基础课程,介于数学、计算机硬件和软件三者之间,涉及数据的逻辑结构、存储结构和操作实现、查找和排序技术,是非数值计算程序设计和编译程序、操作系统、数据系统及其他系统程序和大型应用程序的应用基础[2]。同时也是工科、理科、医科等学科中许多专业的必修或选修专业基础课[3]。

一 实践教学中存在的不足

2015年9月我被国家留学基金委派往渥太华大学工程学院进行高等教育教学法研修,历时3个月。研修过程中,我对渥大电子工程与计算机学院数据结构课程进行了随堂听课,发现国内我校学生综合运用数据结构及相关算法知识解决实际问题的能力明显不足。通过比较、分析,我发现造成这种现象的一个重要原因是我校数据结构课程教学中以利用伪代码描述数据结构为主,以编程实践为辅,重理论、轻实践,实践教学不能支撑起理论教学。在有限的实践教学中,学生只对理论课上老师讲授的知识进行验证,自己动手设计数据结构和算法的实验很少,重验证、轻设计。

这种教学模式造成的后果是:第一,对理论学习内容不能充分理解。学生实验的时候只是按照老师的思路被动的完成,没有经过自己的充分思考,不需要自己去考虑各种可能的解决方案并找寻解决问题的方法,对学习内容不能充分理解,只能知其然不知其所以然。第二,解决实际问题的能力较差。各个章节实验内容各不相关,互相脱节,这就造成思考问题片面,对实际问题认识不全面、不深刻,无法与实际应用相关联。第三,不能进一步提高学生综合运用数据结构知识的编程能力。由于我校数据结构课程一般开设在大学二年级,这时学生编写程序的时间还比较短,编写程序的能力还比较弱,验证型实验很多都有源程序,不能引起学生认真思考,不能运用数据结构知识与加强前导程序设计语言的进一步融合。例如C语言程序设计中指针及动态内存分配与释放的原理与方法不能与数据结构中线性结构进行融合,综合运用。

二 实践教学改进思路

“数据结构”及相关算法理论抽象程度较高,必须要配合相应的实践课程才能够理解透彻和灵活运用。在教学中我们发现学生对数据结构掌握的困难不是在概念和算法的原理、流程,而在于将具体的数据结构及相关算法的具体实现上。实践教学体系中实验内容和实验流程是实践教学体系科学、合理设置的关键,因此我们从这两个主要方面入手进行实践教学设计。首先,我们从合理设置实验内容入手,保证经典和常用的数据结构及相关算法的知识点得到训练;在保证实验题目包含基本内容的基础上增加综合设计型实验,训练学生运用所学知识,解决实际问题的能力。其次,严格设置实验流程,加强对学生实践能力的考核,引导学生完成解决实际问题的步骤,保证实验效果。通过这两个方面的训练,学生对一个实际中较复杂的问题,通过熟悉背景知识,小组任务分工、问题分析、数据结构设计、编码、调试等各环节的完成,使学生在实践中理解并、应用数据结构与算法设计技术,提高分析、解决实际问题的能力[3]。

三 实践教学改进措施

(一)合理设置实验内容

数据结构实验可以分为验证型实验和设计型实验,验证型实验要求每个学生在教师指导下独立完成,主要验证课堂理论教学所授内容,以加深理解。教师全程参与指导,即从算法基本思想到算法实现,实现的各个环节(包括编程技巧、程序调试与测试等)都要参与指导。设计型实验要求每位同学独立完成,但在算法设计环节,教师可以给出提示。

验证型实验的目的是使学生掌握基础的常用的数据结构用法,强化对各种数据结构本身构造的理解,同时在使用的过程中进一步巩固加强程序设计语言的应用。但基础验证型实验在设置上不宜过多,应把握典型性的特点,应能够集中体现某个数据结构的基本特征,而且要难度适中,要使多数学生经过努力可以实现,应包括的典型算法如下表1。

表1.验证型实验应包含典型算法

设计型实验的目的是训练学生针对实际问题,提炼出运算模型,综合运用学过的知识,选择合适的数据结构并设计合理的算法求解问题。与验证型实验相比,设计型实验最大的优势就是要求能够训练学生对知识的综合运用,这一点恰好可以弥补验证型实验的不足。设计型实验可采用基于问题本身的任务驱动式方法,训练学生获取新知识以及分析、解决实际问题的能力。

数据结构中设计型实验典型题目:电子通信薄构造问题,要求实现联系人信息的添加、删除、修改、查找和排序功能;利用哈夫曼算法对文本文件进行压缩和解压缩,显示压缩比、压缩时间、解压时间与对应的加密压缩编码表问题;设计数据结构存储站点及公交线路信息,实现公交所经站点和站点所经公交以及对给定公交站点间换乘方案的查询问题的公交查询系统问题;带优先级的计算器问题,要求从终端以字符序列形式输入四则混合运算表达式,程序实现对运算数、运算符及优先关系的识别和表达式的计算;代码相似度检测问题,要求查阅资料了解代码相似度检测的典型解决方法,设计以串的模式匹配为基础的检测程序;内部排序算法效率比较平台的设计与实现等[4]。

(二)合理设置实验环节

在合理设置了实验内容的基础上,还需要合理设置实验环节,实验环节的设置是实验效果的重要保证,对单纯的验证型实验,实验环节是比较容易设定的,只需介绍一些实验环境及实验中需要注意的问题,同时给出进行验证型实验的步骤。学生在按部就班演示和理解源代码的基础上,就可以完成实验报告中的问题需求分析、数据结构和算法概要设计和详细设计部分,从而加深对数据结构的理解,提高算法理解和算法设计能力[6]。

设计型实验是模拟实际工程中软件设计的综合性实验,它的目的是培养学生灵活运用所学知识独立解决实际问题和团队合作的能力,要求学生能够根据实际问题合理分工,分析出输入、输出,选择合适的某个或某些数据结构组织需要处理的数据,并设计出正确的、高效的算法。设计型实验则必须要注意两点,一是实验内容,二是实验步骤。实验内容中要注意的是实验的综合性和背景知识,如果实验包含多个数据结构的知识点,综合性较强,则一般难度较大。如果题目涉及到的知识背景比较丰富,也会加大学生理解和设计问题的难度[3]。

实验步骤一般可以划分为5个阶段,具体包括“提出问题-提出设计要求-任务实现并提示-测试、运行与展示-分析、探讨、修改”5个部分。

第一阶段:提出问题。这部分教师给出问题背景,把本实验题目背景知识连同主要知识点提取出来,并融入到每个具体的任务中,教师一般只给任务书而不提供指导书。班级同学根据兴趣分成任务小组,以3-5人为一个分组,适当调整优势互补,分工合作,所有工作都以任务为中心来展开。这一部分要注意“任务”的明确性和可操作性。

第二阶段:提出设计要求。教师提出任务设计与实现功能上需求,给出算法实现对数据逻辑结构、存储结构、功能设计、数据输入或输出上的要求,学生通过分析分给自己的任务,了解任务的背景知识,所需知识点,规划解决任务的方案和步骤等。每一个任务小组要根据自己的研究任务制定研究方案,并将任务分配到个人,并做好研究准备工作。在此阶段教师以指导教师的身份出现,通过巡回指导观察学生操作情况。

第三阶段:任务实现并给出提示。将整个小组的大任务根据人数分成多个小任务,并将具体任务模块化,小组内部对每个任务进行分析、研究、讨论,进行概括和总结,从中得出小组内部的结论,提出组内设计方案,并根据个人兴趣来挑选完成。在完成过程中同学之间可以合作,学生完成这些任务的同时,无形中提高了他们的动手能力和合作精神。

第四阶段:测试、运行及展示。学生在展示过程中应给出各种具体情况的测试案例。包括项目的准备、项目实施过程中遇到和解决的各种疑难问题、自己所负责模块的运行效果等等。展示方式可以是小论文、多媒体演示、实验报告、程序运行模块等,但应该包括任务内容(做什么),算法说明(怎么做)等。

第五阶段:分析、探讨、修改。展示完成后,教师和别的小组的同学根据展示进行分析、讨论,给出评判和建议,学生根据评判和建议进行修改。这一部分除了对测试结果进行分析外,还要求学生不局限于题目要求使用的算法,探讨更多解决问题的途径,或者提出自己的见解,给出可能的改进算法建议。学生通过这一阶段工作可以了解自己及别的小组的任务完成情况,对比、分析,得到启迪,提高自己分析和解决问题的能力[7]。

结 语

“数据结构”实践教学是该课程教学的重要组成部分,作者通过在渥太华大学工程学院跟班听课,发现与国外对比国内数据结构课程实践教学环节有所欠缺,尤其是实践设计环节偏少,导致学生动手设计数据结构及算法并解决实际问题能力较差。特此分析后,针对国内我校数据结构实践课程教学中存在的重验证、轻设计,导致学生综合运用能力较差的实际问题,结合多年的教学实践,提出从实验设置内容和实验过程保证两个方面来加强实践教学,并具体从实验内容、实施方式、考核方法、实验流程等方面展开研究和探讨。该工作对国内转变以教师为主的灌输式教学法到以学生为主的自主性、创新性学习的转变具有一定帮助。

参考文献:

[1]朱金秀,金纪东,周研,等.实践教学与就业能力培养相融合的研究与探索[J].实验室研究与探索,2011,(4):105-107.

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

[3]徐慧,郭荣祥,周建美.多维一体的“数据结构”实践教学系统的构建[J].计算机教育,2011,(10):66-69.

[4]林健.注重卓越工程教育本质创新工程人才培养模式[J].中国高等教育,2011,(6):19-21.

[5]余燕,刘燕丽,李琳娜.数据结构实践教学内容设置的分析与思考[J].实验技术与管理,2014,(4):170-173.

[6]李晓鸿,骆嘉伟,季洁.“数据结构与算法分析”研究型实践教学的探索[J].实验室研究与探索,2012,(1):121-125.

[7]陈越,何钦铭,冯雁.“数据结构”综合性课程设计教学探索与实践[J].计算机教育,2008,(8):54-55.

(责任编校:张京华)

中图分类号:TP311

文献标识码:A

文章编号:1673-2219(2016)04-0134-02

收稿日期:2015-12-23

基金项目:国家留学基金委2015(第5期)高等教育教学法出国研修项目(工程类)。

作者简介:张小刚(1976-),男,塔里木大学信息工程学院副教授,博士研究生,研究方向为数据挖掘。

猜你喜欢
数据结构实践教学
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
为什么会有“数据结构”?
茶学专业校企合作实践教学探索
《电气工程毕业设计》 课程的教学设计
研究型学习在传热学实践教学中的应用
思想政治理论课实践教学研究述评
高职院校商务礼仪课程教学改革探索刍议
《数据库高级应用》教学创新方法研究
高职高专数据结构教学改革探讨