计算机科学与技术专业优秀教材与参考书介绍

高等教育学科组成的滞后性是国内外高等教育界公认的定论,而由于计算机科学与技术学科前沿发展的速度决定了这个问题在本学科内就更为突出。如何解决这一问题是世界公认题。自从《作为学科的计算科学》报道经过美计算机协会(ACM)教育委员会通过并向全世界发布后,美国各个大学计算机科学学科在基础学科课程教学改革方面走在了最前沿。

      如果说我国教育界现在的力量还不足以引进大批国外本学科相当出色的大师来讲学,那么采用国外优秀教材应当是快速改革不合理的教学内容以及涉足学科新内容的最行之有效的方法之一。对于处在高校中的学生,如果我们不能够改变中国的高等教育,那么我们可以改变对待所接受的高等教育的学习方式。在课下参考本课程领域内的经典教材进行深入的自学也成为补充课堂所讲内容无法涉及的理论与实践知识的必要手段。为此,我打算撰一篇《计算机科学与技术专业优秀教材与参考书介绍》的文章。将分为三个专题向大家介绍:


第一部分为:算法与计算理论

第二部分为:程序设计语言

第三部分为:其他基础课程与专业课程相关书籍推荐

一。算法与计算理论专题



      倘若你去问一个木匠学徒:你需要什么样的工具进行工作,他可能会回答你:“我只要一把锤子和一个锯”。但是如果你去问一个老木工或者是大师级的建筑师,他会告诉你“我需要一些精确的工具”。由于计算机所解决的问题都是从生活中抽象出来的问题,其复杂性不言而喻,所以我们需要这样精确有效的工具去解决现实生活中的复杂问题。算法、数据结构都是程序设计中必不可少的精确工具。算法的重要性是每一个计算机专业的大学生都十分清楚的。

      程序设计当中解决的相当一部分问题都会涉及各种各样的科学计算,这需要程序员具有什么样的基础呢?实际问题转换为程序,要经过一个对问题抽象的过程,建立起完善的数学模型,只有这样,我们才能建立一个设计良好的程序。从中我们不难看出计算数学在程序设计领域的重要性。

      算法与计算理论是计算机程序设计领域的灵魂所在,是发挥程序设计者严谨,敏锐思维的有效工具。任何的程序设计语言都试图将之发挥得淋漓尽致。作为计算机专业软件相关无可厚非的最重要基础类核心课程,我们首先对于这个领域的优秀参考进行一个推荐。

----------------------------------------------------------------------------------

 算法导论(第二版影印版) 

英文名称:Introduction to Algorithms

作者:Thomas H. Cormen ,Charles E. Leiserson ,Ronald L. Rivest ,Clifford Stein

      本书的主要作者来自麻省理工大学计算机,作者之一Ronald L.Rivest 由于其在公开秘钥密码算法RSA上的贡献获得了图灵奖。这本书目前是算法的标准教材,美国许多名校的计算机系都使用它,国内有些院校也将本书作为算法课程的教材。另外许多专业人员也经常引用它。本书基本包含了所有的经典算法,程序全部由伪代码实现,这更增添了本书的通用性,使得利用各种程序设计语言进行程序开发的程序员都可以作为参考。语言方面通俗,很适合作为算法教材和自学算法之用。国内的很多作品名为数据结构,从本书中断章取义,把数据结构与算法混为一谈,搞得作者自己都迷迷糊糊。这也是不十分愿意向大家推荐国内作品的原因。你会发现,现在基本上所有的数据结构与算法书籍都会将本书作为参考文献之一,更可以说明一个问题,本书是作为读者进行算法学习的最佳选择。作为本书的补充内容,我愿意向大家推荐下面的学习资料:你可以通过这个地址找到本书的所有练习答案:http://www.itu.dk/people/beetle/ 。为了更好的学习本书中的内容,最好的指导当然是来自作者本身讲述本书的课程,读者们可以通过下列地址获得课程的录像。

