这些书籍构成了计算机科学课程的核心和专业阅读列表。它们涵盖了算法、系统、语言、理论以及软件工程的更广泛的工艺--对于任何认真对待计算机科学的人来说,都是必读之作。
基础计算机科学教科书
确立计算机科学理论和实践基础的书籍。
| 书籍 | 作者 | 年份 | 级别 | 描述 |
|---|---|---|---|---|
| 计算机程序的结构与解释 第2版,麻省理工学院出版社 | 哈罗德·阿贝尔森,杰拉尔德·杰伊·萨斯曼,朱莉·萨斯曼 | 1996 | 中级-高级 | 传奇的“SICP”--可以说是有史以来最具影响力的计算机科学教科书。使用Scheme教授计算作为一种思维模型。在线免费提供。 |
| 算法导论 第4版,麻省理工学院出版社 | 托马斯·H·科门,查尔斯·E·莱瑟森,罗纳德·L·里维斯特,克利福德·斯坦 | 2022 | 中级-高级 | 权威的算法教科书(“CLRS”),在超过1000所大学使用。对所有标准算法进行了严格的覆盖,包括证明和分析。 |
| 计算机系统:程序员的视角 第3版,培生 | 兰道尔·E·布莱恩特,大卫·R·奥哈拉伦 | 2015 | 中级-高级 | 卡内基梅隆大学的“CSAPP”--从程序员的角度介绍计算机系统的最佳书籍。涵盖机器代码、内存、链接、进程和网络。 |
计算理论
自动机、可计算性、复杂性理论和逻辑。
| 书籍 | 作者 | 年份 | 级别 | 描述 |
|---|---|---|---|---|
| 计算理论导论 第3版,Cengage | 迈克尔·西普塞尔 | 2012 | 中级-高级 | 标准的本科理论教科书。对自动机、可计算性和复杂性进行了清晰、严格的处理,并提供优雅的证明。 |
| 计算复杂性:现代方法 剑桥大学出版社 | 桑杰夫·阿罗拉,博阿兹·巴拉克 | 2009 | 高级 | 现代研究生复杂性理论,涵盖P与NP、随机化、去随机化、量子复杂性和交互证明。在线免费提供。 |
| 自动机理论、语言与计算导论 第3版,培生 | 约翰·E·霍普克罗夫特,拉吉夫·莫特瓦尼,杰弗里·D·乌尔曼 | 2006 | 高级 | 经典的正式语言和自动机理论的严格处理。 |
操作系统与系统编程
操作系统如何工作以及如何编程。
| 书籍 | 作者 | 年份 | 级别 | 描述 |
|---|---|---|---|---|
| 操作系统:三个简单的部分 阿尔帕奇-杜塞书籍 | 雷姆齐·H·阿尔帕奇-杜塞,安德烈亚·C·阿尔帕奇-杜塞 | 2018 | 中级 | 现代、免费的、写得极好的操作系统教科书,围绕虚拟化、并发和持久性组织。最好的免费计算机科学教科书。 |
| 操作系统概念 第10版,Wiley | 亚伯拉罕·西尔伯沙茨,彼得·B·加尔文,格雷格·加涅 | 2018 | 中级 | “恐龙书”--长期以来的标准操作系统教科书,涵盖全面。 |
| Linux编程接口 No Starch Press | 迈克尔·凯里斯克 | 2010 | 高级 | Linux系统编程的权威参考。对系统调用和POSIX API进行了详尽的覆盖。 |
编程语言与编译器
语言设计、实现和编程范式。
| 书籍 | 作者 | 年份 | 级别 | 描述 |
|---|---|---|---|---|
| 编译原理、技术与工具 第2版,培生 | 阿尔弗雷德·V·阿霍,莫妮卡·S·拉姆,拉维·塞提,杰弗里·D·乌尔曼 | 2006 | 高级 | “龙书”--标准编译器教科书,涵盖词法分析、解析、类型检查、优化和代码生成。 |
| 编程语言实用主义 第4版,摩根·考夫曼 | 迈克尔·L·斯科特 | 2015 | 中级-高级 | 对编程语言及其实现的全面处理。 |
| 类型与编程语言 麻省理工学院出版社 | 本杰明·C·皮尔斯 | 2002 | 高级 | 经典的类型理论教科书。对任何对编程语言理论或形式方法感兴趣的人来说都是必不可少的。 |
软件工艺与经典
每位专业程序员都应该阅读的关于编程工艺的书籍。
| 书籍 | 作者 | 年份 | 级别 | 描述 |
|---|---|---|---|---|
| 计算机程序设计艺术 阿迪森-韦斯利 | 唐纳德·E·克努斯 | 1968-至今 | 高级 | 克努斯的宏伟多卷本作品(“TAOCP”)。阅读不轻松,但关于基本算法的终极参考。 |
| 务实的程序员 20周年纪念版,阿迪森-韦斯利 | 大卫·托马斯,安德鲁·亨特 | 2019 | 初学者-中级 | 两位经验丰富的开发者对编程工艺的提炼智慧。新软件工程师的必读书籍。 |
| 代码大全 第2版,微软出版社 | 史蒂夫·麦康奈尔 | 2004 | 中级 | 有史以来最全面的软件构建实践指南。 |