CS研究生学习阶段必读书籍


书单、书单、还是书单

现在各种大牛推荐的书单已经太多太多了,大多包含如《Code Complete》、SICP、龙书等等经典之作,但后果就是十分雷同。因为特别经典的书的数量有限吧,多少年也出不了一本吧。所以,为了能有些新意,笔者决定推荐书单时针对特别群体或特别话题,让推荐的东西更多样性、有趣,也更有价值一些。

本文就针对计算机科学专业的研究生群体,推荐一些教材和必读书籍。特别说明一下:有些书是上过课程已经读过的,感觉确实不错,有些则是将要上的课程给出的推荐教材,上网查了一下评价也挺高。主要参考了Amazon、Goodreads和豆瓣上的评价。


图书推销员已上线……

在正式开始推荐(销)之前,你必须要精读、并且常放于手边的两本书就是:《Discrete Mathematics and Its Applications》和经典的《The C Programming Language》(简称K&R)。因为整个研究生阶段,几乎各种课程都会反反复复的用到离散数学和C语言的相关知识。

前者是笔者从国内带来的,真是明智的决定啊!从Theory of Database到Algorithm Analysis,从逻辑到集合论到概率论,真是无处不在啊!而后者更不用说了,从Operating System课到网络到各种Linux编程相关课程,C绝对是霸主。


先来说说操作系统。提到OS,一般都会推荐《Modern Operating System》、《Operating System Principle》,前者读了一点,后者系统学了一小半吧。感觉是对于初学或者想复习OS理论的同学的确是不错的选择,但当你对大部分概念都比较熟悉,想学习更加现代化的理论和实践的话,这两本经典教材是显然不够的。

关于理论推荐一本比较新的书,《Operating Systems: Three Easy Pieces》,内容很新,除了经典内容的重新演绎,还有如多核调度、LFS文件系统、虚拟化、SSD存储优化等。阅读体验也很棒,经常有小栏目给你讲一些历史或者奇闻异事。更重要的是,作者坚持课本应当免费的原则,所以可以直接下全本的电子版。

关于实践的话,推荐《Understanding the Linux Kernel》(简称ULK)和《Linux Kernel Architecture》两本。前者适合当课本,跟着老师的引导去学习。而后者可读性较高,内容也比较新,适合自学。而且内容比ULK更新,例如CFS调度器这么重要内容竟然在ULK没有。


OS课上,老师多次极力推荐大家在研究生阶段学学Architecture,不是架构设计,而是计算机体系架构或叫组成原理,说大家一定会受益匪浅,对OS以及整个计算机科学有新的认识。

经过老师的介绍,心里十分痒痒,想一窥究竟。最为经典的也是老师指定的教材就是《Computer Architecture: A Quantitative Approach》第五版,在国内时买的影印版带过来了,质量还不错。但据说如果没有相关经验的话直接看正文会死…… 附录中提供了详细的基础知识。如果不够或者觉得还是难的话,还有一本非常经典的适合自学的书——《Computer Organization and Design: The Hardware/Software Interface》,目前也出到了第五版,两书都有一个共同作者John L. Hennessy(轩尼诗?高大上)。


再来说说算法,经典的《Introduction to Algorithm》(简称CLRS)是必不可少的,虽然真的不适合自学使用。但是作为教材,其全面性、严谨性真的是无可挑剔,只能怪自己水平不够…… 这学期在老师的引导下有的章节竟然真的有些懂了,感觉对算法分析有了一些感觉。

对非理论爱好者,《The Algorithm Design Manual》真的非常实用,从书的前言介绍就能感受到:一来轻分析重思路,二来不特别复杂的算法尽量提供C实现而不只是伪码,三来课后习题包含作者收集的大量IT公司面试题,四来本书下半部分作为Catalog供深入学习查询。同时,书中还包含作者或者其Phd学生精心编写的War Story,一些算法在教授和学生们做研究时的真实应用,提高了可读性。最后,就是Steven Skiena是Stony Brook的著名教授,所以再次推荐一下:)


