您当前的位置:首页 > 教育论文>高等教育论文

论计算机教育中数学素养的培养

2015-12-15 11:35 来源:学术参考网 作者:未知

摘 要:通过数学在计算机发展和应用中的重要作用,论述了计算机教育中数学素养培养的必要性,并以此结合《算法设计与分析》课程的讲授提出了4种培养数学素养的途径,藉此以达到培养学生思维能力和自学能力的目的。

关键词:计算机教育;数学素养;思维能力

一.前言
  数学在人类文明的发展历史中发挥着重要的作用,推动了重大的科学技术进步。尤其是到了二十世纪中叶以后,数学的理论研究与实际应用之间的时间差已大大缩短。当前,随着计算机应用的普及,信息的数字化和信息通道的大规模联网,依据数学所作的创造设想已经达到可即时试验、即时实施的地步。数学技术一直是一种应用最广泛、最直接、最及时、最富创造力的实用技术。
  数学为计算机的发明和发展壮大提供了坚实的理论基础。早在1936年,英国数学家图灵(Turing)发表了对计算机具有奠基意义的论文《论可计算数及其在判定问题上的应用》,里面提出了计算的图灵机模型,该模型即为现代计算机模型的原型。为纪念数学家图灵,美国计算机学会于1966年设立了计算机界最负盛名的“图灵”奖,以表彰那些对计算机事业做出重要贡献的个人。数学是所有工科的基础,其中离散数学已经成为计算机科学发展的理论基础。图灵奖的获得者中有不少是学数学或者数学家出身。1974年获奖的Donald E. Knuth 被称为现代计算机之父,之前在加州理工获得数学博士学位,著有经典著作《计算机程序设计艺术》4卷。Richard M.Karp 于1985年获奖,之前在哈佛大学获应用数学博士学位。1986获奖的Robert E.Tarjan在斯坦福大学同时获得数学和计算机的博士学位,主要研究图论、算法和数据结构。
  当前计算机理论及应用的壮大和发展更是离不开近代数学的发展。将计算机与数学的发展分割开来既不合理也不现实。和所有学科一样,计算机领域也有自己的问题,比如什么是可计算的,什么是实际可计算的。这些计算模型本质上是数学的应用。离散结构上的算法研究无疑是计算机科学中的重要领域。研究算法需有扎实的数学功底,就机器学习领域的研究而言,通常要对所处理的数据建立不同的数学模型如分类模型、回归模型和排序模型。一般地,先针对这些问题建立特定的模型,然后采用有效的优化算法来求解这些模型。应用数学如矩阵论、多元统计分析和最优化理论可以为深入地研究机器学习领域提供理论基础。
  在实际的工作中,会经常看到数学基础
好、具有一定数学素养的人解决问题会游刃有余且后劲足,学习新事物和新东西会比较快,会表现出一定的创造性。但是当前大学的课程安排普遍存在对学生的数学学习的掌握程度不是很重视,导致学生对数学课的态度停留在学习时仅了解,一学完就全忘,到用时就迷惑的一知半解状态。教师在教授专业课和专业基础课的过程中,没有引导学生深入地发掘理论背后的数学本质,导致学生对计算机科学理论的理解只能停留在表面,凭机械性记忆而没有彻底理解。
  鉴于上述数学在计算机的发明发展和实际工作中的重要作用,因此,在计算机教育的过程中,迫切地需要培养学生的数学素养以满足现实工作和学习中解决实际问题的需要。
二、数学素养的培养
    《算法设计与分析》是计算机专业的一门重要的专业课,有利于培养学生分析问题和解决问题的能力,为学生学习后续课程打下坚实的基础。下面结合这门课程来谈谈在计算机课程中如何培养学生的数学素养。
