“算法与数据结构”实验教学的改革与实践

摘要:算法与数据结构是计算机相关专业必修的一门基础课程之一,也是其他一些必修课程的先行课程。由于该课程理论性强,比较抽象,学生在学习该课程时总是被动式的学习,实验课上则表现为不愿意动手实现算法,对学习缺乏兴趣。首先分析了目前算法与数据结构实验教学过程中存在的问题,针对这些问题通过从教学内容和教学方法两个方面对传统教学方法进行改革和创新,侧重提高学生的学习兴趣和积极性,提高学生的编程能力和分析问题的能力,激发学生的创新能力。

关键词:算法与数据结构;实验教学;教学改革

作者简介:袁晓峰(1978-),男,江苏盐城人,盐城师范学院信息科学与技术学院,助教。(江苏 盐城 224002)

中图分类号:G642.0     文献标识码:A     文章编号:1007-0079(2011)29-0136-02

算法与数据结构作为计算机相关专业的一门专业基础课,它不仅要有计算机方面的高级语言、计算机基础和计算机组成原理等软硬件知识,还需要有一定的数学理论,如离散数学等;同时它也是操作系统、编译原理、计算机网络和数据库原理等后续课程的基础课程。因此算法与数据结构是联系一般基础课和专业课的“桥梁”,在计算机相关专业有着举足轻重的作用。[1]

实验课是学生践行所学理论进而深入理解理论知识并探索和运用知识的过程。通过实验,学生不仅可以进一步理解算法与数据结构的基本知识,通过对不同存储结构和相应算法的对比及上机编程练习,提供根据求解问题性质选择合理的数据结构并控制求解算法的时间、空间复杂度的能力,而且能进一步提高软件设计和编程水平,提高学习的积极性和主动性,形成科学的思维方法和严谨的科学态度,[2,3]因此算法与数据结构实验课程十分重要。

一、目前实验教学中面临的问题

算法与数据结构课程中知识点相当多,对先修课程,如高级语言程序设计和离散数学等也有一定的要求,给学生的学习造成困难。传统的实验教学形式是教师布置实验任务,学生独立完成,教师统一讲解。这种方法没有能够充分调动学生的学习兴趣,往往是几周后就有部分学生完全失去动手实践的兴趣。目前实验教学中面临的问题主要表现在五个方面。

1.课程理论性强,数据结构和算法过于抽象

课程知识丰富,涵盖多种数据结构在计算机中的组织和存储方法以及基本操作的实现算法。课程内容比较抽象,要求学生能针对具体问题抽象出问题的数据模型,通过求解数据模型解决问题。知识点应用灵活,学生不仅要学会使用现有的数据结构,还要能根据问题适当调整。

2.学生的程序设计能力较差

算法与数据结构课程要求学生具备较强的程序设计能力,能将理论课中所讲授的算法思想写成正确的程序代码,通过上机执行验证。而学生的程序语言基础和程序设计能力普遍较弱,面对问题时难以有清晰的算法思想,无法将算法思想转变为正确完整的程序代码。上机调试和运行程序时面对众多的错误提示无法正确解决,从而对本课程的学习渐渐失去兴趣。

3.课程的衔接不合理

目前许多高校的算法与数据结构课程都是用C或C++语言描述,而C或C++课程讲授也还是处于应试教学模式,并不重视程序设计能力的培养。学生对C或C++语言还没有真正的掌握和理解就开始了算法与数据结构的学习,这给学生们的后续学习带来了一定的困难。

4.理论脱离实践

算法与数据结构课程理论性强,应配以一定课时量的实验课,要让学生切切实实地将理论课上讲授的各种数据结构和算法逐一加以实践。如不认认真真地上机实践则不能深刻体会理论知识,在应用某个数据结构或算法时感到茫然。

5.授课方法陈旧

目前许多高校的算法与数据结构实验课程的授课方式还是以教师为中心。教师首先布置课堂学习任务并做适当的引导和提示,然后学生动手实践并单独向老师提问。最后,老师就重要的问题进行讲解并对整堂课的内容作总结。这种方法过于陈旧,不能调动学生的学习热情,一部分同学并没有独立完成老师布置的任务。

二、算法与数据结构实验课程教学改革

俗话说:知之者不如好之者,好之者不如乐之者。激发学生对本课程的学习兴趣是教学最大的成功。本文在笔者多年教学实践经验基础之上,以激发学生对本课程的学习兴趣为主线,从教学内容和方法上对算法与数据结构实验课程进行教学改革。

1.内容上的改革

精选案例,通过对案例的讨论进行授课。案例教学能够把抽象的原理、概念置于一定的实际案例之中,学生可以清楚地认识到这些原理、概念在实际中的应用,增进学生的学习兴趣和动力。案例教学能够让学生知道各种数据结构和算法在实际问题中的应用,从而提高学生的创新能力。案例的选择必须具有如下要求:

