数据结构实践教学模式的设计与探索

2009-08-31 07:45章小莉
计算机教育 2009年13期
关键词:数据结构模式实践教学

赵 越 章小莉

摘要:数据结构是计算机科学与技术专业的重要核心基础课程,其实践教学环节是教学过程的必要组成部分。本文针对数据结构课程的实践教学环节,对目前存在的问题以及教学思路和教学方法等方面进行了较为系统的分析,并在具体教学过程中进行了一些有益的探索,对教学改革提出了一些设想。

关键词:数据结构;实践教学;模式

中图分类号:G642 文献标识码:A

数据结构是计算机科学与技术专业的重要核心基础课程,是计算机学科的算法理论基础和软件设计的技术基础。数据结构课程中所讨论的知识内容和技术方法与思路,不仅培养学生站在计算机角度认识数据和数据相关操作的关系,而且对进一步学习计算机学科的后续课程,以及从事软件的开发,都具有极其重要的作用。

但是,由于数据结构主要研究的是数据的各种组织形式,以及建立在这些结构之上的各种操作及其实现,其所研究的对象——数据元素及其之间的关系都是从现实生活中抽象出来的,在被组织成不同形式时,只研究其抽象出来的本质性的概念和关系,而忽略其本身所代表的实际背景,因此学生在学习的过程中常常感觉困难重重。学生普遍反映:本课程理论抽象,难以理解,更难以应用于实践;课程内容繁多,难以把握要点;即使勉强在课堂上听懂,在有关算法的设计及程序编写时仍然无从下手,等等。

数据结构课程的上述特点决定了实践教学环节是教学过程的必要组成部分,只有将实践教学和课堂教学紧密结合,互为补充,才能在最大程度上帮助学生尽快掌握课程知识,并更好地应用于实践,能够编写出结构清楚、正确易读的程序,达到知识和技能两方面的共同提高。基于此,我们在实践教学活动中一直致力于实践教学内容、教学方法、教学手段的探索与改革。

1对实践教学中目前存在问题的认识

数据结构是一门专业基础课,更是一门专业理论课,它不仅为操作系统、数据库原理、编译原理等重要后继课程提供必要的知识储备,同时,学习本课程的过程也是进行复杂程序设计的训练过程,仅仅是在课堂上“听”和“读”远远不够。目前本课程虽然开设有实验课15学时,但存在的问题是:

(1) 题目固定,可选择范围小。对于编程能力弱的学生来说,他们解决现在的题目要求有困难,以至于对实验缺乏兴趣与学习动力;对学习成绩好的学生,又因为题目难度不高,缺少挑战性,也丧失学习热情。

(2) 题目老套,缺少变化。数据结构实验存在的一大问题就是实验抄袭现象严重。每年实验题目基本没有任何变化,学生很容易得到以往的实验程序和报告,稍作改动就应付了事。

(3) 实验报告不规范,缺少对科技论文写作的必要训练。在计算机课程体系中,数据结构开课较早,前期课只有“计算机导论”、“高级语言程序设计”。在C语言的学习过程中,仅仅关注于某个知识点的理解和掌握,学生没有接触过对稍大规模问题的整体分析、解决以及形成最终报告的训练。因此,在数据结构的实践教学中,不仅要解决对课堂知识的消化理解,同时还要培养训练学生对于某个实际问题的综合分析解决能力,从而为进行复杂程序设计打下良好的基础。

2对实践教学思路的分析

数据结构课程有其鲜明的特点,其探讨的重点是程序设计的常用方法和技巧,并在在理论上有所抽象和提炼。实践教学环节的重点应当是借助对某些实际问题的分析和求解,使得学生加深对算法思路的分析与理解,特别是对某些经典算法,应能深刻理会,理论联系实际。但同时,学习数据结构又离不开程序设计语言,必须以某种程序设计语言作为学习和描述的工具,要求学生要有比较扎实的计算机语言基础。从学生的实际情况来看,经过大一一学期的程序设计语言学习,对语言的掌握能够达到数据结构学习要求的学生并不多。这就不免在教学过程中往往纠缠于特定程序设计语言的语法规则与细节,使得学生觉得数据结构课程的学习成了某门计算机语言的复习和训练课。