http://18.89.1.101/sma/5503fall2001/index5503fall2001.html

      哦,你也许会对我说:“天哪,《  算法导论(第二版影印版) 》上面都是伪代码,我程序设计功底没有那么强啊”。是的,对于大部分的大学生来说的确存在一个很严峻的问题,就是程序设计还没有坚实的基础,而你此时需要掌握一些算法知识,那么这个时候一本带有理论的具体语言实现的指导教材便是绝佳的参考:

----------------------------------------------------------------------------------  

 算法Ⅰ-Ⅳ(C++实现)——基础、数据结构、排序和搜索(第三版) 

       此书属于Algorithms in C++系列中的一本。作者都是普林斯顿大学计算机系赫赫有名的教授Robert Sedgewick, 他是Donald.E.Knuth大师们下的高徒。算法理论方面并不逊色于CLRS,对于初学者来说附带理论关键部分的原程序是个很好的参考,这系列书提供了两个语言版本:分别为C++和Java程序员和学习者量身定做。Java版本的叫做Alogorithms in Java,国内清华大学出版社引进了本书并出版了影印版:《  JAVA算法(影印版)(第3版 第1卷) 》。作为专门语言的算法书籍参考,这两本也是我唯一愿意向大家推荐的。可以作为《算法导论》一书的补充。

      如果将《算法导论》称作“计算机算法的圣经”那么《计算机程序设计艺术》当之无愧的称为“计算机程序设计理论的荷马史诗”。

----------------------------------------------------------------------------------  

《计算机程序设计艺术》
包含:《  计算机程序设计艺术 第1卷 基本算法 (第3版) 》、《  计算机程序设计艺术 第2卷 半数值算法(第3版) 》、《  计算机程序设计艺术 第3卷 排序与查找 (第2版) 

英文名称:The Art of Computer Programming

作者:Donald.E.Knuth

    Donald.E.Knuth人生最辉煌的时刻在斯坦福大学计算机系渡过,美国计算机协会图灵奖的获得者,是本领域内当之无愧的泰斗。被简称为TAOCP的这本巨著内容博大精深,几乎涵盖了计算机程序设计算法与理论最重要的内容。现在发行的只有三卷,分别为基础运算法则,半数值算法,以及分拣和搜索。总共应当有7卷。以我个人对本系列书的把握,大家除了可以如其它书籍那样阅读本书,也可以将其作为计算机程序设计的字典。毕竟内容涵盖实在是太广泛,相当的内容未见得你能够用上,还是那句话,按需吧。看本书时最关注的应当是作者严谨的思维方法。每个人都有自己的读书方法,一些大师们说应当顺序读本书,因为它被写得简直就像是诗,然而这还要看大家个人的体会。至于本书的价值我觉得Bill Gates先生的话足以说明问题:“如果你认为你是一名真正优秀的程序员读Knuth的《计算机程序设计艺术》,如果你能读懂整套书的话,请给我发一份你的简历”。作者数学方面的功底造就了本书严谨的风格,虽然本书不是用当今流行的程序设计语言描述的,但这丝毫不损伤它“程序设计史诗”的地位。道理很简单,它内涵的设计思想是永远不会过时的。除非英语实在有困难,否则建议读者选用英文版。

----------------------------------------------------------------------------------  

离散数学在计算机数学理论领域的位置显然是首屈一指的,首先向大家推荐的就是:

 离散数学及其应用(原书第4版) 

英文名称:Discrete Mathematics and Its Applications,Fourth Edition

作者:Kenneth H.Rosen

      本书的价值已经被全世界几百所大学所证实,作为离散数学领域的经典教材,全世界几乎所有知名的院校都曾经使用本书作为教材。以我个人观点看来,这本书可以称之为离散数学百科。书中不但介绍了离散数学的理论和方法,还有丰富的历史资料和相关学习网站资源。更为令人激动的便是这本书少有的将离散数学理论与应用结合得如此的好。你可以看到离散数学理论在逻辑电路,程序设计,商业和互联网等诸多领域的应用实例。考虑到大多数读者的基础,这里推荐给大家的是本书的中文版(原书第四版),本书的英文版(第五版)当中更增添了相当多的数学和计算机科学家的传记,是计算机科学历史不可多得的参考资料。作为教材这本书配有相当数量的练习。每一章后面还有一组课题,把学生已经学到的计算和离散数学的内容结合在一起进行训练。这本书也是我个人在学习离散数学时读的唯一的英文教材,实为一本值得推荐的好书。


