数学与计算机专业课程效果分析

举报
资源描述
专业课程效果分析“学计算机一定要数学好,计算机与数学密切相连”“计算机根本上是数学的和哲学的.“计算机科学是数学和哲学的女儿一些计算机相关专业,也开设分析和高代,每周六课时数学分析,六课时高等代数,天天作业不断(那时是六日工作制)。颇有些同学惊呼走错了门:咱们这到底念的是什么系?不错,你没走错门,这就是(当时的)南大计算机系。系里的传统是培养做学术研究,尤其是理论研究的人。而计算机的理论研究,说到底了就是数学,虽然也许是正统数学家眼里非主流的数学。数学分析这个课程,学计算机的人对它有很复杂的感情。爱它在于它是第一门,也是学分最多的一门数学课,又长期为考研课程。9 4以前可以选考数学分析与高等代数,以后则并轨到著名的所谓“工科数学一”。其重要性可见一斑。恨它则在于它好像难得有用到的机会,而且思维跟咱们平常做的这些离散/有限的工作截然不同。当年出现的怪现象是:一般来说,计算机系学生的高中数学基础在全校数一数二,教学课时数也仅次于数学系,但学完之后的效果却几乎是倒数第一。其中原因何在,发人深思。个人的浅见是:计算机类的学生,对数学的要求固然跟数学系不同,跟物理类差别则更大。通常非数学专业的所谓“高等数学”,无非是把数学分析中较困难的理论部分删去,强调套用公式计算而已。而对计算机系来说,数学分析里用处最大的恰恰是被删去的理论部分。说得难听一点,对计算机系学生而言,追求算来算去的所谓“工科数学一”已经彻底地走进了魔道。记上一堆曲面积分的公式,难道就能算懂了数学分析?吉米多维奇的“数学分析习题集”也基本上是计算型的资料。如果你打算去考那个什么“工科数学一”,可以做一做。否则,不做也罢。中国的所谓高等代数,就等于线性代数加上一点多项式理论。我以为这有好的一面,因为可以让学生较早感觉到代数是一种结构,而非一堆矩阵翻来覆去。高等代数相当全面地包含了关于多项式和线性代数的基本初等结果,同时还提供了一些有用的比较深的内容,如Sturm序列,Shermon-Morrison公式,广义逆矩阵等等。可以说,作为本科生如能吃透此书,就可以算高手。从国内教材看,各有千秋。从抽象代数的观点来看,高等代数里的结果不过是代数系统性质的一些例子而已。莫宗坚先生的“代数学”里,对此进行了深刻的讨论。然而莫先生的书实在深得很,作为本科生恐怕难以接受,不妨等到自己以后成熟了一些再读。概率论与数理统计这门课很重要,可惜少了些东西。少了的东西是随机过程。到毕业还没有听说过Markov过程,此乃计算机系学生的耻辱。没有随机过程,你怎么分析网络和分布式系统?怎么设计随机化算法和协议?据说清华计算机系开有“随机数学”,早就是必修课。计算方法,一般学生对这门课的重视程度有限,以为没什么用。其实,做图形图像可离不开它。而且,在很多科学工程中的应用计算,都以数值的为主。这门课有两个极端的讲法一个是古典的“数值分析”,完全讲数学原理和算法另一个是现在日趋流行的“科学与工程计算”,干脆教学生用软件包编程。不过,只要你有机会在自己的电脑上装个matlab之类,完全可以无师自通。离散数学,包括集合论,图论,和抽象代数,不过,这么多内容挤在离散数学一门课里,是否时间太紧了点?另外,计算机系学生不懂组合和数论,也是巨大的缺陷。要做理论,不懂组合或者数论吃亏可就太大了。从理想的状态来看,最好分开六门课:集合,逻辑,图论,组合,代数,数论。这个当然不现实,因为没那么多课时。也许将来可以开三门课:集合与逻辑,图论与组合,代数与数论。不管课怎么开,学生总一样要学。总的来说,学集合/逻辑起手不难,但越往后越感觉深不可测。建议有兴趣的同学读读“数学基础引论”此书有点时间简史的风格,讲到精彩处,所谓“天花乱坠,妙雨缤纷”,令人目不暇接。读完以后,你对这些数学/哲学中最根本的问题有了个大概了解,也知道了山有多高,海有多深。学完以上各书之后,如果你还有精力兴趣进一步深究,那么可以试一下GTM系列中的 Introduction to Axiomatic Set Theory 和 A Course of MathematicalLogiCo这两本都有世界图书的引进版。你如果能搞定这两本,可以说在逻辑方面真正入了门。据说全中国最多只有三十个人懂图论,此言不虚。图论,技巧性太强,几乎每题都有一个独特的方法,让人头痛。不过这也正是它魅力所在:只要你有创造性,它就能给你成就感。所以学图论没什么好说的,做题吧。信息安全 数 学 基 础(抽象代数与数论),国内有经典而且以困难著称的“初等数论”(潘氏兄弟著,北大版)。再追溯一点,还有更加经典(可以算世界级)并且更加困难的“数论导引”(华罗庚先生的名著,科学版,九章书店重印)。把基础的几章搞定一个大概,对本科生来讲足够了。但这只是初等数论。本科毕业后要学计算数论,你必须看英文的书,如 Bach 的 Introduction to Algorithmic Number Theory 理论计算机的根本,在于算法。现在系里给本科生开设算法设计与分析,确实非常正确。环顾西方世界,大约没有一个三流以上计算机系不把算法作为必修的。学习计算机理论之外如果计算机只有理论,那么它不过是数学的一个分支,而不成为一门独立的科学。事实上,在理论之外,计算机科学还有更广阔的天空。我一直认为,4 年根本不够学习计算机的基础知识,因为面太宽了。一个一流计算机系的优秀学生决不该仅仅是一个编程高手,但他一定首先是一个编程高手。我上大学的时候,第一门专业课时程序设计,现在好像改成了计算机科学导论?不管叫什么名字,总之,念计算机的人就是靠程序吃饭。在计算机系版有过一场争论,关于第一程序设计语言该用哪一种。我个人认为,用哪种语言属于末节,关键在养成良好的编程习惯。当年老师对我们说,打好基础后学一门新语言只要一个星期。现在我觉得根本不用一个星期前提是先把基础打好。数据结构有两种不同的上法:一种把它当成降低要求的初级算法课,另一种把它当成高级的程序设计课。现在国内的课程好像介乎两者之间,而稍偏向前者。个人认为,假如已经另有必修的算法课,恐怕后一个目的更重要些。国内流行的数据结构书也有两种:北大的红皮书(许卓群等著,高教版)和清华的绿皮书(严蔚敏等著,清华版)。两书差距不大。红皮书在理论上稍深一些,当然离严格的算法书还差好远。绿皮书更易接受些,而且佩有一本不错的习题集,但我觉得它让学生用伪代码写作业恐怕不见得太好。最好还是把算法都code以后debug一番,才能锻炼编程能力。汇编预言和微机原理是两门特烦人的课。你的数学/理论基础再好,也占不到什么便宜。这两门课之间的次序也好比先有鸡还是先有蛋,无论你先学哪门,都会牵扯另一门课里的东西。所以,只能静下来慢慢琢磨。这就是典型的工程课,不需要太多的聪明和顿悟,却需要水滴石穿的渐悟。有关这两门课的书,电脑书店里不难找到。弄几本最新的,对照着看吧。模拟电路,如今不仅计算机系学生搞不定,电子系学生也多半害怕。如果你真想软硬件通吃,那么建议你先看看邱关源的“电路原理”,也许此后再看模拟电路底气会足些。教材:康华光的“电子技术基础”还是不错的。有兴趣也可以参考童诗白的书。操 作 系 统 可 以 随 便 选 用Tanenbaum的Operating System Design andImplementation和Modern Operating System两书之一。这两部都可以算经典,唯一缺点就是理论上不够严格。不过这领域属于Hardcore System,所以在理论上马虎一点也情有可原。如果先把形式语言学好了,则编译原理中的前端我看只要学四个算法:最容易实现的递归下降 最好的自顶向下算法LL(k1最好的自底向上算法LR(k LR(1)的 简 化SLR(也 许 还 有 另 一 简 化LALR?)。后端完全属于 工 程 性 质,自然又是another story o学数据库的第一意义是告诉你,会用VFP编程不等于懂数据库。(这世界上自以为懂数据库的人太多了!)数据库设计既是科学又是艺术,数据库实现则是典型的工程。所以从某种意义上讲,数据库是最典型的一门计算机课理工结合,互相渗透。最后声明:前面的经验只针对本科阶段的学习。即使把这些全弄通了,前面的路还长。理论计算机科学漫谈计算机科学和数学的关系有点奇怪。二三十年以前,计算机科学基本上还是数学的一个分支。而现在,计算机科学拥有广泛的研究领域和众多的研究人员,在很多方面反过来推动数学发展,从某种意义上可以说是孩子长得比妈妈还高To但 不 管 怎 么 样,这 个 孩 子 身 上 始 终 流 着 母 亲 的 血 液。这 血 液 是 themathematical underpinning of computer science(计算机科学的数学基础)也就是理论计算机科学。现代计算机科学和数学的另一个交叉是计算数学/数值分析/科学计算,传统上不包含在理论计算机科学以内。所以本文对计算数学全部予以忽略。最常和理论计算机科学放在一起的一个词是什么?答:离散数学。这两者的关系是如此密切,以至于它们在不少场合下成为同义词。传统上,数学是以分析为中心的。数学系的同学要学习23个学期的数学分析,然后是复变,实变,泛函等等。实变和泛函被很多人认为是现代数学的入门。在物理,化学,工程上应用的,也以分析为主。随着计算机科学的出现,一些以前不太受到重视的数学分支突然重要起来。人们发现,这些分支处理的数学对象与传统的分析有明显的区别:分析研究的对象是连续的,因而微分,积分成为基本的运算;而这些分支研究的对象是离散的,因而很少有机会进行此类的计算。人们从而称这些分支为“离散数学”。“离散数学”的名字越来越响亮,最后导致以分析为中心的传统数学分支被相对称为“连续数学”。离散数学经过几十年发展,基本上稳定下来。一般认为,离散数学包含以下学科:1)集合论,数理逻辑与元数学。这是整个数学的基础,也是计算机科学的基础。2)图论,算法图论;组合数学,组合算法。计算机科学,尤其是理论计算机科学的核心是算法,而大量的算法建立在图和组合的基础上3)抽象代数。代数是无所不在的,本来在数学中就非常重要。在计算机科学中,人们惊讶地发现代数竟然有如此之多的应用。但是,理论计算机科学仅仅就是在数学的上面加上“离散”的帽子这么简单吗?一直到大约十几年前,终于有一位大师告诉我们:不是。D.E.Knuth(他有多伟大,我想不用我废话了)在Stanford开设了一门全新的课程Concrete Mathematics Concrete这个词在这里有两层含义:第一,针 对 abstract而言。Knuth认为,传统数学研究的对象过于抽象,导致对具体的问题关心不够。他抱怨说,在研究中他需要的数学往往并不存在,所以他只能自己去创造一些数学。为了直接面向应用的需要,他要提倡“具体 的数学。在这里我做一点简单的解释。例如在集合论中,数学家关心的都是最根本的问题-公理系统的各种性质之类。而一些具体集合的性质,各种常见集合,关系,映射都是什么样的,数学家觉得并不重要。然而,在计算机科学中应用的,恰恰就是这些具体的东西。Knuth能够首先看到这一点,不愧为当世计算机第一人。第二,Concrete是 Continuous(连续)力 口 上 discrete(离散)。不管连续数学还是离散数学,都是有用的数学!前面主要是从数学角度来看的。从计算机角度来看,理论计算机科学目前主要的研究领域包括:可计算性理论,算法设计与复杂性分析,密码学与信息安全,分布式计算理论,并行计算理论,网络理论,生物信息计算,计算几何学,程序语言理论等等。这些领域互相交叉,而且新的课题在不断提出,所以很难理出一个头绪来。下面随便举一些例子。由于应用需求的推动,密码学现在成为研究的热点。密码学建立在数论(尤其是计算数论),代数,信息论,概率论和随机过程的基础上,有时也用到图论和组合学等。很多人以为密码学就是加密解密,而加密就是用一个函数把数据打乱。这就大错特错了。现代密码学至少包含以下层次的内容:第一,密码学的基础。例如,分解一个大数真的很困难吗?能否有
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关资源
正为您匹配相似的精品文档
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号