“数据结构”教学方法探索与实践

时间:2022-05-07 03:19:00

“数据结构”教学方法探索与实践

摘要:“数据结构”是计算机专业的一门核心课程,学生通过这门课程的学习,可以促进软件设计和编程能力的提高。但学生在学习这门课程时,普遍反映该课程枯燥难学。本文主要介绍了作者在教学过程中获得的一些心得与体会。

关键词:数据结构;算法;教学方法;实践

中图分类号:G642.0 文献标识码:B

文章编号:1672-5913(2007)06-0007-03

“数据结构”是计算机专业的一门核心课程,学生通过这门课程的学习,可以促进软件设计和编程能力的提高。它不仅是计算机专业研究生考试、大专学生专升本的首选考试课程,甚至有些单位招收计算机专业的学生,也要考察“数据结构”。学生虽然认识到该门课程的重要性,但学生在学习这门课程时,普遍反映该课程枯燥难学,没有学习兴趣。因此,教师应根据学生实际情况,改进教学方法,提高教学质量。

1 兴趣引路,注重理论联系实际

俗话说,兴趣是最好的老师,如果要学生学得好,首先就要让学生对该门课程产生兴趣,但由于“数据结构”这门课程理论性较强,学生在学习这门课程时,普遍反映该课程枯燥难学,提不起兴趣,在学习过程中也仅是为了考试而学习,这种学习方法就扼杀了学生学习的主动性,使学习效果大打折扣。一个好的教师,应该在传授理论知识的同时,培养学生的学习兴趣。目前,很多学生学了“数据结构”之后,不知道怎样用,只知道逻辑结构、存储结构等相关术语。因此,教师在教授该门课程时,首先要注重实践,结合一些与本门课程相关的具体应用实例,说明各种数据结构在一些典型软件中的应用。此外,如果教师在讲授该门课程的同时,能够引入一些生活中的实例,引导学生巧妙处理生活中的日常问题,让学生感受到“数据结构”这门课程与现实生活中的关系,就能够提高学生的学习兴趣。

比如说笔者在课堂上讲到队列时,曾经举过这样一个例子:首先让学生想一想关于生活中和队列有关的事情,学生们都很积极地去想,七嘴八舌议论纷纷。最后学生统一说最直接的例子就是生活中的排队了。接着我就拿出一个具体的排队实例,病人到医院看病,要排队等候,排队看医生的情况,要同学们编制出适当的程序。然后同学们都沉默下来,接着我就引导学生并告诉他们,要想编好这样一个程序,也不难,这就用到了我们学过的队列了。首先我们要把复杂的问题简单化,要模拟这一问题,可以把这一过程分为以下几个步骤来完成:

(1) 排队:输入病人的病例号,加入病人到排队队列中;

(2) 就诊:病人排队队列中最前面的病人就诊,并将其从队列中删除;

(3) 查看排队:从队首到队尾列出所有排队病人的病例号;

(4) 不再排队,余下依次就诊:从队首到队尾列出所有病人的病例号,并退出运行;

(5) 下班:退出运行。

告诉他们把问题分解为这样几步之后,给他们约10分钟的时间去想这样一个程序应该怎样编制,然后拿出自己事先调试好的程序,详细地对其进行讲解。这样虽说花费的时间比较长,但极大地调动了学生学习这门课程的积极性,同时能够引导他们尝试如何把生活中的实例用数据结构的方法去解决,收到了良好的教学效果。

2 加强实验教学,培养学生动手实践能力

教师在教学过程中,要注重实验教学,注重上机实践。目前,在“数据结构”教学之中,很多学校不重视上机实践,甚至在整个授课过程中,只有理论课而没有实践课。我们说,上机实践不仅能提高学生灵活运用数据结构和算法的能力,而且使学生在编程、上机操作、程序调试等方面受到严格的训练。通过上机实验,可以有效地提高学生的程序设计能力,把算法和程序有效地结合在一起,加强学生对实际问题的抽象理解能力。

但由于受国外教材的影响,目前国内的大多数“数据结构”教材只是给出相关算法,并没有给出源程序,教材上给出的算法在计算机上并没有办法执行。同时,由于很多学生“C语言程序设计”基础知识较差,没有能力将算法转化为程序,在计算机上执行。因此,教师在授课时,要着重讲授算法与源程序的关系,引导学生能够将算法转化为源程序,在计算机上执行。这就要求教师在一开始详细讲解,以后逐渐放手,布置一些难度较大的作业,培养学生的动手实践能力。

比如教师在讲解单链表的抽象描述时,对单链表有以下描述:

