Computer Science and Programming Books
The C Programming Language (1978; 1988)
- Introduction to C co-written by one of the language designers.
- Written by Brian Kernighan and Dennis Ritchie.
- First published in 1978. The 2nd edition covers ANSI C and was published in 1988.
Structure and Interpretation of Computer Programs (1984; 1996)
- Introduces many fundamental computer programming concepts, such as recursion, abstraction and modularity.
- Written by authors Harold Abelson, Gerald Jay Sussman and Julie Sussman.
- 1st edition published in 1984, 2nd editon published in 1996.
- Available for free at https://mitpress.mit.edu/sicp under the Creative Commons CC BY-SA 4.0 license.
Compilers: Principles, Techniques, and Tools (1986; 2006)
- Textbook about the design and implementation of a compiler (which a program for generating software from its source-code).
- Written by authors Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman.
- 1st edition published in 1986, 2nd edition published in 2006.
Operating Systems: Design and Implementation (1987; 2006)
- Describes the implementation of MINIX, an usable unix-like operating system designed for learning-purposes.
- Written by Andrew S. Tanenbaum and Albert S. Woodhull. First published in 1987, 3rd edition in 2006.
Introduction to Algorithms (1990; 2022)
- Written by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein.
- First edition published in 1990. Fourth edition published in 2022.
Modern Operating Systems (1992; 2014)
- Implementation-agnostic book about many patterns when implementing an operating system (OS).
- Written by Andrew S. Tanenbaum. First published in 1992, 4th edition published in 2014.
Code: The Hidden Language of Computer Hardware and Software (1999; 2022)
- Non-technical introduction to concepts related to programming and computer systems.
- Written by Charles Petzold. First published in 1999. Second edition published in 2022.
The Pragmatic Programmer (1999; 2019)
- Introduces principles and practical considerations when designing and writing computer programs.
- Written by Andrew Hunt and David Thomas. First published in 1999, 2nd edition published in 2019.
How to Design Programs (2001; 2018)
- Teaches a systematic approach for designing computer programs.
- Written by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi.
- First edition published in 2001, second edition published in 2018.
- 1st edition available online for free at https://htdp.org.
Essentials of Programming Languges (2008)
- Introduces fundamental programming language constructs in a systematic and incremental manner.
- Written by Daniel P. Friedman, Mitchell Wand, Christopher T. Haynes. Published in 2008.
The Linux Programming Interface (2010)
- Book which documents and explains many of the APIs of the Linux kernel and the GNU C Library.
- Written by Michael Kerrisk and published in 2010.