因此,我们认为实践教学环节首先应和课堂教学紧密配合,分工协作,为学生扫清计算机语言方面的障碍。在课堂教学中,教师应将更多的注意力放在算法思路的分析与理解,算法实现过程的形成上,而在实践教学环节,针对学生的语言弱项,应当对程序设计语言的一些必要知识点进行系统回顾,例如指针、结构体、函数及调用等。而且在上机时,教师更要针对学生的个别问题进行指导。

其次,实践教学要注重激发学生的学习兴趣。我们通过精心设计实验题目,让学生在实践过程中体会解决问题的精妙之道,体味成功的喜悦,从而对学习数据结构产生浓厚的兴趣,和课堂教学产生良性的互动循环,教学效果很好,得到了学生的高度评价。

第三,对学生计算机思维的训练是一个持久的过程,不仅存在于数据结构课程中,更需要贯穿到学生的整个学习阶段。我院坚持“编程训练不断线”的做法,在各个学期均安排了相应的计算机实习训练课程,这为我们在实践中不断提高学生编程能力提供了良好的平台。结合计算机实习,我们在其中设计了大量的需要数据结构知识的题目,这样即使是在课程结束后,学生仍然可以在实践中不断加深对所学知识的理解。

3对实践教学模式的设计与探索

针对数据结构实践教学中存在的问题,结合对教学思路的分析,我们在实践中尝试了多种教学方法,形成了具有自己特色的实践教学模式,取得了一定的效果,总结如下:

3.1实验题目分级分难度

鉴于实践课学时有限,而数据结构教学内容繁多,为了在有限的学时内安排足够的训练,满足不同层次学生的需要,我们进行了实验题目的分级改革。具体做法是针对某一个实验,给出4~6个不同的实验题目,并根据难度分级,设定相应的分值。每次实验满分为5分,各题目的分值从3分到5分不等。学生可以根据自己的学习状况和对相应知识的掌握能力,任意选做一道题目。教师在评分时,不仅要根据题目的难易程度,还要结合学生的完成情况综合考评。如果一个编程能力较差的学生选做了比较简单的题目,但是态度积极认真,独立完成实验,并且报告清晰完整,体现出对实验中涉及知识点的透彻理解和掌握,那么他一样可以获得较高的实验分数。

例如,针对线性表实验,我们设计了如下的5道实验题目:

题目1:多项式相加、减操作的实现。要求输出参与运算的多项式以及计算结果。(3分)

题目2:多项式相加、减和乘操作的实现。要求输出参与运算的多项式以及计算结果。(4分)

题目3:第一种约瑟夫问题。假设有8个人围圈而坐,现在从第1人开始数数,数到3的人出列,紧接着的后续人又从1开始数数,到3出列,如此重复下去,直到全体人员出列。编程实现新出列的数字序号输出。(3分)

题目4:第二种约瑟夫问题。假设有n个人,每个人有一个要求后续人数数的数字,且起始开始数数人员可以随意指定,其他均按第一种问题处理。试编写程序实现第二种约瑟夫问题。(4分)

题目5:制作一个“记事本”,界面如图1所示。要求首先在显示窗口按行显示可以使用的若干条信息的摘要,利用上下翻屏按钮可以顺序查看各条信息的摘要,当按下查看按钮时,则被选中信息在显示窗口完全显示。由于被使用的信息条数可以随意增、删、改,最小条数不少于100,所以要求信息在后台要使用线性表结构来存储。(5分)

注意:自定义所用线性表的存储结构,可以是顺序的、链式的、静态的、循环的、双向的等。

实践证明,采用这种方法,可以在有限的实践课时里容纳尽可能多的实验题目,学生的选择余地多了,学习能力弱的学生可以通过较易的题目获得基础训练,对所学知识有基本的掌握和理解。而学习能力较强的学生可以通过选做难度大的题目检验自己的所学,获得更大的提高。

3.2规范实验报告,明确写作要求

实践课中存在的一个普遍问题是学生的实验报告很不规范,大多数学生的报告是思想汇报,口语色彩浓重,不符合科技论文的写作要求。有很多同学即使课堂知识理解得很好,实验完成也不错,但是在报告的写作上,总是不得要领,无从下手。针对这一现象,我们特别加强了对实验报告的写作指导,除了在实践课上拨出专门课时集体讲授实验报告的写作方法之外,还在教学网站上给出了实验报告的规范和范例。第一次实验完成后,及时批改实验报告,针对其中存在的问题,汇总分类,避免以后再出现类似的问题。

