List of books not in any particular order. Latest editions should be preferred unless specifically targeting legacy systems.

Computer Architecture

Computer Organization and Design: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design) David A. Patterson, John L. Hennessy
Computer Architecture: A Quantitative Approach John L. Hennessy
Computer System Architecture M. Morris Mano
Computer Organization and Architecture: Designing for Performance William Stalling
Computer Architecture and Parallel Processing Kai Hwang
ARM System Developer’s Guide: Designing and Optimizing System Software Sloss
Digital Design: With an Introduction to Verilog HDL Morris Mano
Digital Logic and Computer Design Morris Mano
Microprocessors and Interfacing Hall

Algorithms and Data Structures

Algorithms + Data Structures = Programs Wirth
Data Structures and Algorithm Analysis in C (C++) Mark Allen Weiss
Algorithm Design Jon Kleinberg
The Art Of Computer Programming (All Volumes) Donald Knuth
The Algorithm Design Manual Steven S. Skiena
Programming Pearls Jon Bently
Algorithms(available online for free) S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani
Introduction to Algorithms Thomas H. Cormen and Charles E. Leiserson
Algorithms and Data Structures
The Basic Toolbox (available online for free)
Kurt Mehlhorn and Peter Sanders

Compiler Design and Tools

Compilers: Principles, Techniques and Tools Aho, Ullman, Sethi , Lam
C and C++ Compiling Milan Stevanovic
Linkers and Loaders John R Levine


Thinking in C++ (All Volumes) Bruce Eckle
The C++ Programming Language Bjarne Stoustrup
A Tour of C++ (C++ In-Depth Series) Bjarne Stoustrup
Accelerated C++: Practical Programming by Example Andrew Koenig and Barbara E. Moo
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond, Portable Documents David Abrahams and Aleksey Gurtovoy
Modern C++ Design: Generic Programming and Design Patterns Applied  Andrei Alexandrescu
Exceptional C++: 47 Engineering Puzzles, Programming Problems, and Solutions Herb Sutter
More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions Herb Sutter
C++ Coding Standards: 101 Rules, Guidelines, and Best Practices Andrei Alexandrescu and Herb Sutter
C++ Primer Lippman,Moo
C++ Concurrency in Action Anthony Williams
C++ by Dissection Ira Pohl
Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 Scott Meyers
Programming: Principles and Practice Using C++ Bjarne Stroustrup
The C Programming Language 2nd Edition Brian W. Kernighan , Dennis M. Ritchie
The C++ Standard Library – A Tutorial and Reference Nicolai M. Josuttis


Applied Cryptography Bruce Schneier
Cryptography and Network Security: Principles and Practice William Stalling
Network Security Essentials: Applications and Standards William Stalling
Hacker’s Delight Henry S. Warren
Hacking: The Art of Exploitation Jon Erickson
Network Security with OpenSSL Pravir Chandra, Matt Messier, John Viega
Secure Programming Cookbook Matt Messier, John Viega

Operating Systems

Operating System Concepts Silberschatz, Galvin, Gagne
Opertaing Systems William Stalling
Windows Internals Mark E. Russinovich and David A. Solomon
Modern Opertaing Systems Andrew Tannenbaum
Distributed Systems: Principles and Paradigms Andrew Tannenbaum
Distributed Operating Systems Andrew Tannenbaum
Linux Kernel Development Robert Love
Linux System Programming Robert Love
UNIX Internals : The new Frontiers Uresh Vahalia
The Design of the Unix Operating System Maurice Bach
Advanced Programming in the UNIX Environment Richard Stevens
Linux Device Drivers  Jessica Mckellar and Alessandro Rubini
Understanding the Linux Kernel Daniel Bovet, Marco Cesati
The Linux Kernel Module Programming Guide Peter Jay Salzman,Michael Burian,Ori Pomerantz


Elements of Programming Alexander A. Stepanov, Paul McJones
From Mathematics to Generic Programming Alexander A. Stepanov, Daniel E. Rose
Concrete Mathematics Graham, Knuth, Patashnik
Elementary Calculus Keisler
Introduction to Linear Algebra Gilbert Strang
Linear Algebra and its applications Gilbert Strang
Probability – Random Variables and Stochastic Processes Athanasios Papoulis and S Pillai
Probability and Statistics for Engineers and Scientists Sheldon Ross
Stochastic Processes Sheldon Ross
Mathematics for Computer Science Eric Lehman and Tom Leighton
Advanced Engineering Mathematics Erwin Kreyszig


Design Principles and Design Patterns Robert C Martin
Head First Design Patterns Eric Freeman and Elisabeth Robson
Thinking In Patterns With Java Bruce Eckel
Head First Object-Oriented Analysis and Design David West and Brett McLaughlin
Design Patterns Erich Gamma
Beautiful Code: Leading Programmers Explain How They Think Andy Oram, Greg Wilson, Andy Oram, Greg Wilson
Software Engineering A Practitioner’s approach Roger Pressman


C++ Network Programming (All Vols) Schmidt, Huston
Computer Networks Tannebaum
UNIX Network Programming (All Volumes) Stevens
TCPIP Illustrated (All Volumes) Stevens

Domain Specific

Introduction to Machine Learning Alpaydin
Deep Learning Ian Goodfellow, Yoshua Bengio, Aaron Courville (online free version available.)
Artifical Intelligence: A Modern Approach Russell
Computer Graphics: Principles and Practice John F. Hughes and Andries van Dam
Computer Graphics With Opengl Donald D. Hearn and M. Pauline Baker
Video Demystified: A Handbook for the Digital Engineer Keith Jack
Practical Statistics for Data Scientists: 50 Essential Concepts Peter Bruce,Andrew Bruce


Practical File System Design:The Be File System Dominic Giampaolo
Operating Systems: Three Easy Pieces Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
File Structures: An Object-Oriented Approach with C++ Michael J. Folk , Bill Zoellick , Greg Riccardi