----------------------------------------------------------------------------------

 具体数学:计算机科学基础(英文版.第2版) 

英文名称:Concrete Mathematics A Foundation for Computer Science(Second Edition)

作者:Ronald L.Graham,Donald E.Knuth,Oren Patashnik

      传统数学研究的对象过于抽象,导致对具体的问题关心不够。为了直接面向应用的需要,伟大的计算机科学家以及数学家Donald.E.Knuth在麻省理工大学提出了“具体数学”。自从那天起,“具体数学”便成了计算机科学的基础。所以下面为大家推荐的就是一本经久不衰的著作:
英文名称:Concrete Mathematics A Foundation for Computer Science(Second Edition)

      很令人兴奋的就是这本书的主要作者正是泰斗Donald.E.Knuth以及他的同事Ronald L.Graham。书稿是他们在1970年的时候在计算机系教授研究生本门课程的基础上整理出来的教材。内容上是Knuth的巨著TAOCP第一部的扩展,有些比TAOCP中谈及地又深入了许多。重点放在高级计算机程序设计话题以及算法分析上,涉及了计算机科学领域内相当全面的数学知识。具体数学是离散数学和连续数学的综合,书中这点做得极为出色,许多经典问题的解答比目前广泛流传的解法更为通俗易懂。对于提高大家的计算数学修养有很大帮助。之所以TAOCP有的时候读者们读不懂就是因为计算数学基础不是十分扎实,但以我个人经验,若能对本书中内容有一个比较好的理解,会给你阅读如TAOCP这样的旷世巨著带来很大的方便。

      作为计算机专业的学生,大概至少都曾经听说过ACM-ICPC程序设计大赛,这也是至今为止代表着全世界最高水平的程序设计大赛。每年国内也有很多学生参加此赛事,然而此赛事涉及面之广令不少人望而却步,也正是因为比赛涉及的计算理论内容之深广,才使大赛的水平得到了全世界的认可。如果你也在准备这方面的比赛,除了上面的《计算机程序设计艺术》你不是必须参考外,都应当予以足够的重视,此外下面这本书也是不错的选择:


----------------------------------------------------------------------------------

 算法艺术与信息学竞赛 

      哦,是的,刘汝佳和黄亮,这两个名字对于曾经关注过NOI,IOI以及ACM-ICPC比赛的你来说一定不是陌生的名字,也可以这样说,他们是在这些比赛以及相关培训中相当活跃的两个人,由于书的作者号召力相当大,我在这本书出版后很快就买到了并进行了研读。内容涉及上述三种比赛,算法原理阐述扼要,内含大量比赛原题,题库中的经典试题以及各个著名院校队伍自拟的优秀算法题。主要内容分为:算法与数据结构,数学知识和方法以及计算几何学。是一本算法与计算理论相关较为完善的资料结集。2003年如果你还苦于公开出版的相关书籍版本太老,没有新内容,那么本书便是你近期参加NOI,IOI以及ACM-ICPC比赛的不二选择。

     计算机数学理论方面可推荐的书籍是相当多的,究竟哪些数学理论基础是我们应当涉足的,哪些基本上我们是不需要的,大家可以参考《CSDN开发高手》9月刊上的《计算机科学技术数学理论浅谈》。

     概言之,算法与数学乃程序设计之本,计算科学之精华,尚需同学们予以足够的重视。但有一点需指明,不论是理论计算科学还是程序设计,皆通一理:不是所有的内容都需要大家掌握,长远之计乃是在大学学习相关学科的时候对该学科有一个全揽,晓之用途,在自己极为感兴趣或者研究、开发需要的时候深入其中……
    [ 更多内容请关注dearbook站点]