如果想在算法方面深入学习的话,计算理论是个不错的选择,在下准备下学期斗胆挑战一下,不知道是不是太难了…… 不过这本计算理论的书读起来还真不是很费劲,刚买到手时小半天就看了不少页,作者文笔还是很不错的,能将复杂东西简单化绝对不一般!目前已出到了第三版。


关于另一大块——编译原理,龙书当然经典,可并不完美。一般评价说龙书对前端部分的讲解非常详细,或者过于详细了。而后端其实对我们一般程序员来说也非常重要。由于我还没上过这门课,所以可能描述得不是很专业了。但看老师和网上都推荐说好的教材应该是不会错的,那就是这本《Engineering a Compiler》(简称EAC)。可读性、可操作性据说都不错,而且更加注重后端,目前已出第二版。


最后,网络方面有经典的《TCP/IP Illustrated》和《Computer Network》,对网络的理论部分有详细的讲解。除了基础网络课程外,校方还设立了一门叫做Network Programming的课程,个人觉得可能是Stony Brook的CS专业中唯一一门偏实践的课程(其他课真的是非常理论)。而选用的教材呢,更加实战派——已故技术写作大师Richard Stevens的《Unix Network Programming, Volume 1: The Sockets Networking API》。以前在Coolshell上晃悠时,看到过推荐。这的确是经典,但如何经典,真的不清楚了,要等下学期上完NP这门重课后才能知晓。


关于买书的一点经验

不管是国内还是国外学习,一定要读英文版!之前不知道看哪个牛人说过:有中文版还是买中文版,理解的快还是怎么招来着…… 深受其害啊!之前有对应影印版却买的中文版的书,我都想烧了…… 再说一次:个人建议,一定要读英文版!

国内:影印版为主+精品国产

如果在国内的话,可以买到实惠的影印版。当然了,大部分都质量一般,也有格外好的,像《Algorithm》第四版,《Computer System: A Programmer’s Perspective》第三版等。再就是通过京东或淘宝上的卖家买国外原版,一般都五百一千的,之前在国内没买过不知道靠谱不。

国外:国际版+二手+电子版

在国外的话,计算机书不是一般的贵啊。从便宜的有二三十刀到两三百刀不等,大部分都在四十~八十刀左右。省钱的办法就是在Amazon上买二手的,一般LIKE NEW和VERY GOOD都是非常不错的。如果新版改动不是很大,可以买旧版,一般非常便宜,经常会碰到一分钱或几毛钱的。当然要注意有些二手书其实是所谓的International版,就像是中国卖的影印版似的,质量一般,可以凑合用。便宜还是美国原版的不多。此外,Amazon上的价格经常变化,需要经常关注。

再就是电子版了,不准备详细看或者收藏价值不大的都直接看电子版就好了。学校一般有打印配额,根据课程内容挑选个别章节,打印出来学习就行了,非常方便!但详细深入学习的书建议一定要买纸质版,排版、质感等各方面都会让你在阅读时更加聚精会神、更加有感觉。


推销结束

来美国学习后用上面的方法也攒了一些书,都是各个分支领域中很经典的书。特别是几本二手美国原版的,质量很好,爱不释手。可搬家是个难题…… 尽管如此,还好i推荐爱书的同学手边一定要有自己的书,尤其像我这种喜欢往自己的书上做各种标记和笔记的人。上学期手边几本书帮了大忙,每科至少提高10分:)推荐就到这里了,以后发现好的专题再推荐给大家,希望大家喜欢!