(1)案例必须具有趣味性。本文的改革是以培养学生的学习兴趣为主线的,一切教学内容的改革及方法的改革都围绕这个主线,因此案例的选择也必须具有趣味性。例如这样一个案例:有n个人依次围成一圈,从第一个人开始报数,数到第m个人出列,然后从出列的下一个人开始报数,数到第m个人又出列……,如此反复到所有的人全部出列为止。设这n个人的编号分别为1,2,…,n,打印出出列的顺序。该案例为日常生活中的一个小游戏,贴近生活,具有趣味性。

(2)案例必须具有应用性。案例必须具有应用性,即能够解决日常生活中的一些问题。比如上面这个例子,它能够解决日常生活中遇到的约瑟夫环相关的问题。学生在学习具有应用性案例的时候能够激发自己利用该方法去解决其他问题,从而激发学生的创新能力。相反地,如果案例设置得太抽象,首先是学生不容易理解,故而对案例不感兴趣,对后面的讨论、设计、答辩等环节就会得过且过。

(3)案例必须具有代表性。案例应该能够涵盖每章的重要知识点,难度不能太大,能帮助学生理解理论知识。实验内容应该和理论教学内容相对应,学生要在实验课程中编程,实现理论课上讲授的各种数据结构和算法。

(4)案例必须具有多种解决方法。案例必须具有多种解决方法,对激发学生的学习兴趣有着至关重要的作用。案例必须配以分组讨论的教学方法,如果一个案例仅有一种解决办法就达不到分组讨论的效果,就变成了一小组人的实验课。比如上面的例子,使用数组建立标志位等方法可以求解,也是容易想到的解决方法。但是如果用上数据结构中循环链表的细想就更贴切题意,解题效率更高。

2.方法上的改革

教学方法必须配合上述内容上的改革,采用分组讨论教学的方法。分组讨论能够激发学生的学习兴趣和竞争意识。每个学生都有不甘人后的心理,只要给的案例难度不太大,每个学生都有跃跃欲试的欲望。分组讨论必须达到如下要求:

(1)各组学生的综合实力要相当。无论什么竞争,要达到最佳状态,竞争者必须是旗鼓相当的对手。同样地,要想让小组之间的讨论能如火如荼地展开,则进行分组时必须要让各组的整体实力相当,特别是动手能力要相当,这样才能构成势均力敌的竞争环境,才能最大地激发所有同学的讨论兴趣,从而激发学习兴趣。

(2)每组必须要有编程基础好的学生。在将算法思想转化为正确的程序代码时,如果整组的学生都没有能力写出正确的代码,会大大打击该组同学的自信心和学习的热情。因此在分组前应在全班选拔编程能力强的同学,然后平均分配到各组。

(3)每组必须要有喜欢发言的学生。本文的改革重心在于通过分组讨论的方法激发学生的学习兴趣和热情,因此课堂上必须能展开热烈的讨论。热烈讨论的前提是每组必须要有喜欢或敢于发言的学生,这样的学生能够代表该组的其他同学表达他们的观点和想法,能够起到激发该组全体同学自信心的作用。

(4)教师对每组的想法必须有激励性的点评。分组讨论以学生为主,但是教师必须对每组的思路进行点评,这就要求教师对每个案例的各种解决方法了然于胸。教师的点评必须具有激励性,能够激励学生的学习热情。同时教师的点评必须能够很好地启发学生对案例进一步的思考,这是将课堂学习延伸到课后的有效方法。

3.授课模式

如图1所示,教学过程大致分为三个阶段:

(1)案例的提出。本阶段首先提出本堂实验课需要解决的问题,然后提出要求并作适当的讲解和提示。

(2)案例的讨论。讨论以学生为主,教师为辅。各组首先独自讨论解决办法并讨论算法思想,讨论完毕每组派代表阐述本组的算法思想。各组之间互相辩论说明自己算法的优点(主要从时空复杂度上比较),角逐最后的胜利,从而形成竞争。

(3)评价及实现。任课教师对最优的算法进行评价,并与经典算法比较。最后让每组的同学实现经典算法,达到数据结构、算法的深入理解和编程能力的锻炼。

三、结束语

算法与数据结构实验课程对于计算机相关专业的学生而言非常重要,要让学生掌握好这门课程就必须提高他们的学习兴趣,让他们真正理解每种数据结构和相关的算法。通过讨论一个个生动有趣的案例能够很好地激发学生的学习热情,也能够将这种学习氛围感染到每一个同学,从而达到良好的教学效果。

参考文献:

[1]耿国华.数据结构——C语言描述[M].北京:高等教育出版社,2006.

[2]汪沁.基于“数据结构”实验的探讨和研究[J].中国教育信息化,2007,(4):17-19.

[3]徐大华.程序设计语言教学方法探讨[J].高等理科教育,2007,(1):36-38.

(责任编辑:王祝萍)

推荐访问:数据结构 算法 实验教学 实践 改革