ElemTypedata;

Lnode *next;

对于这样两条语句,学生很难想象链式存储结构的线性表是怎么回事,但如果教师在授课过程中,引入一些实例,并在课堂上进行调试,那么,学生学习的效果就会大不相同。比如线性表的插入算法实例:

# include

# include

# include

# include

# define INIT_LENGTH 10

# define OK 1

# define ERROR 0

typedef struct LNode //define LNode structure

{int data;

struct LNode *next;

}LNode,*Linklist;

int ListInsert_L(Linklist &L,int i,int e)

//ListInsert_L() sub-function

{LNode *p=L;

int j=0;

while(p&&j

{p=p->next;

++j;

}

if(!p||j>i-1) //out of location

{cout

return (ERROR);

}

LNode *s;

s=(Linklist)malloc(sizeof(LNode)); //create new LNode

s->data=e;

s->next=p->next;

p->next=s;

return (OK);

} //ListInsert_L() end

void main() //main() function

{int i,j,e;

LNode node[10];

LNode *L,*p;

int array[INIT_LENGTH+1]={5,8,12,18,25,30,37,46,51,89};

L=node;

L=(Linklist)malloc(sizeof(LNode));

L->next=NULL;

for (i=10;i>0;i--)

{p=(Linklist)malloc(sizeof(LNode));

p->data=array[i-1];

p->next=L->next;

L->next=p;

}

p=L;

cout

cout

cout

for(i=0;i

{ p=p->next;

cout

}

cout

cin>>j;

cout

cin>>e;

if(ListInsert_L(L,j,e))

{cout

p=L;

for(i=0;i

{ p=p->next;

cout

}

}

cout

getch();

}

这样就使学生产生了很大的学习兴趣,能够使他们尝试将生活中的实例用“数据结构”的方法去解决,做到了活学活用,锻炼了学生的软件设计能力和编程能力,收到了良好的教学效果。

3 因人而异,分层次教学

一般来讲,大学授课都采用大班授课,每个学生的基础不同,理解能力和接受能力也不同,这就要求我们的教师要因人而异,对不同的学生采用不同的教学手段。具体来讲,主要体现在以下几个方面:

* 在教学过程中,授课内容分为基础部分和提高部分;

* 给学生留的作业也分为基础和提高两部分,基础差的同学只做基础部分,能力强的同学可以做那些难度较大的习题;

* 实验部分分两个环节,基础部分学生要全部完成,对于提高部分,主要包括和实践接轨的一些习题,可以分组去做,几个学生一组。去完成一些与实际接轨的习题,甚至是编一些游戏软件等,培养学生学习兴趣。

4 多媒体教学

学生在学习“数据结构”这门课程时,主要面对的一个问题就是枯燥难学,理论性极强。学生在学习起来自然就感到吃力,为了使学生在更短的时间内更好地掌握知识,教师可以采用多媒体进行教学。教师先将那些在传统教学中用语言和板书难以表述、学生难以理解的抽象内容和复杂的变化过程,事先做好多媒体课件,或采用现有的DSDEMO数据结构课件演示系统,进行演示,这样可以使教学内容变得更直观、形象、生动和有趣,从而取得良好的教学效果。

5 结束语

“数据结构”这门课程在计算机科学与技术中有着举足轻重的作用,是计算机教学中必须掌握和学习的一门课程。但该课程的特点是理论性和实践性较强,有的学生学完“数据结构”,居然留下的印象是该课程像天书一样难懂,学了之后,根本就不会具体应用,这就使这门课程的教学失去了它本来的光环。学生学过之后,根本不会使用,还谈什么核心作用呢?因此,教师在教学过程中,应该积极探讨,采用深入浅出、灵活多样的教学方法,充分调动学生的学习积极性,提高学生的学习兴趣,这样才能使学生真正学好“数据结构”。以上是笔者在教学过程中的一点心得与体会,希望能给同行以借鉴作用。

参考文献:

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

[2] 彭波.数据结构[M].北京:清华大学出版社,2006.

[3] 李春葆.数据结构教程上机实验指导[M].北京:清华大学出版社,2005.

[4] 张敬芝.数据结构课程教学改革研究[J].长春师范学院学报,2005,(8):147-148.

[5] 陆志敏.“数据结构”教学初探[J].计算机时代,2005,(11):28.

收稿日期:2006-10-31

作者简介:杨桂芝(1970-),女(汉族),工学硕士,主要研究方向为搜索引擎、信息处理。

上一篇:用生活中的管理思想去讲操作系统 下一篇:正确使用现代教学媒体的几点体会