CS Foundations Books
Mathematics
- Concrete Mathematics: Foundation for Computer Science by Ronald L. Graham, Donald E. Knuth and Oren Patashnik
ACM竞赛必读书之一,几乎包含了所有计算机科学里涉及到的数学问题,里面有众多的经典问题与经典解法,对开拓人的数学思路有极大的帮助。
C/C++
- The C Programming Language by Brian W. Kernighan, Denis M. Ritchie (TCPL)
- C++ Primer by Josée Lajoie and Stanley B. Lippman
- The C++ Programming Language by Bjarne Stroustrup
- The C++ Standard Library, 2nd Edition by Nikolai Josuttis
- Effective C++ by Scott Meyers
- More Effective C++ by Scott Meyers
- Effective STL by Scott Meyers
- Large-Scale C++ Software Design by John Lakos
Algorithms
- Algorithms by Robert Sedgewick
- Introduction to Algorithms by Charles E. Leiserson, Clifford Stein, Ronald Rivest, and Thomas H. Cormen (CLRS: authors abbreviation)
- Algorithms by Sanjoy Dasgupta
Some More
- The Art of Computer Programming vol 1,2,3 by Donald.E.Knuth (TAOCP)
- Programming Pearls by Jon Bentley
For Interview
- 剑指Offer by 何海涛
- 编程之美 by 《编程之美》小组
- 程序员代码面试指南:IT名企算法与数据结构题目最优解 by 左程云
- Cracking the coding interview:150 programming questions and solutions by Gayle Laakmann McDowell 程序员面试金典
For ACM
- 挑战程序设计竞赛 by 秋叶拓哉
- 算法竞赛入门经典(第2版)by 刘汝佳
- 信息学奥赛一本通 by 董永建
Computer Architecture
- Computer Organization and Design: the Hardware/Software Interface by David A Patterson John L Hennessy and John L. Hennessy
- Computer Architecture: A Quantitative Approach by David A Patterson John L Hennessy and John L. Hennessy
- Computer Systems: A Programmer‘Perspective by Randal E.Bryant, David O'Hallaron (CSAPP)
- Computer Organization and Architecture: Designing for Performance by William Stallings
For Compiler
- Compilers: Principles, Techniques, and Tools by Alfred V. Aho / Monica S. Lam
- Structure and Interpretation of Computer Programs by Harold Abelson
Operating System
Must Read
- Operating System Concepts (2012) by Silberschatz, Galvin and Gagne.
- Operating Systems (2003) by D. R. Choffnes, Harvey Deitel, and Paul Deitel
- Modern Operating Systems by Andrew S. Tanenbaum
For Programming
- Linux Kernel Development (2010) by Robert Love
- Advanced Programming in the UNIX Environment, Third Edition by W. Richard Stevens (APUE)
- The Art of Unix Programming by Eric S. Raymond
- The Linux Programming Interface by Michael Kerrisk
- UNIX Systems for Modern Architectures (1994) by Schimmel.
- Windows Internals (2009) by Russinovich and Solomon
- Programming Windows by Charles Petzold
- Programming Applications for Microsoft Windows by Jeffrey Richter
Computer Network
Must Read
- Computer Networking: A Top Down Approach by Kurose, Ross
Best for a beginner. You will fall in love with this book once you get hold of it :P. No prerequisites required. It is written marvelously for anyone to get interested in networking) - Computer Networks by Tanenbaum
Good but dry. Well formed contents, should have some basic understanding of data communications before reading this book) - TCP/IP illustrated Vol 1 by Richard Stevens
Some More
- Data Communications and Networking by Behrouz A. Forouzan
- Computer Networks: A System Approach Larry L. Peterson and Bruce S. Davie
- Data and Computer Communications by William Stallings
For programming
- Unix Network Programming Vol 1 Sockets API - Richard Stevens
- Unix Network Programming Vol 2 Inter process Communication - Richard Stevens
Databases
Must Read
- Database System Concepts by Sudarshan, Korth
- Fundamentals of Database System By Elmasari & Navathe
Some More
- DATABASE MANAGEMENT SYSTEMS by Raghu Ramakrishnan, Johannes Gehrke
- Fundamentals of Relational Database Management Systems by S. Sumathi, S. Esakkirajan
- Database Systems concepts, languages & architectures by Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone
- Database Systems: A Practical Approach to Design, Implementation, and Management by THOMAS M. CONNOLLY, CAROLYN E. BEGG
- Database Modeling & Design: Logical Design by TOBY TEOREY, SAM LIGHTSTONE, TOM NADEAU
Design Patterns
- Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
- Head First Design Patterns by Elisabeth Freeman
- Clean Code : A Handbook of Agile Software Craftsmanship by Robert C. Martin / Prentice Hall
- Refactoring : Improving the Design of Existing Code by Martin Fowler, Kent Beck
- Test Driven Development: By Example by Kent Beck
Security & Cryptography
- The Code Book by Simon Singh
- Understanding Cryptography: A Textbook for Students and Practitioners by Christof Paar, Jan Pelzl
- Applied Cryptography: Protocols, Algorithms, and Source Code in C by Bruce Schneier
- Cryptography Engineering: Design Principles and Practical Applications by Niels Ferguson, Bruce Schneier, Tadayoshi Kohno
- Introduction to Modern Cryptography, Second Edition (Chapman & Hall/CRC Cryptography and Network Security Series) by Jonathan Katz
- Serious Cryptography: A Practical Introduction to Modern Encryption by Jean-Philippe Aumasson
- Practical Cryptography by Niels Ferguson, Bruce Schneier
- Cryptography and Network Security: Principles and Practice by William Stallings