《数据结构》课程实践教学探索

2010-09-25 05:21
科学时代·上半月 2010年6期
关键词:数据结构程序设计课程设计

熊 炎 尤 磊

[摘要] 《数据结构》是计算机专业一门重要的专业基础课程,本文就《数据结构》课程实践教学中存在的问题进行了细致的分析,提出了对该课程的实践教学进行改革的建议,介绍了在课程设计环节的具体做法,以提高该课程的教学效果,增强学生的实践能力。

[关键词] 数据结构实践教学课程设计

1.引言

《数据结构》是计算机学科的核心课程,也是一门十分重要的综合性专业基础课程;既是程序设计的理论基础,也是多门后续课程的学习基础,在整个教学体系中占据非常重要的地位。特别是自2009年起全国硕士研究生入学考试计算机学科专业基础课实行统考后,对于如何提高《数据结构》课程的教学效果和教学质量,提高学生考研成绩,已成为广大从事计算机专业教学的教师们共同关心的课题。

多年来由于各种原因,特别是在《数据结构》的教学中忽视了实践教学的重要性,理论与实践脱节,实际的教学效果离我们期望值有较大的差距。因为《数据结构》是一门实践性很强的课程,实验是教学环节中必不可少的组成部分。但在教学的实验环节中,学生普遍存在很大的困惑与疑问,即使很多学生有时理论理解了,但实验却难以上手,最终还是达不到学习的效果。本文就此分析实践教学中存在的问题,并提出改革措施。

2.实践教学中存在的问题

(1)《数据结构》课程概念多、内容广,具有很强的抽象性和技巧性,并且涉及顺序表、链表、栈、队列、二叉树、图等多种数据结构和排序、检索等众多的算法,这些都是比较重要、需要掌握的方面。但先修课程中所介绍的相关专业知识又不多,使学生在学习过程中常常觉得教材中的内容与具体的设计题目相距甚远,无从下手。所以学生在学习过程中很容易产生畏难和茫然的情绪,在实验时往往反映为缺乏信心,无从下手,于是很容易失去学习的积极性。

(2)在传统的实验课程教学中,学生大都是完成一些验证型的实验,只是被动地接受和机械地操作,以完成教学内容的验证,单纯这样的实验教学使得学生缺乏主观能动性以及独立思考问题的能力,不利于综合素质的提高和自主创新能力的培养,而且这样的实验不能使整个课程内容融会贯通,教学效果不好。

(3) 《数据结构》课程实验虽是运用某种程序设计语言(C、C++或Java)设计并实现特定问题的数据结构、求解算法以及相关的运算,但与程序设计课程又有很大的不同。它强调的是数据的表示和存储及算法的设计,要求学生对给定的问题设计出合理的数据结构,并在此基础上设计求解算法,实现问题的求解。因而《数据结构》并不是简单的程序设计,是在程序设计的基础上又上了一个层次。但学生在进行实验时,最容易犯的错误就是延用程序设计课程实验的方法,没有实验前的准备工作,也没有考虑数据的逻辑结构和存储结构,程序写完后立刻编译运行,最后会发现,运行结果与预想的相差甚远,错误的原因却很难找到。

基于上述原因,该课程的实践环节往往流于形式,达不到实践的目的,很难促进学生对理论知识的理解,更无法锻炼学生运用所学知识解决实际问题的能力,教学效果也就不好。

3.实践教学改革

由于实践是学生学好《数据结构》课程、培养实践能力最关键的环节,针对实践教学中存在的问题,我们既要强调课程实验的重要性,巩固课堂上所学的算法与数据结构的基本内容;更要在综合课程设计上下功夫,激发学生的兴趣,在实验过程中充分发挥每个学生的思维能力和实践能力。

(1)课程实验

由于《数据结构》课程不具有明显的整体性,各种数据结构之间相对独立,因此一种数据结构学习结束后,就要布置基本操作题来进行基本算法的练习。这样既巩固了学生对基本算法的掌握,加深了学生对基本知识的理解,又增强了实践能力,为综合课程设计打下坚实的基础。

