首页 > 文章中心 > 正文

算法课堂教学的探索与体会

算法课堂教学的探索与体会

一、设问法教学

在计算机程序中算法的核心作用,算法与数据结构之于程序设计的重要性也就就不言自明。同时,中国工程院院士、计算机科学家李国杰说过:“……而软件的核心是算法(不是编程技巧),……算法设计是人类智慧的结晶,计算机科学中的知识创新主要是算法的创新,创建一种新算法其意义不亚于建造一种新机型。……严格说来,不讲算法,计算机科学就无从说起。”由于李国杰院士是我们邵阳人,也是我们邵阳学院的名誉院长,所以同学一下子觉得亲切起来,对算法学习的陌生感、距离感也慢慢消失。总之,要通过各种教学手段和方法使得学生明白算法的重要性,使得学生对算法的学习产生兴趣,其中设问导入只是其中一种,我们还可以通过一些有趣的实例,比较不同算法的差异等,有很多方法值得去探索。

二、比喻法教学

在计算机专业课程教学中,许多学生不懂得计算机语言和算法的关系,总以为学习程序设计就是学习各种计算机语言。所以许多学生热衷于学习一门一门的计算机语言,从C到C++,从Java到C#等等。似乎学的计算机语言越多,程序设计水平就越高。同时把学习的重点放在学习每种语言的数据类型、运算符和表达式、语句、函数等语言本身的一些语法规则上,反而忽视了程序设计中最核心的部分:算法的学习。这种现象的产生是因为在计算机语言类课程教学中,算法只是作为例题形式出现,老师在计算机语言课程教学中不会专门介绍算法,更多讲解计算机语言的特点和编程的技巧,因而学生认识中就会出现偏差,以为这些例题只是为了练习和熟悉计算机语言为目的,不会有意识地研究算法。等到大三开始《算法设计与分析》课程学习,在教学过程中,老师更多地侧重理论的教学,学生学习起来觉得枯燥和难懂,有为难情绪,学习效果不理想。为了讲清楚计算机程序设计中语言和算法的关系,我在上课时采用比喻的方法,用自然语言和写文章的关系作为例子,学生很快就明白了。我告诉学生:计算机语言和生活中的语言是一样的。计算机有许多种语言,比如C、Java、C++等,生活中也有许多种语言,比如中文、英语、西班牙语等。我们在计算机语言的学习中掌握好这门语言中的数据类型、运算符和表达式、语句、函数等基本知识是很重要,这如同学习中文、英文要学习词汇、句子、各种语法规则一样。学习计算机语言的目的是要写计算机程序,开发计算机软件。这也和学习中文和英文是为了写文章,表达思想和观点相同。那么,什么是优秀的计算机程序或者说软件呢?最重要的标准就是看你解决问题的算法。这好像一篇文章的好坏关键是你在文章中表达思想和观点,这和你使用的语言没有太多关系。这好比一个伟大的哲学家的思想,不管用什么语言、文字表达出来,都是伟大的思想。所以在程序设计中关键是看你程序设计中解决问题的算法是否优秀,能否找到一种最好的算法,这和你使用哪种计算机语言都没有太多关系。通过这种通俗和贴切的例子,学生很快就能理解到算法的意义,明白了要写出优秀的程序,不只是熟练掌握所使用的语言和相应的编程技巧,也要了解各种算法,根据问题设计出最优秀的算法,而且算法的学习更加重要。

三、算法教学中的问题

首先,在计算机专业的课程教学中,涉及到算法的有三门课程:《计算方法》、《数据结构》、《算法设计与分析》。这就需要这三门专业课的老师在讲授本门课程的同时也要适当介绍其它课程中算法的特点和作用,以便学生更有目的的学习。算法分为数值算法和非数值算法。《计算方法》课程中讲的是数值算法,着重介绍计算机上常用的数值计算方法。内容包括误差、一元非线性方程的解法、线性代数方程组的解法、插值法和曲线拟合、数值积分、常微分方程数值解法等内容。《数据结构》课程中主要介绍非数值算法。着重介绍各种数据结构中数据的插入、删除、查找、排序等算法。《算法设计与分析》更多的是引导学生的思维告诉学生如何应用一些特定的算法设计策略来解决问题。比如迭代法、蛮力法、分治法、贪婪法、和动态规划等算法设计技术。这几门课,每门课都有自己的特点,都是算法设计技术,但又有区别,所以在课程教学过程中,每门课的老师要相互呼应,承上启下。这样学生对算法学习的体会才会更深刻。其次,算法教学的内容也要随着计算机技术的发展不断更新。目前,超级计算机的计算能力越来越强大,目前已经达到万万亿次/秒。人们会有这样的疑问:计算机的硬件性能已经提高的这样的水平,算法的研究还有必要吗?其实,计算机硬件功能越强大,人们就会尝试解决更复杂的问题,计算量也就更大,所以算法研究始终是推动计算机技术发展的关键。大学计算机专业算法教学也应该根据计算机技术的发展不断补充、增加新的内容,相应的教材也要加以更新。例如:Internet应用引起的海量数据的处理技术成为热点,使得数据的检索算法更为复杂。而且,有些时候,软件的维护成本已经远远高于开发成本,所以,软件中的算法能做到易读、易懂、易维护会大大降低软件的研发成本。不断完善和补充新的内容,介绍最新的算法研究的发展方向,可以使学生学习的积极性和自觉性不断提高,也为学生走向社会,更快地适应软件的设计和研发打下基础。计算机算法教学是一个需要不断探索和实践的领域。如何让学生在学习过程中加深对计算机的理解,如何在学习算法的过程中加强对学生读懂算法、设计算法、分析算法甚至发明算法能力的培养,尤其是如何调动学生的学习积极性和主动性,使他们具有强烈的参与意识和求知欲望,这些都十分重要。好的教学方法,促使学生的积极思考,拓宽学生的思路,提高教学效率。本文仅仅是根据笔者平时在教学一线的心得体会,对计算机算法课程教学进行一定程度的探索与实践。

作者:成娅辉单位:邵阳学院信息工程系