CS研究生学习阶段必读书籍相关推荐

  1. 研究生学习阶段时间安排

    1)第一学期--学习学期 主要目标是学习好各门基础课程.因为不管以后是择业或者考博,都需要学习成绩和理论知识的支持.并且这一学期也是五个学期中同学们学习劲头最浓的学期. (2)第二学期--知识补充学期 ...

  2. 计算机学习路线+必读书籍

    文章目录 学习路线: 语言-编程基础四大件-编程应用实践 语言 编程基础四大件 数据结构与算法: 入门后刷题(LeetCode) 计算机网络 操作系统 设计模式: 熟悉常用的设计模式 编程应用实践 加 ...

  3. 学习java必读书籍

    <Thinking in java>,<Core Java>,<effective java>,<Java Puzzlers>,<Java Net ...

  4. 人工智能必读书籍推荐—“花书”/计算机视觉/深度学习书籍

    导读:悟已往之不谏,知来者之可追 人工智能(英语:Artificial Intelligence,缩写为AI)亦称智械.机器智能,指由人制造出来的机器所表现出来的智能.通常人工智能是指通过普通计算机程 ...

  5. 零基础学习C语言必读书籍

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105009267 C ...

  6. 算法学习之路和程序员(技术)学习必读书籍

    原文链接:http://lucida.me/blog/on-learning-algorithms/ 转 算法学习之路和程序员(技术)学习必读书籍 2015年05月26日 09:46:56 阅读数:1 ...

  7. (转载)java工程师15本必读书籍推荐

    一.Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是"囫囵吞枣不求甚解",先对Ja ...

  8. 麻省理工学院(MIT)研究生学习指导—— 怎样做研究生

    麻省理工学院(MIT)研究生学习指导 怎样做研究生 本文的主旨是解释如何做研究.我们提供的这些建议,对于研究本身(阅读.写作和程序设计).理解研究过程以及开始研究(方法论.选题.选导师和情感因素),都 ...

  9. 数字IC设计前端必读书籍

    数字IC设计前端推荐书籍 本文将从简单到复杂的顺序依次列出数字IC设计需要阅读的书籍. 1.数字电路基础 数字IC设计最基础的书籍了,相关书籍比较多,可以随意挑选:主要是为了弄清楚与或门电路,触发器. ...

  10. 数字后端入行门槛和条件?附入行进阶必读书籍丨建议收藏

    这两个星期疫情放开,大家都人心惶惶,囤药等待阳~芯博士也一样,做了充足的准备,不过庆幸的是**"天选打工人"**无疑了,周边同事逐渐阳起来,我依然坚挺着,相信大家和我一样能挺入决赛 ...

最新文章

  1. 手把手教渗透测试人员打造.NET可执行文件
  2. optee的Share Memory介绍
  3. Delphi编程注意事项
  4. 基于事件驱动架构构建微服务第13部分:使用来自Apache KAFKA的事件并将投影流传输到ElasticSearch...
  5. 休眠事实:等于和HashCode
  6. 二进制权值计算 lsb_2020年二级计算机基础知识备考(第二章)
  7. HibernateDaoSupport类的使用(转)
  8. python treemap_使用TreeMap
  9. 字节流通向字符流的桥梁:InputStreamReader
  10. halcon中如何生成椭圆_Halcon拟合系列(2)直线/圆/椭圆/矩形拟合算子
  11. [NOIp模拟题] test
  12. Error: Your project contains C++ files but it is not using a supported native build system
  13. koa学习笔记(一)环境安装及文件目录
  14. bzoj1396 识别子串
  15. 三星980 NVMe SSD推出:首款不含 DRAM 的消费类硬盘
  16. linux x86软件改arm,x86程序移植到arm上
  17. 算法快学笔记(九):红黑二叉树
  18. 基于51单片机十字路口交通灯_5s黄灯闪烁
  19. 报错Failure executing javac, but could not parse the error原因分析
  20. MongoDB技术文章合辑1:基础知识

热门文章

  1. 山寨机java游戏下载_Q版水浒-山寨英雄
  2. 做善良公社项目的经历和感受——善良公社
  3. 2021年微软研究博士奖研金名单出炉!三位华人博士生入选,每人42000美元
  4. 用python写一个爬取周杰伦所有歌词的爬虫
  5. 实例013:所有水仙花数pyt 打印出所有的“水仙花数“,所谓“水仙花数“是指一个三位数,其各位数字立方和等于该数本身。 例如:153是一个“水仙花数“,因为153=1的三次方+5的三次方+3的三次方
  6. 九度[1029]-魔咒词典
  7. 2010 年全国大学生数学建模竞赛甘肃赛区 获奖情况
  8. 9 款最好的免费博客网站对比
  9. 控件(五)——Gridview控件以SqlDataSource控件为数据源实现换肤功能
  10. java判断邮箱格式