<script language=javascript> function loadfollowtree(topicid) { var targetTxt =eval("ShowLbl_" + topicid); // var targetDiv =eval("tr_" + topicid); // if (targetDiv.style.display!='block') //已打开 { targetDiv.style.display="block"; targetTxt.innerText="收回<"; document.frames["hiddenframe"].location.replace("/ReviewSystem/loadcritique.aspx?review=" + topicid); } else //已收回 { targetDiv.style.display="none"; targetTxt.innerText="展开>"; } } </script>
<script language=JavaScript src="/reviewSystem/fun.js"></script>
读者评论:25 条评论  发表评论  
我是那个被认为“无理取闹和撒野”的人!!(读者 huaboy2004-6-23)4人同意、0人反对    
  我就是去年在“曾毅”发的帖子里抨击他的那个人,我知道“曾毅”现在是《开发高手》的杂志编辑了!我就要说他是个学术骗子!!他发的多少文章是他自己的!!他的那几篇好文章几乎都是搜罗的各大BBS的文章,他来个总结!结果属的是他的名字,这种学术败类作为编辑正好!有很强的组织材料能力!但是学术道德没有!!看看他在杂志上发表的文章,有多苍白多浮夸!!在你没有知道多少的时候不要“狐假虎威”,用别人的就直说!!没人瞧不起你!我用的就是这个用户名,我不怕你封我的ID!!我同作者在QQ上交流过,总是说大话:不知道RUP是什么,居然说他的小组在做统一软件开发过程!我发现他作为编辑的时候,真后悔自己订阅了一年的《CSDN开发高手》!其实,作者做市场营销最合适!根本不是做技术的人!!看看他的个人网站,看看他的论坛!!
更多评论 对此评论 我同意 我反对 4条讨论,展开>  
[无题](读者 218.81.175.*2004-7-6)0人同意、1人反对    
  不要误人子弟好不好,《 离散数学及其应用(原书第4版) 》太浅显了。如果有能力阅读TAOCP之类的书,肯定有此感觉,不过入门还行。
更多评论 对此评论 我同意 我反对 1条讨论,展开>  
鄙视CSDN的编辑!!!!!!!!!(读者 218.7.68.*2004-6-22)1人同意、0人反对    
  记得去年,作者的一篇关于如何学习计算机专业的文章被发现是剽窃之作!!看到作者不少文章,毕竟是个学生,很多东西只是道听途说!真不知道CSDN的脑子里装的是什么,也许,是同路货色吧!看看这篇文章的内容就知道什么是好大喜功了!你是学生,你不了解中国IT的教育状况吗?写出这种夸夸其谈的文章,真是丢人。请问作者,读过几本?现在发现CSDN变质了!!
更多评论 对此评论 我同意 我反对 1条讨论,展开>  
我强烈鄙视那些学术腐败的混子!!就是因为你们中国才如此落后!!(读者 218.7.68.*2004-6-23)1人同意、0人反对    
  什么东西是自己的,自己心理清楚!!每个学术骗子在被纠出来之前,都是有很多拥护者的!!我喜欢看到原创,这才是中国大学生应有的本色,就那他推荐的书来说,有多少是他亲自读过的?他的业余活动很丰富的!请文章的作者自己说!!是转载的就要说明,要尊重原作者!!如果你是作者的托的话,我无话可说!!记得去年也是换了几个马甲在留言,如果你不是的话,请你看看这个作者的那篇关于计算机学习的文章的留言!!说真话,就是容易得罪人。为了名利而学术腐败,这就是中国的特色!!既然是给学弟推荐图书,其中很多书不是很合适的!!作者考虑过吗?很多书也许是研究生看的吧!!
更多评论 对此评论 我同意 我反对 1条讨论,展开>  
To Huaboy[曾毅](作者 218.247.132.*2004-6-23)0人同意、3人反对    
  huaboy你好,首先我需要感谢你的直言,任何的意见和观点都是欢迎的,但是在提意见的时候我觉得要做到有理有据,“不知道RUP是什么,居然说他的小组在做统一软件开发过程!”对于软件工程方面的交流,我曾经与你讨论过关于“粒度”的概念,关于RUP完全没有讨论过,不知道你的言论从何谈起,作为一名在校学生,我努力做到同每一个人虚心学习,我认为同您的交流也是受益匪浅的,至于你说的我的文章都是BBS上的拼凑,我觉得有待讨论,不可否认,作为学生,我所学习到的每一个知识点都来源于各种书籍以及网上资源,我在我成文的文章中如果有所涉及,全部都注明了出处,任何的文章合理的参考并注明参考文献我认为都是合理的。在我的大学学习阶段读过多少书我想只有我自己和我周围的同学才清楚,我认为任何不了解实际情况的人妄加评论和诋毁都是不合适的。我想如果你确实对我有误会,我们也可以谈一下,我身上的不足也希望作为前辈的你指正。感谢。
更多评论 对此评论 我同意 我反对 4条讨论,展开>  
强烈谴责无理取闹的人!!(读者 218.247.132.*2004-6-22)0人同意、1人反对    
  鄙视下边的那个人,真搞不懂,骂人有什么好玩的。为了表示自己???如果你有真才实学的话就写一些好东西来指导大家,写不出来就在这里撒野??
  记得以前看过一篇csdn开发高手上的文章,不知道是不是这个曾毅写的,我从那篇文章中受益匪浅。不管是不是那个人,我对这篇读书评论的立场和其他朋友一样,分析得十分深刻,可见用心良苦。我最反感那些无理取闹的人。鄙视他们!
内容介绍: Editorial Reviews Review "In light of the explosive growth in the amount of data and the diversity of computing applications, efficient algorithms are needed now more than ever. This beautifully written, thoughtfully organized book is the definitive introductory book on the design and analysis of algorithms. The first half offers an effective method to teach and study algorithms; the second half then engages more advanced readers and curious students with compelling material on both the possibilities and the challenges in this fascinating field." —Shang-Hua Teng, University of Southern California "Introduction to Algorithms, the 'bible' of the field, is a comprehensive textbook covering the full spectrum of modern algorithms: from the fastest algorithms and data structures to polynomial-time algorithms for seemingly intractable problems, from classical algorithms in graph theory to special algorithms for string matching, computational geometry, and number theory. The revised third edition notably adds a chapter on van Emde Boas trees, one of the most useful data structures, and on multithreaded algorithms, a topic of increasing importance." —Daniel Spielman, Department of Computer Science, Yale University "As an educator and researcher in the field of algorithms for over two decades, I can unequivocally say that the Cormen book is the best textbook that I have ever seen on this subject. It offers an incisive, encyclopedic, and modern treatment of algorithms, and our department will continue to use it for teaching at both the graduate and undergraduate levels, as well as a reliable research reference." —Gabriel Robins, Department of Computer Science, University of Virginia Product Description Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor. The first edition became a widely used text in universities worldwide as well as the standard reference for professionals. The second edition featured new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming. The third edition has been revised and updated throughout. It includes two completely new chapters, on van Emde Boas trees and multithreaded algorithms, and substantial additions to the chapter on recurrences (now called "Divide-and-Conquer"). It features improved treatment of dynamic programming and greedy algorithms and a new notion of edge-based flow in the material on flow networks. Many new exercises and problems have been added for this edition. As of the third edition, this textbook is published exclusively by the MIT Press. About the Author Thomas H. Cormen is Professor of Computer Science and former Director of the Institute for Writing and Rhetoric at Dartmouth College. Charles E. Leiserson is Professor of Computer Science and Engineering at the Massachusetts Institute of Technology. Ronald L. Rivest is Andrew and Erna Viterbi Professor of Electrical Engineering and Computer Science at the Massachusetts Institute of Technology. Clifford Stein is Professor of Industrial Engineering and Operations Research at Columbia University.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值