(一)结合算法的发明史来讲解算法
深入学习计算机科学需要有良好的数学
基础,对于算法的学习更是如此。研究算法的图灵奖获得者中有很多是数学家或者学数学出身,如图论中有很多算法是以前面提到的Robert E.Tarjan的名字命名的,著名的Dijkstra最短路径算法由Edsger W.Dijkstra发明,而他2000年退休前一直是美国Taxas大学的计算机科学和数学教授。前面提到的Donald E. Knuth则是字符串匹配算法KMP算法的发明人。给学生讲解算法的发明历史一方面帮助学生了解发明算法的背景和发明过程,激发学生的创新欲望;另一方面让学生认识到数学的重要性和其在该课程所涉及的领域中发挥的重要作用。
(二)结合学生所掌握的数学知识来讲解算法
修读该门课程的对象一般为大学高年级
学生,他们之前应该修过其他的数学课程,如高等数学(数学分析)、线性代数和离散数学。通常教师在讲授该课程的过程中会认识到离散数学在其中发挥的作用,会有意识地提及离散数学的知识,但实际上学生学习的高等数学或线性代数的知识对理解该门课程也是有帮助的。下面通过一个例子来说明数学知识对理解算法正确性的重要作用。
  设计完算法如何证明算法的正确性呢?对于顺序结构和选择结构比较好验证,而对于循环结构就使用循环不变量(Loop Invariant)来证明。而循环不变量的证明实际上借鉴了数学归纳法的思想:循环发生前某个循环不变量为真,循环进行的过程中保持为真,那么循环结束时,该循环不变量仍然为真。循环发生前相当于时,而循环进行的过程保持为真,相当于断言:如时为真,那么为真。因此可以断定:无论循环体循环多少次,该循环不变量总为真。
  其他的例子,包括:比较算法的时间复杂度时可以引入高等数学中的无穷小量来讲解;计算时间复杂度也会涉及到利用无穷级数的估计等等。
(三)结合数学工具来可视化算法
  理论的发明通常是从简单直观的例子中归纳得来的。数学工具可以帮助我们理解和
可视化算法。
   图1  时间复杂度的比较:线性、平方、指数、
       

  对数的时间复杂度函数
  图1使用 Matlab工具语言直观地给出了几种常用的时间复杂度的比较,便于学生理解不同的复杂度随着问题规模增长的快慢。学生从该图中可以很容易地得出:在这几种复杂度函数中,指数复杂度随增长最快,而对数复杂度增长最慢。
(四)结合数学抽象思维来帮助学生理解算法
  数学的抽象思维可以帮助学生站在更高的角度来看待问题和算法之间的联系。算法通常是针对某一类问题的,而如何对问题进行归类,如何选择合适的算法解决是值得学生去探究的问题。讲解算法时,应该帮助学生抽象出问题的本质,同时注意算法之间的联系与区别。
  计算点对之间的距离是算法设计中一个
经典问题,如果源点单一,可采用Dijkstra最短路径算法,而计算图中任意点之间的最短路径,使用Floyd-Warshall最短路径算法会合适一些,但是如果图上的权重存在负 值,那就要用带松弛操作的Bellman-Ford算法求解。了解了这些知识后,学生在把问题抽象成特定的算法模型时,就可以正确地使用合适的算法了。
  其他问题包括使用矩阵胚理论来证明贪心算法的正确性以及灵活应用动态规划来求解离散结构上的最优化问题等等。
三、总结
     数学在计算机的发展和应用中的重要作用表明了数学素养的培养在计算机教育中的重要性。通过算法设计与分析课程的例子,第二节给出了4种方法阐述了如何在教学中培养学生的数学素养。然而,方法的最终目标是通过数学这个工具培养学生的自学能力,如同著名的教育家陶行知指出的那样:“我以为好的先生不是教书,不是教学生,而是教学生学”。因此,通过学生的数学素养的培养能起到锻炼学生思维能力和自学能力的目的。从这个意义上讲,在计算机教育中培养数学素养具有一定的积极作用和参考价值。

[参考文献]
[1] 范辉,余雪丽,邱宜坪,李晋江,在计算机教育中必须加强现代数学教育[J],太原理工大学学报(社科版),2001(19).
[2] T. H. Cormen,C. E. Leiserson,R. L. Rivest,
C. Stein, Introduction to Algorithm[M], MIT Press,2009.

相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页