前言
作为计算机数学的入门教材,本书主要介绍计算机技术、信息科学中所涉及的最基础的数学知识。其目的是不仅展示数学的应用性,而且通过数学知识的扩展来培养学生的逻辑思维和抽象能力,为计算机专业学生的可持续发展建立必要的基础。
编写说明
20世纪著名数学家,德国哥廷根学派的重要成员R.柯朗在其名著《WhatisMathematics》(1941年)中说,“两千多年来,人们一直认为每一个受教育者都必须具备一定的数学知识。但是今天,数学教育的传统地位却陷入了严重的危机之中,而且遗憾的是,数学工作者要对此负一定的责任。……数学研究已经出现一种过分专门化和过于强调抽象的趋势,而忽视了数学的应用以及与其他领域的联系,不过,这种状况丝毫不能证明紧缩数学教育的政策是合理的。相反,那些醒悟到培养思维能力的重要性的人,必然会采取完全不同的做法,即更加重视和加强数学教学。”转眼70多年过去了,数学教育中“忽视了数学的应用以及与其他领域的联系”的状况仍然没有实质性的改观,我国学校教育尤其如此。近十多年来,随着我国高等教育的大众化和普及化,尤其是高等职业教育的迅速发展,这种状况已经到了迫不得已必须要变革的时候了。也就是说,大学数学课程再也不能仅仅停留在“培养思维能力”的层面,还必须为学生的专业知识学习和能力发展提供实在的支持。鉴于这种考虑,很长时间以来我们一直都在思考计算机专业的数学课程建设问题。为此,我们认真学习了国内许多学者编写的《计算机数学》教材,虽然受到一些启发,但还是觉得不满意。这主要表现在:一是内容选取不恰当,没有体现出为计算机专业服务的个性特点;二是沿袭着比较传统的学科体系的编写思路。于是,我们把眼睛转向了国外比较流行的相关教材,通过不断地学习、比较和实践,我们采取了与国内诸多教材完全不同的编写思路和内容设计。
这门课程的内容可以有不同选择。国内多个版本的《计算机数学》教材都包含着传统的微积分,或者个别教材使用数学软件Mathematica或Matlab进行编程实践。我们认为,对计算机专业来说,这些内容并不是最重要的,其实用价值也不是最高的。于是,我们放弃了比较传统的微积分和线性代数等内容,而把离散数学作为计算机数学的主体。它包括数的进制,集合、关系和函数,命题逻辑和量词,算法基础,图论、树和二叉树等基础知识。这与大家已经见到的、由国内学者编写的《计算机数学》有非常大的差异。
同时,那些教材基本上没有算法实践,而本教材比较重视编程和算法设计。算法是计算机数学应用的重要方面,教材中的算法程序(段)和过程都以伪代码的形式给出。这样做能更好地把数学知识与计算机应用融为一体,通过接触不同的算法来培养学生的编程能力,从而体现作为专业基础的数学课程直接为计算机专业服务的理念。
再者,本教材所列出的主题有自己特别的安排顺序。经验告诉我们,过早地介绍命题与逻辑,效果可能并不理想。考虑到学生的数学基础,先讲解集合、关系和函数等相对比较熟悉的内容可能是恰当的;然后再对逻辑给出清晰的阐述。而所有的不同都体现了我们对这门课程的独特理解。
尽管我们已经付出了十分艰辛的努力,但本教材仍然会存在诸多不足,尤其是在内容选取和编排方式上。如果读者朋友有任何的改进教材的建议,请发送邮件到anjun65@sina.com,我们会非常认真地听取并做出积极的响应。
致学生
对于刚刚结束高中阶段学习进入到大学计算机专业的学生来说,也许并不喜欢数学,但在大学第一年的学习中,数学是重要的必不可少的基础课程。计算机及其相关领域里的许多工作都与编程或编程思想有着千丝万缕的联系,而其中但凡有点创造性的工作都是基于编程的。这些工作对逻辑思维和抽象能力有比较高的要求,学习数学是达到这种要求的重要途径。因此,我们建议读者根据“取法其上,得乎其中;取法其中,得乎其下;取法其下,则法不得也”的思路,尽自己的最大努力多学一些数学知识,给自己预留多一点发展空间。尽管这样做有时候是比较辛苦的,而一旦掌握了数学知识,你就会发现,在计算机领域之外,这些知识也大有裨益。
阅读本书基本上不需要微积分和计算机方面的知识预备。但是,如果你已经掌握了基础水平的高中数学,或曾经历过程序设计方面的练习,读起来会更加轻松自如。考虑到同学们以前的数学基础和学习兴趣,我们花费了相当大的精力尽量把数学知识讲得更加的浅显易懂,但初学者可能还是会感到有点不适应。此时你需要沉静和一些耐心,以及咬住青山不放松的勇气。人类历史上最伟大的数学家牛顿和高斯之所以能在数学上做出如此多的贡献,不仅因为他们天资聪慧,还因为他们在伟大工作上的长期准备和不间断地思考。因此,只要我们不间断地思考,就应该相信自己在老师和周围同学的帮助下能够克服暂时的困难,取得实质性的数学进步。
数学不像其他学科,如历史学、医药学、法律等,有大量的内容需要记忆。数学学习最重要的是理解和运用,而理解与运用总是相互依存的。为了获得理解,经常需要从一些特例出发,再推及较大或更广的范围,从而达到抽象的层次;或者是反复考察数学定义所涉及的正面和反面的例证。读数学书时一定要养成用实例论证的习惯。因此,本书包含了极其丰富的例题和适量的习题,它们是每一章节的重要组成部分。解决这些问题是你理解数学知识和扩展抽象能力的必要环节。因为无论一个概念看上去是多么的简单,如果不通过实例的演练,你根本无法完全掌握。尽可能多地做练习,你才能从本书中获得最大的益处。
虽然本书的附录提供了许多习题的解答,但我们还是期待读者能够通过自己的努力解决它们,因为解题所需要的抽象力、理解力是其他任何人都无法代为传授的,它们是在“做”与“思”的过程中所达到的对数学知识的升华。
致教师
对于长期讲授连续性数学(比如微积分)的教师来说,本书中的个别内容或许有点陌生。但是,所有的这些内容对计算机专业来说都是基础的和重要的。尽管我们习惯于在自己熟悉的知识领域里工作,计算机专业的数学教师还是应该在课程内容的取向上做出积极的改变。就内容的针对性而言,《计算机数学》比传统的《高等数学》更能为计算机技术课程提供必要的知识基础,所以我们尝试着做出这种改变。虽然我国高等职业院校已经有学者编写并出版了类似名称的教材,但如此巨大的改变在已经过去的十多年时间里几乎没有存在过。而把这门课程付诸实践,必然会调整数学教师的知识结构和教学方法。这一切都需要相当的勇气和持之以恒的努力。
关于本教材,建议的学时数约为72个左右,各个学校可根据自己的实际情况适当安排。同时,我们建议本课程与“C语言程序设计”课程同期进行教学,而且担任本课程教学的数学教师懂一点C语言知识。我们推荐师生协同的小组合作学习模式,让学生充分地参与到教学过程之中讨论学习内容,并自主完成相应的练习,这样做的效果会比较好。不要低估学生的自主学习能力,相反,要改变的是自己的教学观念、教学设计和课堂管理。而算法部分的许多内容还需要老师组织学生写出相应的C程序,并上机实践。
致谢
首先感谢国内外的许多学者,美国的RichardJohnsonbaugh,David Makinson,Kenneth H.Rosen及中国的邓辉文等。他们的著作给我们提供了重要材料和写作思路。同时也非常感谢珠海城市职业技术学院工程与信息学院院长刘辉珞教授。他不仅深深地知道数学在技术性学科和经济管理中的重要性和应用性,而且对高等职业教育数学课程改革的难度有充分的估计。因此,多年来他一直鼓励我们要抓住高等职业发展教育的契机,从课程和教材建设入手,真正地行动起来,在高等职业教育领域的数学课程建设与教学改革方面做出一些有影响的创新性工作。本书的写作和出版承载着他厚厚的期待。
感谢珠海城市职业技术学院工程与信息学院计算机教研室的所有同事,从与这个集体里众多优秀老师的交流和讨论中,我们获得了许多有益的意见。珠海城市职业技术学院李平老师和人文社科系2009级胡晓珠、陈颖和叶聪玲等同学为本书的写作付出了大量的时间和精力,计算机应用技术专业2011级詹宏棍、曾碧芳等同学也为本书做了得力工作。珠海城市职业技术学院图书信息中心流通阅览部王海英主任为本书提供了重要的参考资料。珠海市第九中学的黎华女士耐心地绘制了本书中绝大多数的图表。在此一并致谢。
也要真诚地感谢帮助自己成长的许多朋友,而以下诸位是不得不提到的。他们是珠海城市职业技术学院原教务处处长张建夕副教授、工程与信息学院陈国康副教授、人文社科系方守金教授、艺术设计系林跃明教授,以及沈国辉老师等。自1993年从湖北大学数学系硕士生研究生毕业到今天,我还能坚持自己的信念,忠于自己的土壤,尽自己的能力做一些有益于学生和学术的事情,这都得益于诸多朋友的提醒、督促和帮助。感谢他们坚定了我的发展方向。
最后要感谢电子工业出版社束传政和朱怀永先生,正是因为他们对高等职业教育数学课程与教材建设有着独到的、前瞻性的认识,才使得本书最终能与广大读者见面。
著者
2013年6月于珠海