Reading List
A living list of books and articles I recommend.
2023
OpenMP Application Programming Interface, Version 5.2
OpenMP Architecture Review Board (ARB) • Specification • 2023#openmp#standard#specification
2021
Artificial Intelligence: A Modern Approach (4th ed.)
Stuart Russell, Peter Norvig • Book • 2021#ai#search#machine-learningArtificial Intelligence: A Modern Approach (4th ed.)
Stuart Russell, Peter Norvig • Book • 2021#ai#search#planning
2020
Mining of Massive Datasets (3rd ed.)
Jure Leskovec, Anand Rajaraman, Jeffrey D. Ullman • Book • 2020#data-mining#big-dataSecurity Engineering (3rd ed.)
Ross Anderson • Book • 2020#security#cryptography#systems
2019
Database System Concepts (7th ed.)
Abraham Silberschatz, Henry F. Korth, S. Sudarshan • Book • 2019#databases#sql#systemsDatabase System Concepts (7th ed.)
Abraham Silberschatz, Henry F. Korth, S. Sudarshan • Book • 2019#databases#sqlThe Pragmatic Programmer (20th Anniversary ed.)
Andrew Hunt, David Thomas • Book • 2019#software-engineering#craftsmanship
2018
Operating Systems: Three Easy Pieces
Remzi H. Arpaci-Dusseau, Andrea C. Arpaci-Dusseau • Book • 2018#operating-systems#education
2017
Computer Architecture: A Quantitative Approach (6th ed.)
John L. Hennessy, David A. Patterson • Book • 2017#architecture#performanceComputer Architecture: A Quantitative Approach (6th ed.)
John L. Hennessy, David A. Patterson • Book • 2017#architecture#performance#hardware
2016
Computer Networking: A Top-Down Approach (7th ed.)
James F. Kurose, Keith W. Ross • Book • 2016#networks#protocols#internetDeep Learning
Ian Goodfellow, Yoshua Bengio, Aaron Courville • Book • 2016#deep-learning#neural-networks#ai
2015
Computer Systems: A Programmer's Perspective (3rd ed.)
Randal E. Bryant, David R. O'Hallaron • Book • 2015#systems#performanceComputer Systems: A Programmer's Perspective (3rd ed.)
Randal E. Bryant, David R. O'Hallaron • Book • 2015#systems#computer-organization#performanceSoftware Engineering (10th ed.)
Ian Sommerville • Book • 2015#software-engineering#processes
2014
Modern Operating Systems (4th ed.)
Andrew S. Tanenbaum, Herbert Bos • Book • 2014#operating-systems#concurrencyUsing MPI: Portable Programming with the Message Passing Interface (3rd ed.)
William Gropp, Ewing Lusk, Anthony Skjellum • Book • 2014#mpi#distributed-memory#message-passing
2012
Introduction to the Theory of Computation (3rd ed.)
Michael Sipser • Book • 2012#theory#automata#complexityOperating System Concepts (9th ed.)
Abraham Silberschatz, Peter B. Galvin, Greg Gagne • Book • 2012#operating-systems#processes#concurrencyStructured Computer Organization (6th ed.)
Andrew S. Tanenbaum, Todd Austin • Book • 2012#computer-organization#architecture
2011
Algorithms (4th ed.)
Robert Sedgewick, Kevin Wayne • Book • 2011#algorithms#data-structuresThe Art of Computer Programming, Vols. 1–4A
Donald E. Knuth • Book • 2011#algorithms#analysis#classics
2010
Computer Networks (5th ed.)
Andrew S. Tanenbaum, David J. Wetherall • Book • 2010#networks#protocols
2009
Causality: Models, Reasoning, and Inference (2nd ed.)
Judea Pearl • Book • 2009#causality#statisticsIntroduction to Algorithms (3rd ed.)
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein • Book • 2009#algorithms#analysis#textbook
2008
Clean Code: A Handbook of Agile Software Craftsmanship
Robert C. Martin • Book • 2008#software-engineering#craftsmanship
2007
Using OpenMP: Portable Shared Memory Parallel Programming
Barbara Chapman, Gabriele Jost, Ruud van der Pas • Book • 2007#openmp#shared-memory#c#fortran
2006
Algorithms
Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani • Book • 2006#algorithms#textbookCompilers: Principles, Techniques, and Tools (2nd ed.)
Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman • Book • 2006#compilers#languages#parsingDistributed Systems: Principles and Paradigms (2nd ed.)
Andrew S. Tanenbaum, Maarten van Steen • Book • 2006#distributed#systems#bookIntroduction to Automata Theory, Languages, and Computation (3rd ed.)
John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman • Book • 2006#theory#automata#computation
2005
Algorithm Design
Jon Kleinberg, Éva Tardos • Book • 2005#algorithms#design#textbook
2004
Patterns for Parallel Programming
Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill • Book • 2004#patterns#parallel#hpc
2003
Introduction to Parallel Computing (2nd ed.)
Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar • Book • 2003#parallel#algorithms#bookParallel Programming in C with MPI and OpenMP
Michael J. Quinn • Book • 2003#openmp#mpi#c#parallel
1999
Principles of Program Analysis
Flemming Nielson, Hanne Riis Nielson, Chris Hankin • Book • 1999#program-analysis#languages
1996
Structure and Interpretation of Computer Programs
Harold Abelson, Gerald Jay Sussman, Julie Sussman • Book • 1996#programming#theoryStructure and Interpretation of Computer Programs
Harold Abelson, Gerald Jay Sussman, Julie Sussman • Book • 1996#programming#theory#lisp
1994
Design Patterns: Elements of Reusable Object-Oriented Software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides • Book • 1994#design-patterns#software-engineering
1988
Principles of Database and Knowledge-Base Systems
Jeffrey D. Ullman • Book • 1988#databases#theoryProbabilistic Reasoning in Intelligent Systems
Judea Pearl • Book • 1988#probability#ai#reasoning
1948
A Mathematical Theory of Communication
Claude E. Shannon • Bell System Technical Journal • 1948#information-theory#paper
1936
On Computable Numbers, with an Application to the Entscheidungsproblem
Alan M. Turing • Proceedings of the London Mathematical Society • 1936#theory#computability#paper