Books
- Computer Science: An Overview (13th, 2018) by Glenn Brookshear and Dennis Brylow
Courses
- Crash Course Computer Science. Watching on YouTube or Bilibili
- CS50's Computer Science for Business Professionals - edx, Harvard
- Discrete mathematics and its applications (7th, 2011) by Kenneth H·Rosen
- Introduction to Graph Theory (2nd, 2017) by Douglas B. West
- Introductory Combinatorics (5th, 2017) by Richard A.Brualdi
- A Friendly Introduction to Number Theory (4th, 2017) by Joseph H.Silverman
- Numerical Recipes (3rd, 2007) by William H. Press
- Concrete Mathematics: Foundation for Computer Science (2nd, 1994) by Ronald L. Graham, Donald E. Knuth and Oren Patashnik
ACM竞赛必读书之一,几乎包含了所有计算机科学里涉及到的数学问题,里面有众多的经典问题与经典解法,对开拓人的数学思路有极大的帮助。
Must Read
- The C Programming Language (2nd, 1988) by Brian W. Kernighan, Denis M. Ritchie (TCPL)
- Pointers on C (1997) by Kenneth A·Reek
- Expert C Programming: Deep C Secrets (1994) by Peter van der Linden
- C Traps and Pitfalls (1989) by Andrew Koenig
- C++ Primer (5th, 2012) by Josée Lajoie and Stanley B. Lippman
- The C++ Programming Language (4th, 2013) by Bjarne Stroustrup
- The C++ Standard Library (2nd, 2012) by Nikolai Josuttis
- Effective C++ (3rd, 2005) by Scott Meyers
Some More
- Effective Modern C++ (2014) by Scott Meyers
- More Effective C++ (1996) by Scott Meyers
- Effective STL (2001) by Scott Meyers
- Large-Scale C++ Software Design (1996) by John Lakos
- Inside the C++ Object Model (1996) by Stanley B·Lippman
Prime
- Algorithms (4th, 2011) by Robert Sedgewick
- Data Structures and Algorithm Analysis in C (2nd, 1996) by Mark Allen Weiss
- Data Structures and Algorithm Analysis in Java (3rd, 2011) by Mark A. Weiss
- Data Structures and Algorithm Analysis in C++ (3rd, 2011) by Clifford A. Shaffer
Advanced
- Algorithm Design (2005) by Jon Kleinberg, Éva Tardos
- The Algorithm Design Manual (2010) by Steven S Skiena
- Introduction to Algorithms (3rd, 2009) by Charles E. Leiserson, Clifford Stein, Ronald Rivest, and Thomas H. Cormen (CLRS: authors abbreviation)
- Algorithms (2006) by Sanjoy Dasgupta
Some More
- The Art of Computer Programming Volumes 1-4 by Donald.E.Knuth (TAOCP)
- Programming Pearls (2nd, 1999) by Jon Bentley
For Interview
- 剑指Offer (2012) by 何海涛
- 编程之美 (2008) by 《编程之美》小组
- 程序员代码面试指南:IT名企算法与数据结构题目最优解 (2015) by 左程云
- Cracking the Coding Interview: 189 Programming Questions and Solutions (2015) by Gayle Laakmann McDowell 程序员面试金典
For ACM
- 挑战程序设计竞赛 (2013) by 秋叶拓哉
- 算法竞赛入门经典(2nd, 2014)by 刘汝佳
- 信息学奥赛一本通 (2013) by 董永建
Courses
- Introduction to Algorithms - MIT Open Courseware
- Data Structures and Algorithm Design Part I 数据结构与算法设计(上) - edx, Tsinghua
- Data Structures and Algorithm Design Part II 数据结构与算法设计(下) - edx, Tsinghua
Tutorials
Must Read
- Computer Organization and Design: the Hardware/Software Interface (5th, 2013) by David A Patterson John L Hennessy and John L. Hennessy
- Computer Architecture: A Quantitative Approach (6th, 2017) by David A Patterson John L Hennessy and John L. Hennessy
- Computer Systems: A Programmer‘s Perspective (3rd, 2015) by Randal E.Bryant, David O'Hallaron (CSAPP)
Some More
- Computer Organization and Architecture: Designing for Performance (9th, 2012) by William Stallings
- Structured Computer Organization (6th, 2012) by Andrew S. Tanenbaum, Todd Austin
Digital Circuits
- Digital Fundamentals (9th, 2005) by Thomas L. Floyd
- Digital Integrated Circuits: A Design Perspective (2016) by Jan M. Rabaey
Assembly Language
- 汇编语言 (2003) by 王爽
- Professional Assembly Language (2005) by Richard Blum
- Assembly Language for Intel-Based Computers (1998) by Kip Irvine
Compiler
- Code: The Hidden Language of Computer Hardware and Software (1999) by Charles Petzold
- Structure and Interpretation of Computer Programs (2nd, 1996) by Harold Abelson (SICP)
- Essentials of Programming Languages (2001) by Daniel P. Friedman, Mitchell Wand
- Compilers: Principles, Techniques, and Tools (1986) by Alfred V. Aho and Monica S. Lam (龙书)
- Modern Compiler Implementation in C (2004) by Andrew W. Appel (虎书)
- Advanced Compiler Design and Implementation (1997) by Steven Muchnick (鲸书)
- Engineering a Compiler (2003) by Keith Cooper and Linda Torczon
- Parsing Techniques (2008) by Dick Grune, Ceriel J.H. Jacobs
- 程序员的自我修养 (2009) by 俞甲子, 石凡, 潘爱民
- The Elements of Computing Systems: Building a Modern Computer from First Principles (2005) by Noam Nisan, Shimon Schocken
Must Read
- Operating Systems: Three Easy Pieces (2015) by Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau
- Operating System Concepts (10th, 2018) by Abraham Silberschatz, Peter B. Galvin, Greg Gagne
- Operating Systems (3rd, 2003) by Harvey Deitel, Paul Deitel, David R. Choffnes
- Modern Operating Systems (4th, 2014) by Andrew S. Tanenbaum
Some More
- Operating Systems Design and Implementation (3rd, 2006) by Andrew S. Tanenbaum, Albert S. Woodhull
- Systems Performance (2013) by Brendan Gregg
- Orange'S:一个操作系统的实现 (2009) by 于渊
- 操作系统真象还原 (2016) by 郑钢
- 一个64位操作系统的设计与实现 (2018) by 田宇
For Programming
- Linux Kernel Development (3rd, 2010) by Robert Love
- Advanced Programming in the UNIX Environment (3rd, 2013) by W. Richard Stevens (APUE)
- The Art of Unix Programming (2003) by Eric S. Raymond
- The Linux Programming Interface (2010) by Michael Kerrisk
- UNIX Systems for Modern Architectures (1994) by Schimmel.
- Windows Internals (7th, 2017) by Russinovich and Solomon
- Programming Windows (5th, 1998) by Charles Petzold
- Programming Applications for Microsoft Windows (1999) by Jeffrey Richter
Must Read
- Computer Networking: A Top Down Approach (7th, 2016) 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 (5th, 2010) by Andrew S. Tanenbaum and David J. Wetherall Good but dry. Well formed contents, should have some basic understanding of data communications before reading this book)
- TCP/IP illustrated Vol 1 (1st, 1994) (2th, 2011) 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
- RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
- HTTP: The Definitive Guide (2002) by David Gourley, Brian Totty, Marjorie Sayer, Anshu Aggarwal, Sailu Reddy
- Learning Http/2: A Practical Guide for Beginners (2017) by Stephen Ludin, Javier Garza
- Wireshark网络分析就这么简单 by 林沛满
- wireshark网络分析的艺术 by 林沛满
For programming
- Unix Network Programming Vol 1 (3rd, 2003) Sockets API - Richard Stevens
- Unix Network Programming Vol 2 (2nd, 1998) Inter process Communication - Richard Stevens
Must Read
- Database System Concepts (6th, 2010) by Sudarshan, Korth
- Fundamentals of Database System (7th, 2017) by Ramez Elmasri, Shamkant B. Navathe
- Database System Implementation by Hector Garcia-Molina, Jeffrey D.Ullman and Jennifer Widom
Some More
- MySQL技术内幕 by 姜承尧
- Redis设计与实现 by 黄健宏
- Database Management System 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
Parallel Programming
- An Introduction to Parallel Programming by Peter Pacheco
- Is Parallel Programming Hard, And, If So, What Can You Do About It? by Paul E. McKenney
Garbage Collection
- The Garbage Collection Handbook by Richard Jones, Eliot Moss, Antony Hosking
- 垃圾回收的算法与实现 by 中村成洋, 相川光
Must Read
- The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography (2000) by Simon Singh
- Understanding Cryptography: A Textbook for Students and Practitioners (2010) by Christof Paar, Jan Pelzl
- Applied Cryptography: Protocols, Algorithms, and Source Code in C (2015) by Bruce Schneier
Some More
- 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
- Design Patterns: Elements of Reusable Object-Oriented Software (1994) by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
- Head First Design Patterns (2004) by Elisabeth Freeman
- Head First Object-Oriented Analysis and Design (2006) by Brett D. McLaughlin
- The Pragmatic Programmer by Andrew Hunt, David Thomas
- The Clean Coder:A Code of Conduct for Professional Programmers by Robert C. Martin
- Clean Code : A Handbook of Agile Software Craftsmanship (2008) by Robert C. Martin, Prentice Hall
- Clean Architecture by Robert C. Martin
- Code Complete (2nd, 2004) by Steve McConnell
- Refactoring : Improving the Design of Existing Code (2nd, 2018) by Martin Fowler, Kent Beck
- Test Driven Development: By Example (2002) by Kent Beck
- Effective Unit Testing by Lasse Koskela
- Extreme Programming Explained
- The Mythical Man-Month: Essays on Software Engineering by Jr·Frederick P·Brooks
- Scrum and XP from the Trenches by Henrik Kniberg
- The Art of Agile Development by James Shore, Shane Warden
- Learning Agile by Andrew Stellman
Some More
- Agile Retrospectives:Making Good Teams Great by Esther Derby , Diana Larsen,Ken Schwaber
- Coaching Agile Teams: A Companion for ScrumMasters,Agile Coaches, and Project Managers in Transition by Lyssa Adkins
- Agile Project Management with Scrum by Ken Schwaber
- Succeeding with Agile:Software development using Scrum by Mike Cohn
- Agile Estimating and Planning by Mike Cohn
- Lean thinking banish waste and creat wealth in your corporation by James P.Womack
- Kanban: Successful Evolutionary Change for Your Technology Business by David J.Anderson
- User Stories Applied:For Agile Software Development by Mike Cohn
- User Story Mapping Building Better Products using Agile Software Design by Jeff Patton