◇◇新语丝(www.xys.org)(xys.dxiong.com)(xys.3322.org)(xys.freedns.us)◇◇ 北京工业大学硕士研究生曾毅剽窃的铁证 (方舟子按:以下为BerkeleyWolf整理的曾毅《计算机科学与技术学习反思录》 与Sir《理论计算机科学漫谈》《胡侃学习(理论)计算机》对照。【】为Sir的 文章部分。即使曾毅声称注明了参考过Sir的文章,如此大规模的、赤裸裸的 剽窃仍然是不容否认的,甚至连Sir原文中“我个人的浅见是”之类的表述也 照抄不误,这算什么参考?)   记得当年大一入学,每周四课时高等数学,天天作业不断(那时是七天工作 制)。颇有些同学惊呼走错了门:咱们这到底念的是什么系?不错,你没走错门, 这就是计算机科学与技术系。我国计算机科学系里的传统是培养做学术研究,尤 其是理论研究的人(方向不见得有多大的问题,但是做得不是那么尽如人意)。 而计算机的理论研究,说到底了,如网络安全学,图形图像学,视频音频处理, 哪个方向都与数学有着很大的关系,虽然也许是正统数学家眼里非主流的数学。 【记得当年大一,刚上本科的时候,每周六课时数学分析, 六课时高等代数, 天天作业不断(那时是六日工作制)。颇有些同学惊呼走错了门:咱们这到底念的 是什么系? 不错,你没走错门,这就是(当时的)南大计算机系。系里的传统是 培养做学术研究,尤其是理论研究的人。而 计算机的理论研究,说到底了就是 数学,虽然也许是 正统数学家眼里非主流的数学。】 数学分析这门科学,咱们学计算机的人对它有很复杂的感情。 【数学分析这个东东,咱们学计算机的人对它有很复杂 的感情。】 当年出现的怪现象是:计算机系学生的高中数学基础在全校数一数二(希望没有 冒犯其它系的同学),教学课时数也仅次于数学系,但学完之后的效果却不尽如 人意。难道都是学生不努力吗,我看未见得,方向错了也说不一定,其中原因何 在,发人深思。 【当年出现的怪现象是:计算机系学生的高中 数学基础在全校数一数二(希望没 有冒犯其它系的同学), 教学课时数也仅次于数学系,但学完之后的效果却几 乎是倒数第一。其中原因何在,发人深思。 】   我个人的浅见是:计算机系的学生,对数学的要求固然跟数学系不同,跟物 理类差别则更大。通常非数学专业的所?quot;高等数学",无非是把数学分析中 较困难的理论部分删去,强调套用公式计算而已。而对计算机系来说,数学分析 里用处最大的恰恰是被删去的理论部分。说得难听一点,对计算机系学生而言, 追求算来算去的所谓"工程数学"已经彻底地走进了误区。记上一堆曲面积分的公 式,难道就能算懂了数学?那倒不如现用现查,何必费事记呢?再不然直接用 Mathematica或是Matlab好了。 【我个人的浅见是:计算机类的学生,对数学的要求固然跟数学系不同,跟物理 类差别则更大。通常非数学专业 的所谓“高等数学”,无非是把数学分析中较 困难的理论部分删去,强调套用公式计算而已。而对计算机系来说, 数学分析 里用处最大的恰恰是被删去的理论部分。说得难听一点,对计算机系学生而言, 追求算来算去的所谓 “工科数学一”已经彻底地走进了魔道。记上一堆曲面积 分 的公式,难道就能算懂了数学分析? 】 中文的数学分析书,一般都认为以北大张筑生老师的"数学分析新讲"为最好。张 筑生先生一生写的书并不太多,但是只要是写出来的每一本都是本领域内的杰作, 这本当然更显突出些。这种老书看起来不仅是在传授你知识,而是在让你体会科 学的方法与对事物的认识方法。 【中文的数学分析书,一般都认为以北大张筑生老师的 “数学分析新讲”为最 好。我个人认为南大数学系的“数学 分析教程”也还不错,至少属于典型的南 大风格,咱们 看着亲切。随便学通哪一本都行。 】 万一你的数学实在太好,那就去看菲赫金哥尔茨"微积分学教程"好了--但我认为 没什么必要,毕竟你不想转到数学系去。 【万一你的数学实在 太好,这两本书都吃不饱,那就去看菲赫金哥尔茨的 “微 积分学教程”好了--但我认为没什么必要,毕竟你 不想转到数学系去。 】 吉米多维奇的"数学分析习题集"也基本上是计算型的书籍。书的名气很大,倒不 见得适合我们,还是那句话,重要的是数学思想的建立,生活在信息社会里我们 求的是高效,计算这玩意还是留给计算机吧。 【吉米多维奇的“数学分析习题集”也基本上是计算型的 东东。如果你打算去 考那个什么“工科数学一”,可以 做一做。否则,不做也罢。】   中国的所谓高等代数,就等于线性代数加上一点多项式理论。我以为这有好 的一面,因为可以让学生较早感觉到代数是一种结构,而非一堆矩阵翻来覆去。 这里不得不提南京大学林成森,盛松柏两位老师编的"高等代数",感觉相当舒服。 此书相当全面地包含了关于多项式和线性代数的基本初等结果,同时还提供了一 些有用的又比较深刻的内容,如Sturm序列,Shermon-Morrison公式,广义逆矩 阵等等。可以说,作为本科生如能吃透此书,就可以算是高手。 【中国的所谓高等代数,就等于线性代数加上一点多项式 理论。我以为这有好 的一面,因为可以让学生较早感觉到代数是一种结构,而非一堆矩阵翻来覆去。 当年我们 用林成森,盛松柏两位老师编的“高等代数”,感觉相当舒服,我直 到现在还保留着教材。此书相当全面地包含 了关于多项式和线性代数的基本初 等结果,同时还提供了一些有用的比较深的内容,如Sturm序列,Shermon -Morrison公式,广义逆矩阵等等。可以说,作为本科生如能吃透此书,就可以 算高手。后来它得以在南大出 版社出版,可惜好象并轨以后就没有再用了。】 国内较好的高等代数教材还有清华计算机系用的那本,清华出版社出版,书店里 多多,一看就知道。 【国内较好的高等代数教材还有清华计算机系用的那本, 清华出版社出版,书 店里多多,一看就知道。特点嘛, 跟南大那本差不太多。 】 从抽象代数的观点来看,高等代数里的结果不过是代数系统性质的一些例子而已。 莫宗坚先生的《代数学》里,对此进行了深刻的讨论。然而莫先生的书实在深得 很,作为本科生恐怕难以接受,不妨等到自己以后成熟了一些再读。 【但以上两本书也不能说完美无缺。从抽象代数的观点 来看,高等代数里的结 果不过是代数系统性质的一些 例子而已。莫宗坚先生的“代数学”里,对此进 行了深刻 的讨论。然而莫先生的书实在深得很,作为本科生恐 怕难以接受,不 妨等到自己以后成熟了一些再读。 】   概率论与数理统计这门课很重要,可惜大多数院校讲授这门课都会少些东西。 【概率论与数理统计这门课很重要,可惜少了些东西。 】 少了的东西现在看至少有随机过程。到毕业还没有听说过Markov过程,此乃计算 机系学生的耻辱。没有随机过程,你怎么分析网络和分布式系统?怎么设计随机 化算法和协议?据说清华计算机系开有"随机数学",早就是必修课。 【少了的东西是随机过程。到毕业还没有听说过Markov 过程,此乃计算机系学 生的耻辱。没有随机过程,你怎么分析网络和分布式系统?怎么设计随机化算法 和协议?据说清华计算机系开有“随机数学”,早就是必修课。人家可是工科学 校,作为自以为“理科计算机 系”出身的人,我感到惭愧。】 另外,离散概率论对计算机系学生来说有特殊的重要性。而我们国家工程数学讲 的都是连续概率。现在,美国已经有些学校开设了单纯的"离散概率论"课程,干 脆把连续概率删去,把离散概率讲深些。我们不一定要这么做,但应该更加强调 离散概率是没有疑问的。这个工作我看还是尽早的做为好。 【另外,离散概率对计算机系学生来说有特殊的重要性。 现在,美国已经有些 学校开设了单纯的“离散概率论” 课程,干脆把连续概率删去,把离散概率讲 深些。我们 不一定要这么做,但应该更加强调离散概率是没有疑 问的。 】   计算方法学(有些学校也称为数学分析学)是最后一门由数理学院给我们开 的课。一般学生对这门课的重视程度有限,以为没什么用。不就是照套公式嘛! 其实,做图形图像可离不开它,密码学搞深了也离不开它。而且,在很多科学工 程中的应用计算,都以数值的为主。 【计算方法是最后一门由数学系给我们开的课。一般学生对 这门课的重视程度 有限,以为没什么用。其实,做图形 图像可离不开它。而且,在很多科学工程 中的应用计算, 都以数值的为主。 】 这门课有两个极端的讲法:一个是古典的"数值分析",完全讲数学原理和算法; 另一个是现在日趋流行的"科学与工程计算",干脆教学生用软件包编程。 【这门课有两个极端的讲法:一个是古典的“数值分析”, 完全讲数学原理和 算法;另一个是现在日趋流行的“科学 与工程计算”,干脆教学生用软件包编 程。】      每个学校本系里都会开一门离散数学,涉及集合论,图论,和抽象代数,数 理逻辑。 【本系里,通常开一门离散数学,包括集合论,图论, 和抽象代数,另外再单 开一门数理逻辑。这样安排, 主要由于南大的逻辑传统:系里很多老师都算莫 先生 的门人,就连孙先生都是逻辑专业出身(见孙先生自 述)。 】 不过,这么多内容挤在离散数学一门课里,是否时间太紧了点?另外,计算机系 学生不懂组合和数论,也是巨大的缺陷。要做理论,不懂组合或者数论吃亏可就 太大了。 【不过,这么多内容挤在离散数学一门课里,是否 时间太紧了点?另外,计算 机系学生不懂组合和 数论,也是巨大的缺陷。要做理论,不懂组合或 者数论吃 亏可就太大了。 】 从理想的状态来看,最好分开六门课:集合,逻辑,图论,组合,代数,数论。 这个当然不现实,因为没那么多课时。也许将来可以开三门课:集合与逻辑,图 论与组合,代数与数论。(这方面我们学校已经着手开始做了)不管课怎么开, 学生总一样要学。下面分别谈谈上面的三组内容。 【从理想的状态来看,最好分开六门课:集合, 逻辑,图论,组合,代数,数论。 这个当然不现实, 因为没那么多课时。也许将来可以开三门课:集合 与逻辑, 图论与组合,代数与数论。 不管课怎么开,学生总一样要学。下面分别谈 谈上 面的三组内容。 】   古典集合论,北师大出过一本《基础集合论》不错。 【古典集合论,北师大出过一本“基础集合论”不错。 南大出版朱梧(木贾)老 师的“集合论导引”也许观点更 高些,但他的书形式化得太厉害,念起来吃力。 】   学完以上各书之后,如果你还有精力兴趣进一步深究,那么可以试一下GTM 系列中的《Introduction to Axiomatic Set Theory》和《A Course in Mathematical Logic》。这两本都有世界图书出版社的引进版。你如果能搞定这 两本,可以说在逻辑方面真正入了门,也就不用再浪费时间听我瞎侃了。 【学完以上各书之后,如果你还有精力兴趣进一步 深究,那么可以试一下GTM系 列中的"Introduction to Axiomatic Set Theory"和"A Course of Mathematical Logic"。这两本都有世界图书的引进版。你如果能搞定这两本, 可以说在逻辑方面真正入了门, 也就不用再浪费时间听我瞎侃了。:) 】   据说全中国最多只有三十个人懂图论。此言不虚。 【据说全中国最多只有三十个人懂图论(当年上课时陈道蓄 老师转引张克民老师 的话)。此言不虚。】 图论这门科学,技巧性太强,几乎每个问题都有一个独特的方法,让人头痛。不 过这也正是它魅力所在:只要你有创造性,它就能给你成就感。 【图论这东东, 技巧性太强,几乎每题都有一个独特的方法,让人头痛。 不过 这也正是它魅力所在:只要你有创造性,它就能 给你成就感。所以学图论没什 么好说的,做题吧。 】 国内的图论书中,王树禾老师的"图论及其算法"非常成功(顺便推荐大家王先生 的"数学思想史",个人认为了解科学史会对我们的学习和研究起到很大的推动作 用)。一方面,其内容在国内教材里算非常全面的。另一方面,其对算法的强调 非常适合计算机系(本来就是科大计算机系教材)。有了这本书为主,再参考几本 翻译的,如Bondy & Murty的《图论及其应用》,人民邮电出版社翻译的《图论 和电路网络》等等,就马马虎虎,对本科生绝对足够了。 【国内的图论书中,王树禾老师的“图论及其算法”非常 成功。一方面,其内 容在国内教材里算非常全面的。 另一方面,其对算法的强调非常适合计算机系 (本来就是科大计算机系教材)。有了这本书为主,再参考 几本翻译的,如 Bondy&Murty的“图论及其应用”,邮电出版社翻译的“图论和电路网络”等等, 就马马 虎虎,对本科生足够了。 】 再进一步,世界图书引进有GTM系列的"Modern Graph Theory"。此书确实经典! 国内好象还有一家出版了个翻译版。不过,学到这个层次,还是读原版好(说实 话,主要是亲身体验翻译版的弊端,这个大家自己体会)。搞定这本书,也标志 着图论入了门。 【再进一步,世界图书引进有GTM系列的"Modern Graph Theory"。此书确实经典! 国内好象还有一 家出版了个翻译版。不过,学到这个层次,还是 读原版好。搞 定这本书,也标志着图论入了门,呵呵。 】   组合数学我看的第一本好像是北大捐给我们学院的,一本外版书。感觉没有 太适合的国产书。还是读Graham和Knuth等人合著的经典"具体数学"吧,西安电 子科技大学出版社有翻译版。 【组合感觉没有太适合的国产书。还是读Graham和Knuth 等人合著的经典“具体 数学”吧,有翻译版,西电出的。 】   抽象代数,国内经典为莫宗坚先生的《代数学》。此书听说是北大数学系教 材,深得好评。然而对本科生来说,此书未免太深。可以先学习一些其它的教材, 然后再回头来看"代数学"。国际上的经典可就多了,GTM系列里就有一大堆。推 荐一本谈不上经典,但却最简单的,最容易学的: http://www.math.miami.edu/~ec/book/这本 "Introduction to Linear and Abstract Algebra"非常通俗易懂,而且把抽象代数和线性代数结合起来,对初 学者来说非常理想,我校比较牛的同学都有收藏。 【抽象代数,国内经典为莫宗坚先生的“代数学”。此书 是北大数学系教材, 深得好评。然而对本科生来说, 此书未免太深。可以先学习一些其它的教材, 然后再回头来看“代数学”。国际上的经典可就多了,GTM 系列里就有一大堆。 推荐一本谈不上经典,但却最简 单的,最容易学的: http://www.math.miami.edu/~ec/book/ 这本“Introduction to Linear and Abstract Algebra" 非常通俗易懂,而且把抽象代数和线性代数结合起来, 对 初学者来说非常理想。不过请注意版权问题,不要违反法律噢。 】   数论方面,国内有经典而且以困难著称摹冻醯仁邸?(潘氏兄弟著,北大 版)。再追溯一点,还有更加经典(可以算世界级)并且更加困难的"数论导引"(华 罗庚先生的名著,科学版,九章书店重印,繁体的看起来可能比较困难)。把基 础的几章搞定一个大概,对本科生来讲足够了。但这只是初等数论。本科毕业后 要学计算数论,你必须看英文的书,如Bach的"Introduction to Algorithmic Number Theory"。 【数论方面,国内有经典而且以困难著称的”初等数论“ (潘氏兄弟著,北大 版)。再追溯一点,还有更加经典 (可以算世界级)并且更加困难的”数论导引 “(华罗庚先生 的名著,科学版,九章书店重印)。把基础的几章搞定一个大概, 对本科生来讲足够了。但这只是初等数 论。本科毕业后要学计算数论,你必须 看英文的书, 如Bach的"Introduction to Algorithmic Number Theory"。 】   计算机科学理论的根本,在于算法。现在很多系里给本科生开设算法设计与 分析,确实非常正确。环顾西方世界,大约没有一个三流以上计算机系不把算法 作为必修的。 【理论计算机的根本,在于算法。现在系里给本科生 开设算法设计与分析,确 实非常正确。环顾西方世界, 大约没有一个三流以上计算机系不把算法作为必 修的。 】 算法教材目前公认以Corman等著的《Introduction to Algorithms》为最优。对 入门而言,这一本已经足够,不需要再参考其它书。 【算法教材目前公认以Corman等著的"Introduction to Algorithms"为最优。对 入门而言,这一本已经足够,不需要再参考其它书。南大曾翻译出版此书,中文 名 为”现代计算机常用数据结构与算法“。pie好象提供了 网上课程的link, 我也就不用废话。 】   再说说形式语言与自动机。我看过北邮的教材,应该说写的还清楚。有一本 通俗易懂的好书,MIT的sipser的 《introduction to theory of computation》。但是,有一点要强调:形式语言和自动机的作用主要在作为计 算模型,而不是用来做编译。事实上,编译前端已经是死领域,没有任何 open problems,北科大的班晓娟博士也曾经说过,编译的技术已相当成熟。如果为了 这个,我们完全没必要去学形式语言--用用yacc什么的就完了。北邮的那本在国 内还算比较好,但是在深度上,在跟可计算性的联系上都有较大的局限,现代感 也不足。所以建议有兴趣的同学去读英文书,不过国内似乎没引进这方面的教材。 【最后说说形式语言与自动机。我们用过北邮的教材, 应该说写的还清楚。但 是,有一点要强调:形式语言和自动机的作用主要在作为计算模型,而不是用来 做编译。事实上,编译前端已经是死领域,没有任何 open problem。如果为了 这个,我们完全没必要去学 形式语言--用用yacc什么的就完了。北邮的那本, 在深度上,在跟可计算性的联系上都有较大的局限,现代 感也不足。所以建议 有兴趣的同学去读英文书......不过英文书中好的也不多,而且国内似乎没引进 这方面的 教材。 】 可以去互动出版网上看一看。入门以后,把形式语言与自动机中定义的模型,和 数理逻辑中用递归函数定义的模型比较一番,可以说非常有趣。现在才知道,什 么叫"宫室之美,百官之富"! 【入门以后,把形式语言与自动机中定义的模型,和 数理逻辑中用递归函数定 义的模型比较一番,可以 说非常有趣。现在才知道,什么叫”宫室之美,百官 之富“! 】   计算机科学和数学的关系有点奇怪。二三十年以前,计算机科学基本上还是 数学的一个分支。而现在,计算机科学拥有广泛的研究领域和众多的研究人员, 在很多方面反过来推动数学发展,从某种意义上可以说是孩子长得比妈妈还高了。 但不管怎么样,这个孩子身上始终流着母亲的血液。这血液是the mathematical underpinning of computer science(计算机科学的数学基础),也就是理论计算 机科学。 【计算机科学和数学的关系有点奇怪。二三十年以前,计算机科学基本上还是数 学的一个分支。而现在,计算机科学拥有广泛的研究领域和众多的研究人员,在 很多方面反过来推动 数学发展,从某种意义上可以说是孩子长得比妈妈还高了。 但不管怎么样,这个孩子身上始终流着母亲的血液。这血液是the mathematical underpi nning of computer science(计算机科学的数学基础),-- 也就是理论 计算机科学。现代计算机科学和数学的另一个交叉是计算数学/数值分析/科学计 算,传统上不包含在理 论计算机科学以内。所以本文对计算数学全部予以忽略。 】   最常和理论计算机科学放在一起的一个词是什么?答:离散数学。这两者的 关系是如此密切,以至于它们在不少场合下成为同义词。(这一点在前面的那本 书中也有体现)传统上,数学是以分析为中心的。数学系的同学要学习三四个学 期的数学分析,然后是复变函数,实变函数,泛函数等等。实变和泛函被很多人 认为是现代数学的入门。在物理,化学,工程上应用的,也以分析为主。 【最常和理论计算机科学放在一起的一个词是什么?答:离散数学。这两者的关 系是如此密 切,以至于它们在不少场合下成为同义词。传统上,数学是以分析 为中心的。数学系的同学要学习三四个学期的数学分析,然后是复变,实变,泛 函等等。实变和泛函被很多人认为是现代数学的入门。在物理,化学,工程 上 应用的,也以分析为主。 】   随着计算机科学的出现,一些以前不太受到重视的数学分支突然重要起来。 人们发现,这些分支处理的数学对象与传统的分析有明显的区别:分析研究的问 题解决方案是连续的,因而微分,积分成为基本的运算;而这些分支研究的对象 是离散的,因而很少有机会进行此类的计算。人们从而称这些分支为"离散数学"。 "离散数学"的名字越来越响亮,最后导致以分析为中心的传统数学分支被相对称 为"连续数学"。 【随着计算机科学的出现,一些以前不太受到重视的数学分支突然重要起来。人 们发现,这 些分支处理的数学对象与传统的分析有明显的区别:分析研究的对 象是连续的,因而微分,积分成为基本的运算;而这些分支研究的对象是离散的, 因而很少有机会进行此类的计算。人们从而称这些分支为“离散数学”。“离散 数学”的名字越来越响亮,最后导致以 分析为中心的传统数学分支被相对称为 “连续数学”。 】   离散数学经过几十年发展,基本上稳定下来。一般认为,离散数学包含以下 学科: 1) 集合论,数理逻辑与元数学。这是整个数学的基础,也是计算机科学的基础。 2) 图论,算法图论;组合数学,组合算法。计算机科学,尤其是理论计算机科 学的核心是算法,而大量的算法建立在图和组合的基础上。 3) 抽象代数。代数是无所不在的,本来在数学中就非常重要。在计算机科学中, 人们惊讶地发现代数竟然有如此之多的应用。 【离散数学经过几十年发展,基本上稳定下来。一般认为,离散数学包含以下学 科: 1) 集合论,数理逻辑与元数学。这是整个数学的基础,也是计算机科学的 基础。 2) 图论,算法图论;组合数学,组合算法。计算机科学,尤其是理论计 算机科学的核心是 算法,而大量的算法建立在图和组合的基础上。 3) 抽象代 数。代数是无所不在的,本来在数学中就非常重要。在计算机科学中,人们惊讶 地发现代数竟然有如此之多的应用。 】  但是,理论计算机科学仅仅就是在数学的上面加上"离散"的帽子这么简单吗? 一直到大约十几年前,终于有一位大师告诉我们:不是。D.E.Knuth(他有多伟大, 我想不用我再说了)在Stanford开设了一门全新的课程Concrete Mathematics。 Concrete这个词在这里有两层含义: 【但是,理论计算机科学仅仅就是在数学的上面加上“离散”的帽子这么简单吗? 一直到大约十几年前,终于有一位大师告诉我们:不是。 D.E.Knuth(他有多伟 大,我想不用我废话了)在Stanford开设了一门全新的课程Concrete Mathematics。 Concrete这个词在这里有两层含义: 】   首先:对abstract而言。Knuth认为,传统数学研究的对象过于抽象,导致 对具体的问题关心不够。他抱怨说,在研究中他需要的数学往往并不存在,所以 他只能自己去创造一些数学。为了直接面向应用的需要,他要提倡"具体"的数学。 在这里我做一点简单的解释。例如在集合论中,数学家关心的都是最根本的问题 --公理系统的各种性质之类。而一些具体集合的性质,各种常见集合,关系,映 射都是什么样的,数学家觉得并不重要。然而,在计算机科学中应用的,恰恰就 是这些具体的东西。Knuth能够首先看到这一点,不愧为当世计算机第一人。其 次, Concrete是Continuous(连续)加上discrete(离散)。不管连续数学还是离 散数学,只要是能与我们研究的内容挂上钩的都是有用的数学! 【第一,针对abstract而言。Knuth认为,传统数学研究的对象过于抽象,导致 对具体的问题关心不够。他抱怨说,在研究中他需要的数学往往并不存在,所以 他只能自己去创造一些 数学。为了直接面向应用的需要,他要提倡“具体”的 数学。在这里我做一点简单的解释。例如在集合论中,数学家关心的都是最根本 的问题--公理系统的各种性质之类。而一些具体集合的性质,各种常见集合,关 系,映射都是什么样的,数学家觉得并不重要。然而,在计算机科学中应用的, 恰恰就是这些具体的东西。Knuth能 够首先看到这一点,不愧为当世计算机第一 人。第二,Concrete是Continuous(连续)加上discrete(离散)。不管连续数学还 是离散数学, 都是有用的数学! 】 前面主要是从数学角度来看的。从计算机角度来看,理论计算机科学目前主要的 研究领域包括:可计算性理论,算法设计与复杂性分析,密码学与信息安全,分 布式计算理论,并行计算理论,网络理论,生物信息计算,计算几何学,程序语 言理论等等。这些领域互相交叉,而且新的课题在不断提出,所以很难理出一个 头绪来。想搞搞这方面的工作,推荐看中国计算机学会的一系列书籍,至少代表 了我国的权威。下面随便举一些例子。 【前面主要是从数学角度来看的。从计算机角度来看,理论计算机科学目前主要 的研究领域 包括:可计算性理论,算法设计与复杂性分析,密码学与信息安全, 分布式计算理论,并行计算理论,网络理论,生物信息计算,计算几何学,程序 语言理论等等。这些领域互相 交叉,而且新的课题在不断提出,所以很难理出 一个头绪来。下面随便举一些例子。 】   由于应用需求的推动,密码学现在成为研究的热点。密码学建立在数论(尤 其是计算数论),代数,信息论,概率论和随机过程的基础上,有时也用到图论 和组合学等。很多人以为密码学就是加密解密,而加密就是用一个函数把数据打 乱。这样的理解太浅显了。 现代密码学至少包含以下层次的内容: 第一,密码学的基础。例如,分解一个大数真的很困难吗?能否有一般的工具证 明协议正确? 第二,密码学的基本课题。例如,比以前更好的单向函数,签名协议等。 第三,密码学的高级问题。例如,零知识证明的长度,秘密分享的方法。 第四,密码学的新应用。例如,数字现金,叛徒追踪等。 【由于应用需求的推动,密码学现在成为研究的热点。密码学建立在数论(尤其 是计算数论) ,代数,信息论,概率论和随机过程的基础上,有时也用到图论和 组合学等。很多人以为密码学就是加密解密,而加密就是用一个函数把数据打乱。 这就大错特错了。 现代密码学至少包含以下层次的内容:第一,密码学的基础。 例如,分解一个大数真的很困难吗?能否有一般的工具证明协议正 确?第二, 密码学的基本课题。例如,比以前更好的单向函数,签名协议等。 第三,密码 学的高级问题。例如,零知识证明的长度,秘密分享的方法。第四,密码学的新 应用。例如,数字现金,叛徒追踪等。 】 在分布式系统中,也有很多重要的理论问题。例如,进程之间的同步,互斥协议。 一个经典的结果是:在通信信道不可靠时,没有确定型算法能实现进程间协同。 所以,改进TCP三次握手几乎没有意义。例如时序问题。常用的一种序是因果序, 但因果序直到不久前才有一个理论上的结果....例如,死锁没有实用的方法能完 美地对付。例如,......操作系统研究过就自己去举吧! 【在分布式系统中,也有很多重要的理论问题。例如,进程之间的同步,互斥协 议。一个经典的结果是:在通信信道不可靠时,没有确定 型算法能实现进程间 协同。所以,改进TCP三次握手几乎没有意义。例如时序问题。常用的一种序是 因果序,但因果序直到不久前才有一个理论上的结果.... .. 例如,死锁没有实 用的方法能完美地对付。例如,...... 】   如果计算机只有理论,那么它不过是数学的一个分支,而不成为一门独立的 科学。事实上,在理论之外,计算机科学还有更广阔的天空。 我一直认为,4年 根本不够学习计算机的基础知识,因为面太宽了 【如果计算机只有理论,那么它不过是数学的一个分支,而 不成为一门独立的 科学。事实上,在理论之外,计算机 科学还有更广阔的天空。我一直认为,4年 根本不够学习 计算机的基础知识,因为面太宽了...... 】   一个一流计算机系的优秀学生决不该仅仅是一个编程高手,但他一定首先是 一个编程高手。我上大学的时候,第一门专业课是C语言程序设计,念计算机的 人从某种角度讲相当一部分人是靠写程序吃饭的。 【一个一流计算机系的优秀学生决不该仅仅是一个编程高 手,但他一定首先是 一个编程高手。 我上大学的时候,第一门专业课时程序设计,现在好象 改成了 计算机科学导论?不管叫什么名字,总之,念计 算机的人就是靠程序吃饭。 】 在我们北京工业大学实验学院计算机系里一直有这样的争论(时至今日CSDN上也 有),关于第一程序设计语言该用哪一种。我个人认为,用哪种语言属于末节, 关键在养成良好的编程习惯。当年老师对我们说,打好基础后学一门新语言只要 一个星期。现在我觉得根本不用一个星期,前提是先把基础打好。 【去年在计算机系版有过一场争论,关于第一程序设计语言 该用哪一种。我个 人认为,用哪种语言属于末节,关键在 养成良好的编程习惯。当年老师对我们 说,打好基础后 学一门新语言只要一个星期。现在我觉得根本不用一个 星期-- 前提是先把基础打好。 】 不要再犹豫了,学了再说,等你抉择好了,别人已经会了几门语言了。   模拟电路这个学科,如今不仅计算机系学生搞不定,电子系学生也多半害怕。 如果你真想软硬件通吃,那么建议你先看看邱关源的"电路原理",也许此后再看 模拟电路底气会足些。教材:康华光的"电子技术基础"(高等教育出版社)还是 不错的(我校电子系在用)。有兴趣也可以参考童诗白的书。 【模拟电路这东东,如今不仅计算机系学生搞不定, 电子系学生也多半害怕。 如果你真想软硬件通吃,那么 建议你先看看邱关源的“电路原理”,也许此后 再看模拟 电路底气会足些。 教材:康华光的“电子技术基础”还是不错的。有 兴趣也 可以参考童诗白的书。 】   数字电路比模拟电路要好懂得多。推荐大家看一看北京工业大学刘英娴教授 写的《数字逻辑》。业绩人士都说这本书很有参考价值(机械工业出版社的)。 原因很明了,实用价值高,能听听她讲授的课程更是有一种"享受科学"的感觉。 清华大学阎石的书也算一本好教材,遗憾的一点是集成电路讲少了些。真有兴趣, 看一看大规模数字系统设计吧(北航那本用的还比较多)。 【数字电路比模拟电路要好懂得多。阎石的书也算一本好 教材,遗憾的一点是 集成电路讲少了些。真有兴趣,到 东南无线电系去旁听他们的课。】   计算机系统结构该怎么教,国际上还在争论。国内能找到的较好教材为 Stallings的《Computer Organization and Architecture:Designing for Performance》(清华影印本)。国际上最流行的则是《Computer architecture: aquantitative approach》, by Patterson & Hennessy。 【计算机系统结构该怎么教,国际上还在争论。国内能找 到的较好教材为 Stallings的"Computer Organization and Architecture:Designing for Performance"(清华影印 本)。国际上最流行的则是“Computer architecture: a quantitative approach", by Patterson & Hennessy。 】 学数据库要提醒大家的是,会用VFP,VB, Power builder不等于懂数据库。(这 世界上自以为懂数据库的人太多了!)数据库设计既是科学又是艺术,数据库实 现则是典型的工程。所以从某种意义上讲,数据库是最典型的一门计算机课程-- 理工结合,互相渗透。 【学数据库的第一意义是告诉你,会用VFP编程不等于懂 数据库。(这世界上自 以为懂数据库的人太多了!)数据库设计既是科学又是艺术,数据库实现则是典 型的工程。 所以从某种意义上讲,数据库是最典型的一门计算机课 --理工结合, 互相渗透。推荐教材:Silberschatz, et al., "Database System Concepts". 】 推荐教材:Abraham Silberschatz等著的 "Database System Concepts". 【推荐教材:Silberschatz, et al., "Database System Concepts". 】   计算机网络的标准教材还是来自Tanenbaum的《Computer Networks》(清华 大学有译本)。 【操作系统可以随便选用Tanenbaum的"Operating System Design and Implementation"和"Modern Operating System"两书之一。这两部都可以算经典, 唯一缺点 就是理论上不够严格。不过这领域属于Hardcore System, 所以在理论 上马虎一点也情有可原。 】 不过,网络也属于Hardcore System,所以光看书是不够的。建议多读RFC, http://www.ietf.org/rfc.html里可以按编号下载RFC文档。从IP的读起。等到 能掌握10种左右常用协议,就没有几个人敢小看你了。再做的工作我看放在网络 设计上就比较好了。 【网络的标准教材还是来自 Tanenbaum:”Computer Networks"(清华影印本)。 不过,网络也属于Hardcore System,所以光看书是不够的。建议多读RFC,从 IP的读起。等到能掌握10种左右常用协议,就没有几个 人敢小看你了。 】 (XYS20041216) ◇◇新语丝(www.xys.org)(xys.dxiong.com)(xys.3322.org)(xys.freedns.us)◇◇