经过一学期的训练,在课程结束时,学生的实验报告基本合格,大多数同学都初步掌握了报告的写作方法,能够有条理、分步骤地阐述一个问题的解决过程。

3.3精心设计实验题目

实验题目的好坏直接影响着实践教学的效果,我们对每一年实验题目的选择都非常重视。一方面,任课教师在平时的教学工作中,有意识地搜集新的实验题目充实到备选题目库中,经过教学小组讨论后,选择合适的题目作为新的实验题目。另一方面,在整个教学进程中,我们不断观察学生对实验题目的反应,并将此作为宝贵的经验,体现在下一轮的教学活动中。

例如,针对图这种数据结构我们设计了如下的实验题目:

请查询你所学专业四年全部课程先后续关系,编程求出课程安排的某种可用排课序列(拓扑排序)。(5分)

在学期末课程即将结束的最后一次实验中,我们设计了针对具体实际问题的实验题目,这些题目较有难度,以检验学生经过一学期的学习,综合运用所学知识解决问题的能力:

题目1:对英文字典中常用的500个单词进行索引,使得可以快速实现单词查找(B-树/键树)。(6分)

题目2:编程制作耗子走迷宫演示程序,完成耗子从入口进入迷宫,经过在迷宫中的摸索,从出口逃逸的全过程,以教会小孩如何走迷宫(矩阵)。(6分)

条件:某一点可以有4方向或8方向可走两种选择方案。

提示:用数组表示迷宫、某点可走的4 / 8个方向,利用栈存储行走过的线路。

3.4结合课程群建设,相关课程融会贯通

数据结构课程是计算机科学体系的重要组成部分,在计算机的课程体系中,数据结构开课时间较早,前期课只有“计算机导论”和“高级语言程序设计”,学生对计算机认识不深,给教学带来一定压力。除了在教学过程中继续加强学生的计算机知识之外,我们结合课程群的建设,注重相关课程的衔接沟通,先开课为后续课做好充分的知识准备,使学生在学习时能够循序渐进,构建起完整的计算机知识体系。有了扎实的理论基础,学生在动手能力方面也有了较大的提高。

3.5充分利用网络资源

随着教学条件的不断发展和完善,网络已经成为计算机教学不可缺少的组成部分。如何充分利用网络资源为教学服务是我们在教学改革中不断思考和探索重要课题之一。利用学院建设的BB平台,我们建设了数据结构教学网站,并利用其作业上传的功能,要求学生按时提交实验报告。网络的强大功能不仅节约了资源,也利于教师及时批改实验报告,针对报告中出现的问题,学生和老师可以及时互动交流,使得学习中的疑惑得到尽快解决。

总之,数据结构课程的实践教学环节在训练学生编程能力和逻辑思维能力方面的不可替代性决定了它是值得每一位任课教师认真思索和不断创新的过程。如何切实加强实践教学的效果,使之更好地与课堂教学相结合,并进而对其他计算机课程教学产生有益的借鉴作用将是我们一直努力探索的教研课题。

参考文献:

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

[2] Mark Allen Weiss(美).数据结构与算法分析[M].北京:机械工业出版社,2006.

[3] 龚红仿,杨宏杰,程思蔚. 数据结构实验课教学改革与实践[J]. 计算机教育,2007(12).

Practice Teaching Model of Data Structure

ZHAO Yue, ZHANG Xiao-li

(Computer Science and Technology Department of Beijing Electronic Science and Technology Institute, Beijing 100070, China)

Abstract: Data Structure is one of principal courses in computer science, and practice training is significant part in teaching. The paper focuses on practice teaching model of data structure, analyzes the existent problem and method of teaching. In the end, tentative plan of educational reform is mentioned.

Key words: data structure; practice teaching; model

猜你喜欢
数据结构模式实践教学
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
永续债券探析
茶学专业校企合作实践教学探索
《电气工程毕业设计》 课程的教学设计
思想政治理论课实践教学研究述评
高职院校商务礼仪课程教学改革探索刍议
中学数学创造性教学的模式与策略研究
《数据库高级应用》教学创新方法研究
数据结构与算法课程设计教学模式的探讨