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

时间:2021-05-11 09:00:57

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绝对是霸主。

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


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

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

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

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

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


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

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

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


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

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

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


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

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


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

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


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

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


关于买书的一点经验

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

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

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

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

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

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


推销结束

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