算法课堂教学的探索与体会
2014-09-22成娅辉
摘要:计算机专业课程教学中算法教学是一个重点和难点,文章针对如何提高算法教学的质量和解决算法教学中存在的问题,进行了积极的探索。
关键词:算法;数据结构;计算机语言;教学探索
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2014)06-0065-02
算法(Algorithm)是数学及其应用的重要组成部分,是计算科学的重要基础。随着现代信息技术飞速发展,算法在科学技术、社会发展中发挥着越来越大的作用,并日益融入生活的许多方面,算法思想已经成为现代人应具备的一种数学素养。因此,计算机专业课程中算法的教与学对于高校计算机专业学生的重要性是不言而喻的。目前,由于大学计算机专业课程中的算法教学存在一些问题,许多学生对算法学习的重要性认识不足,在学习过程中,学习的兴趣不高。笔者在从事算法课程教学中体会到:要提高算法课程教学的教学质量,首先要让学生真正理解在计算机专业学习中算法的重要性。要通过各种教学方法和手段,培养学生的学习算法的兴趣,学生有了学习的兴趣,学习的积极性和自觉性就会大大的提高。德国教育家第斯多惠说:“教学成功的艺术就在于使学生对你所教的东西感到有趣”。在这些方面,笔者作了一些教学实践和探索,取得了较好的教学效果。
一、设问法教学
如何让学生对算法学习有兴趣?如何让学生真正认识算法学习的重要性呢?为解决这个问题,笔者在课堂教学中采用设问式教学,通过设问,使学生积极思考、主动参与到学习中来。“学起于思,思源于疑”。比如,我在课堂会常常设问:计算机是怎么工作的?什么是计算机程序设计?什么样计算机软件是好的计算机软件呢?在学生们短暂的议论后,我告诉他们:计算机工作是靠执行一条条指令来实现的,有限条指令按照某种算法编写形成程序,程序最核心部分之一就是算法,算法的好坏是衡量程序是否优秀的重要标准。然后,我告诉学生Pascal语言之父、结构化程序设计的先驱、瑞士人Nicklaus Wirth有一本最著名书,书名叫做《算法+数据结构=程序》。由此可以看出在计算机程序中算法的核心作用,算法与数据结构之于程序设计的重要性也就就不言自明。同时,中国工程院院士、计算机科学家李国杰说过:“……而软件的核心是算法(不是编程技巧),……算法设计是人类智慧的结晶,计算机科学中的知识创新主要是算法的创新,创建一种新算法其意义不亚于建造一种新机型。……严格说来,不讲算法,计算机科学就无从说起。”由于李国杰院士是我们邵阳人,也是我们邵阳学院的名誉院长,所以同学一下子觉得亲切起来,对算法学习的陌生感、距离感也慢慢消失。总之,要通过各种教学手段和方法使得学生明白算法的重要性,使得学生对算法的学习产生兴趣,其中设问导入只是其中一种,我们还可以通过一些有趣的实例,比较不同算法的差异等,有很多方法值得去探索。
二、比喻法教学
在计算机专业课程教学中,许多学生不懂得计算机语言和算法的关系,总以为学习程序设计就是学习各种计算机语言。所以许多学生热衷于学习一门一门的计算机语言,从C到C++,从Java到C#等等。似乎学的计算机语言越多,程序设计水平就越高。同时把学习的重点放在学习每种语言的数据类型、运算符和表达式、语句、函数等语言本身的一些语法规则上,反而忽视了程序设计中最核心的部分:算法的学习。这种现象的产生是因为在计算机语言类课程教学中,算法只是作为例题形式出现,老师在计算机语言课程教学中不会专门介绍算法,更多讲解计算机语言的特点和编程的技巧,因而学生认识中就会出现偏差,以为这些例题只是为了练习和熟悉计算机语言为目的,不会有意识地研究算法。等到大三开始《算法设计与分析》课程学习,在教学过程中,老师更多地侧重理论的教学,学生学习起来觉得枯燥和难懂,有为难情绪,学习效果不理想。为了讲清楚计算机程序设计中语言和算法的关系,我在上课时采用比喻的方法,用自然语言和写文章的关系作为例子,学生很快就明白了。我告诉学生:计算机语言和生活中的语言是一样的。计算机有许多种语言,比如C、Java、C++等,生活中也有许多种语言,比如中文、英语、西班牙语等。我们在计算机语言的学习中掌握好这门语言中的数据类型、运算符和表达式、语句、函数等基本知识是很重要,这如同学习中文、英文要学习词汇、句子、各种语法规则一样。学习计算机语言的目的是要写计算机程序,开发计算机软件。这也和学习中文和英文是为了写文章,表达思想和观点相同。那么,什么是优秀的计算机程序或者说软件呢?最重要的标准就是看你解决问题的算法。这好像一篇文章的好坏关键是你在文章中表达思想和观点,这和你使用的语言没有太多关系。这好比一个伟大的哲学家的思想,不管用什么语言、文字表达出来,都是伟大的思想。所以在程序设计中关键是看你程序设计中解决问题的算法是否优秀,能否找到一种最好的算法,这和你使用哪种计算机语言都没有太多关系。通过这种通俗和贴切的例子,学生很快就能理解到算法的意义,明白了要写出优秀的程序,不只是熟练掌握所使用的语言和相应的编程技巧,也要了解各种算法,根据问题设计出最优秀的算法,而且算法的学习更加重要。
三、算法教学中的问题
首先,在计算机专业的课程教学中,涉及到算法的有三门课程:《计算方法》、《数据结构》、《算法设计与分析》。这就需要这三门专业课的老师在讲授本门课程的同时也要适当介绍其它课程中算法的特点和作用,以便学生更有目的的学习。算法分为数值算法和非数值算法。《计算方法》课程中讲的是数值算法,着重介绍计算机上常用的数值计算方法。内容包括误差、一元非线性方程的解法、线性代数方程组的解法、插值法和曲线拟合、数值积分、常微分方程数值解法等内容。《数据结构》课程中主要介绍非数值算法。着重介绍各种数据结构中数据的插入、删除、查找、排序等算法。《算法设计与分析》更多的是引导学生的思维告诉学生如何应用一些特定的算法设计策略来解决问题。比如迭代法、蛮力法、分治法、贪婪法、和动态规划等算法设计技术。这几门课,每门课都有自己的特点,都是算法设计技术,但又有区别,所以在课程教学过程中,每门课的老师要相互呼应,承上启下。这样学生对算法学习的体会才会更深刻。其次,算法教学的内容也要随着计算机技术的发展不断更新。目前,超级计算机的计算能力越来越强大,目前已经达到万万亿次/秒。人们会有这样的疑问:计算机的硬件性能已经提高的这样的水平,算法的研究还有必要吗?其实,计算机硬件功能越强大,人们就会尝试解决更复杂的问题,计算量也就更大,所以算法研究始终是推动计算机技术发展的关键。大学计算机专业算法教学也应该根据计算机技术的发展不断补充、增加新的内容,相应的教材也要加以更新。例如:Internet应用引起的海量数据的处理技术成为热点,使得数据的检索算法更为复杂。而且,有些时候,软件的维护成本已经远远高于开发成本,所以,软件中的算法能做到易读、易懂、易维护会大大降低软件的研发成本。不断完善和补充新的内容,介绍最新的算法研究的发展方向,可以使学生学习的积极性和自觉性不断提高,也为学生走向社会,更快地适应软件的设计和研发打下基础。
计算机算法教学是一个需要不断探索和实践的领域。如何让学生在学习过程中加深对计算机的理解,如何在学习算法的过程中加强对学生读懂算法、设计算法、分析算法甚至发明算法能力的培养,尤其是如何调动学生的学习积极性和主动性,使他们具有强烈的参与意识和求知欲望,这些都十分重要。好的教学方法,促使学生的积极思考,拓宽学生的思路,提高教学效率。本文仅仅是根据笔者平时在教学一线的心得体会,对计算机算法课程教学进行一定程度的探索与实践。
参考文献:
[1]胡淑珍.教学技能[M].长沙:湖南师范大学出版社,1996.
[2]蒋雪岩.当前课堂教学模式之整治[J].教育艺术,2005,(3):12-13.
[3]郎海艳.小议计算机编程教学中算法的选择[J].今日科苑,2008,(3):249-250.
[4]刘娇.数据结构课程的教学探索与体会[J].考试周刊,2010,(45):138-139.
[5]张铭,赵海艳,王腾蛟,等.北京大学《数据结构与算法》教学设计[J].计算机教育,2008,(20)64-68.
[6]吕国英.算法设计与分析[M].北京:清华大学出版社,2009.
基金项目:湖南省教育厅一般项目编号:13C846。
作者简介:成娅辉(1977—),女,汉族,硕士研究生。研究方向:计算机应用。endprint