“针对入门难的问题,开始阶段,我们给出一些简单程序的源代码,供学生参考,激发学生上机的积极性。在讲授前几章节的算法时,我们都亲自编写源程序,并上机讲解,从而激发了学生的上机兴趣。

为了更好地指导学生的上机实验,我们根据教学大纲和实验大纲编制了实验指导书,避免学生上机实验的盲目性,让学生更加明确实验要求与任务。并且每次实验过后,都要求学生写实验报告,不仅介绍实验的操作过程,还要总结每次实验的收获体会,同时又培养了学生编写规范化软件设计文档的能力。

(2)课程设计

为了增强学生综合应用能力和分析问题的能力,加强实践环节,我们增加了《数据结构》课程设计。课程设计是指和课程相关的一个实践环节,更强调综合性、设计性。无论从综合性、设计性要求,还是从规模上讲,课程设计的复杂度都高于课程实验。特别是课程设计在于引导学生迈出将所学的知识用于解决实际问题的第一步。

《数据结构》综合课程设计要求学生对给定的具有一定规模和复杂度的、需要用数据结构中的模型以及求解方法才能(或更清晰、更好地)描述和求解的、以数据结构与算法的设计为核心的程序设计类问题,进行从问题建模到数据结构设计、算法设计与实现、系统测试等环节的知识与技术的综合运用,并在完成设计任务和指标的前提下撰写设计报告。要做好课程设计,学生必须要特别的努力,对本门课程学过的内容进行认真的复习和总结,综合应用学过的知识才能达到要求。经过这样的训练,在很大程度上提高了学生的学习兴趣、自主性以及实践应用能力。

我们具体的做法是给出一些典型的题目,每个题目所涉及的知识和能力各有侧重。学生可以从中任选一个,并按要求在一个学期内完成相应的工作。

例如关于棋盘中马的周游这个题目:在中国象棋棋盘上,对任一位置上放置的一个马,均能选择一个合适的路线,使得该棋子能按象棋的规则不重复地走过棋盘上的每一个位置。要求依次输出所走过的各位置的坐标;最好能画出棋盘的图形形式,并在其上动态地标注行走过程。本题目重点是:棋盘的表示方法;路径的搜索及选择策略;算法设计与实现;其他一些辅助性运算及其实现等。

另外,在课题的选择上除了要体现分析设计能力的培养外,课题的难度要有区分度,采用针对不同学生进行教学方法,即分层次教学。通过实验,使每个学生都有不同程度的收获,以提高他们对该课程学习的自信心。有一定难度的题目,学生也可以统一组织成若干个学习小组,协作完成课程设计,这样又培养了学生团队合作的精神。

《数据结构》综合课程设计这个环节的增加,使学生通过课题的设计与实现过程的训练,培养了能综合运用数据结构以及程序设计、离散数学等相关课程的基础知识,系统学习和掌握问题建模、数据结构设计、算法设计与实现、测试等各环节的方法和能力。

4.小结

《数据结构》在整个计算机科学的知识体系中有着非常重要的地位和作用,其较强的理论性和实践性使得它更需要有效地组织实践教学,而我们往往忽视了这一点,即使强调了实验内容,但传统的验证型的课程实验很难培养现代大学生的创新精神和运用所学知识解决实际问题的能力。因此,我们既要合理、系统地安排实验教学,更要精心地组织课程设计,来加强该课程的实践教学环节,从而加强理论教学的效果、提高学生分析问题和解决问题的能力。

参考文献:

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

[2] 曾立庆,童怀水.《数据结构》实验教学探讨[J].职业教育研究,2006,11

[3] 杨慧.《数据结构》实验教学改革探讨[J].赤峰学院学报,2009, 3

[4] 黄晗文,李健,陈剑英.《数据结构》课程教学途径探讨[J].湖南工业职业技术学院学报,2009,2

猜你喜欢
数据结构程序设计课程设计
“苏州园林:景致与情思”课程设计
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
A Study on the Application of Task—based Approach to English Vocabulary Teaching
关于完善课程设计教学及教学管理工作的思考
数据结构与算法课程设计教学模式的探讨