My Bookshelf
Here is a list of some notable books I have read, currently reading or have on my to-read list in my library.
Read books are marked with a read π
badge, a rating and my thoughts on it.
Books I’m currently reading with reading π
.
Books on my to-read list are left unmarked.
All books are broadly categorized by genre with a short description of the book and authors.
Table of Contents
Computer Science#
Algorithms#
by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein
A comprehensive introduction to the principles of algorithms and data structures. The book covers a wide range of topics such as sorting, searching, and graph algorithms. It is a must-read for anyone interested in algorithms and problem-solving.
by Robert Sedgewick and Kevin Wayne
A comprehensive guide to the design and analysis of algorithms. The book covers a wide range of topics such as sorting, searching, and graph algorithms. It is suitable for students and professionals looking to deepen their understanding of algorithms.
Computational Theory#
by G. E. Revesz
An introduction to the lambda calculus and combinatory logic, with a focus on functional programming. The book covers topics such as lambda calculus, combinators, and the Curry-Howard isomorphism. It is a valuable resource for students and researchers interested in the foundations of computer science.
by John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman
A classic book on automata theory, formal languages, and computability, covering topics such as finite automata, context-free grammars, and Turing machines. The book is suitable for students and professionals looking to deepen their understanding of computational theory.
Type Theory#
by Benjamin C. Pierce
A comprehensive introduction to the theory of programming languages. The book covers a wide range of topics including type systems, operational semantics, and lambda calculus. It is a must-read for anyone interested in programming language theory.
by Benjamin C. Pierce
A follow-up to the author's previous book, this volume covers more advanced topics in programming language theory. It includes chapters on substructural type systems, dependent types, and gradual typing. The book is a valuable resource for researchers and practitioners alike.
by Daniel P. Friedman and David Thrane Christiansen
An introduction to dependent types and type theory using the language of the Little Prover. The book covers topics such as propositions as types, proofs as programs, and the Curry-Howard isomorphism. It is a fun and accessible way to learn about type theory.
by Rob Nederpelt and Herman Geuvers
An introduction to type theory and formal proof systems, covering topics such as lambda calculus, natural deduction, and the Curry-Howard correspondence. The book is suitable for students and researchers interested in the foundations of computer science.
by Univalent Foundations Program
An introduction to homotopy type theory, a new branch of mathematics that combines aspects of type theory and homotopy theory. The book covers topics such as the univalence axiom, higher inductive types, and the correspondence between types and spaces. It is a valuable resource for researchers interested in the foundations of mathematics.
by Henk Barendregt
An introduction to the lambda calculus and type theory, with a focus on the Curry-Howard isomorphism. The book covers topics such as simply typed lambda calculus, polymorphism, and type inference. It is a valuable resource for students and researchers interested in the foundations of computer science.
Formal verification and Proof Theory#
by Daniel P. Friedman and Carl Eastlund
An introduction to formal verification using the language of the Little Prover. The book covers topics such as logical connectives, induction, and proof by contradiction. It is a fun and accessible way to learn about formal verification.
by Adam Chlipala
A Pragmatic Introduction to the Coq Proof Assistant using dependent types for formal verification of software. The book covers topics such as type theory, theorem proving, and program extraction. It is a valuable resource for developers looking to build reliable and correct software.
by Ana Bove and Peter Dybjer
An introduction to the theory of programming and formal verification using the language of constructive type theory. The book covers topics such as lambda calculus, natural deduction, and the Curry-Howard correspondence between programs and proofs. It is a valuable resource for students and researchers interested in the foundations of computer science.
by Daniel J. Velleman
This book covers intuitive proofs, direct proofs, sets, induction, logic, the contrapositive, contradiction, functions and relations. The text aims to make the ideas visible, and contains over 200 illustrations. Furthermore, introductions to area of math include Ramsey theory, number theory, topology, sequences, real analysis, big data, game theory, cardinality and group theory.
Formal and Operational Semantics#
by Robert Harper
A comprehensive guide to the theory and practice of programming languages. The book covers topics such as type systems, operational semantics, and formal verification. It is suitable for students and professionals looking to deepen their understanding of programming languages.
by Glynn Winskel
A comprehensive introduction to the formal semantics of programming languages. The book covers topics such as denotational semantics, operational semantics, and axiomatic semantics. It is a valuable resource for students and researchers interested in the foundations of computer science.
by Carl A. Gunter
Semantics of Programming Languages exposes the basic motivations and philosophy underlying the applications of semantic techniques in computer science. It introduces the mathematical theory of programming languages with an emphasis on higher-order functions and type systems.
by Nielson, H. R. and Nielson, F. and Hankin, C.
This book provides an introduction to the essential concepts in programming languages, using operational semantics techniques. It presents alternative programming language paradigms and gives an in-depth analysis of the most significant constructs in modern imperative, functional and logic programming languages.
Compilers#
by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman
A classic book on compiler construction, covering topics such as lexical analysis, parsing, and code generation. The book is suitable for students and professionals looking to build compilers and interpreters.
by Keith D. Cooper and Linda Torczon
A comprehensive guide to the theory and practice of compiler construction. The book covers topics such as lexical analysis, parsing, and code generation. It is suitable for students and professionals looking to build compilers and interpreters.
by Ronald Mak
A practical guide to building compilers and interpreters using a software engineering approach. The book covers topics such as lexical analysis, parsing, and code generation. It is a valuable resource for developers looking to learn about compiler construction.
by Andrew W. Appel
A practical guide to building compilers and interpreters using the C programming language. The book covers topics such as lexical analysis, parsing, and code generation. It is a valuable resource for students and professionals looking to learn about compiler construction.
by Andrew W. Appel
A practical guide to building compilers and interpreters using the ML programming language. The book covers topics such as lexical analysis, parsing, and code generation. It is a valuable resource for students and professionals looking to learn about compiler construction.
by Andrew W. Appel and Jens Palsberg
A practical guide to building compilers and interpreters using the Java programming language. The book covers topics such as lexical analysis, parsing, and code generation. It is a valuable resource for students and professionals looking to learn about compiler construction.
by Dick Grune, Kees van Reeuwijk, Henri E. Bal, Ceriel J.H. Jacobs, and Koen G. Langendoen
This book make the topic of compiler design more accessible by focusing on principles and techniques of wide application. By carefully distinguishing between the essential (material that has a high chance of being useful) and the incidental (material that will be of benefit only in exceptional cases) much useful information was packed in this comprehensive volume.
by Robert Nystrom
A practical guide to building interpreters for programming languages. The book covers topics such as scanning, parsing, and interpreting. It is a valuable resource for developers looking to build their own programming languages.
by Nora Sandler
A step-by-step guide to building a C compiler from scratch. The book covers topics such as lexical analysis, parsing, and code generation. It is a valuable resource for developers looking to learn about compiler construction.
by Thorsten Ball
A practical guide to building interpreters for programming languages using the Go programming language. The book covers topics such as lexical analysis, parsing, and interpreting. It is a valuable resource for developers looking to build their own interpreters.
by Thorsten Ball
A practical guide to building compilers for programming languages using the Go programming language. The book covers topics such as lexical analysis, parsing, and code generation. It is a valuable resource for developers looking to build their own compilers.
by Michael L. Scott
A comprehensive guide to the design and implementation of programming languages. The book covers topics such as syntax, semantics, and pragmatics. It is suitable for students and professionals looking to deepen their understanding of programming languages.
by Y.N. Srikant and Priti Shankar
A comprehensive guide to the design and implementation of compilers. The book covers topics such as lexical analysis, parsing, and code generation. It is suitable for students and professionals looking to build compilers and interpreters.
by Bob Morgan
A practical guide to building optimizing compilers. The book covers topics such as data flow analysis, loop optimization, and register allocation. It is a valuable resource for developers looking to build high-performance compilers.
by Andrew W. Appel
A comprehensive guide to compiling with continuations. The book covers topics such as continuation-passing style, closure conversion, and stackless transformations. It is a valuable resource for developers looking to build compilers with advanced optimization techniques.
Operating Systems#
by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau
A comprehensive introduction to the principles of operating systems. The book covers topics such as processes, memory management, and file systems. It is suitable for both students and professionals looking to deepen their understanding of operating systems.
Software Development#
Engineering Practices#
by Henry S. Warren Jr.
an irresistible collection of programming hacks: timesaving techniques, algorithms, and tricks that help programmers build more elegant and efficient software, while also gaining deeper insights into their craft. Warren's hacks are eminently practical, but they're also intrinsically interesting, and sometimes unexpected, much like the solution to a great puzzle.
by Benjamin C. Pierce et al.
A series of textbooks on the mathematical underpinnings of reliable software. The books cover topics such as logic, programming languages, and formal verification. They are suitable for students and researchers interested in the foundations of computer science.
→ Read for free online
by Harold Abelson, Gerald Jay Sussman, and Julie Sussman
A classic book on computer science and programming, known for its emphasis on the fundamentals of programming and problem-solving. The book covers a wide range of topics such as abstraction, recursion, and interpreters. It is a must-read for anyone interested in programming.
by Chris Hanson
A practical guide to designing software systems that are flexible and adaptable to change. The book covers a wide range of topics such as modularity, abstraction, and design patterns. It is a valuable resource for developers looking to build maintainable software.
by Andrew Hunt and David Thomas
A classic book on software development, offering practical advice on a wide range of topics such as code formatting, debugging, and testing. The book is full of useful tips and techniques that can help developers improve their craft.
by Christian Mayer
Most software developers waste thousands of hours working with overly complex code. The eight core principles in The Art of Clean Coding will teach you how to write clear, maintainable code without compromising functionality. The book covers topics such as naming conventions, code structure, and refactoring.
by Robert C. Martin
A guide to writing clean, maintainable code. The book covers topics such as naming conventions, code structure, and refactoring. It is a valuable resource for developers looking to improve the quality of their code.
by Robert C. Martin
A guide to designing software systems with clean and maintainable architecture. The book covers topics such as the SOLID principles, component-based architecture, and the Clean Architecture pattern. It is a valuable resource for developers looking to build scalable and maintainable systems.
by Mark Richards
A practical guide to software architecture, focusing on the key concepts and principles that underpin modern software systems. The book covers topics such as microservices, event-driven architecture, and domain-driven design. It is a valuable resource for architects and developers looking to design scalable and resilient systems.
by Martin Fowler
A guide to improving the design of existing code through refactoring. The book covers a wide range of refactoring techniques, as well as the principles and patterns behind them. It is a valuable resource for developers looking to maintain and evolve their codebase.
by Eric Freeman, and Elisabeth Robson
A classic book on software design patterns, covering a wide range of patterns such as creational, structural, and behavioral patterns. The book provides a common language for developers to discuss and share design solutions.
by Carson Gross, Adam Stepinski and Deniz AkΕimΕek
Learn how hypermedia, the revolutionary idea that created The Web, can be used today to build modern, sophisticated web applications, often at a fraction of the complexity of popular JavaScript frameworks. Explore a simpler approach to building applications on the Web and beyond with htmx and Hyperview.
by Loren Kohnfelder
Beginning with a discussion of core concepts like trust, threats, mitigation, secure design patterns, and cryptography. The second part, perhaps this bookβs most unique and important contribution to the field, covers the process of designing and reviewing a software design with security considerations in mind.
Write Great Code#
by Randall Hyde
Dive into machine organization without the extra overhead of learning assembly language programming. Written for high-level language programmers, Understanding the Machine fills in the low-level details of machine organization that are often left out of computer science and engineering courses.
by Randall Hyde
A practical guide to understanding low-level programming concepts and writing high-level code. The book covers topics such as memory management, assembly language, and system programming. It is a valuable resource for developers looking to write efficient and performant code.
by Randall Hyde
A practical guide to writing efficient and maintainable software. The book covers topics such as code optimization, debugging, and testing. In-depth coverage of everything from development methodologies and strategic productivity to object-oriented design requirements and system documentation.
Programming Languages#
by Brian W. Kernighan and Dennis M. Ritchie
A classic book on the C programming language, written by the creators of the language. The book covers the basics of C programming, as well as more advanced topics such as pointers, arrays, and structures. It is a must-read for anyone interested in learning C.
by Bjarne Stroustrup
A comprehensive guide to the C++ programming language, written by the creator of the language. The book covers the basics of C++, as well as more advanced topics such as templates, exceptions, and the Standard Library. It is a valuable resource for both beginners and experienced C++ developers.
by Joseph Albahari and Ben Albahari
A comprehensive guide to the C# programming language, covering the latest features of C# 7.0. The book covers topics such as LINQ, async programming, and the .NET Core framework. It is a valuable resource for developers looking to master C#.
by Steve Klabnik and Carol Nichols
A comprehensive guide to the Rust programming language. The book covers the basics of the language, as well as more advanced topics such as ownership, lifetimes, and concurrency.
by Jon Gjengset
A deep dive into the Rust programming language, covering advanced topics such as macros, unsafe code, and concurrency. The book is aimed at experienced Rust developers looking to deepen their understanding of the language.
by Isaac Abraham
An introduction to the F# programming language, covering the basics of functional programming and the F# language features. The book is suitable for beginners looking to learn F# and functional programming concepts.
by Will Kurt
An introduction to the Haskell programming language, covering the basics of functional programming and the Haskell language features. The book is suitable for beginners looking to learn Haskell and functional programming concepts.
by John Whitington
An introduction to the OCaml programming language, covering the basics of functional programming and the OCaml language features. The book is suitable for beginners looking to learn OCaml and functional programming concepts.
by Simon St. Laurent and J. David Eisenberg
A comprehensive guide to the Elixir programming language, covering topics such as functional programming, concurrency, and fault tolerance. The book is suitable for both beginners and experienced developers looking to learn Elixir.
by Dmitry Jemerov and Svetlana Isakova
A comprehensive guide to the Kotlin programming language, covering topics such as syntax, idioms, and best practices. The book is suitable for both beginners and experienced developers looking to learn Kotlin.
by Richard Feldman
A comprehensive guide to the Elm programming language, covering topics such as functional programming, web development, and architecture. The book is suitable for both beginners and experienced developers looking to learn Elm.
by Rick Battagline
WebAssembly is the fast, compact, portable technology that optimizes the performance of resource-intensive web applications and programs. The book is designed to give web developers a solid understanding of how it works, when to use it (and when not to), and how to develop and deploy WebAssembly apps.
Functional Programming#
by Simon Thompson
Functional programming allows for highly concise solutions with increased safety. This has led to rising demand for software engineers with functional programming skills. This book will help you move your programming skills to the next level.
by Chris Okasaki
A classic book on functional data structures, covering topics such as persistent data structures, amortized analysis, and lazy evaluation. The book is a valuable resource for developers looking to learn about functional programming and data structures.
by Richard Bird
A collection of algorithm design techniques in functional programming, covering topics such as recursion, memoization, and higher-order functions. The book is a valuable resource for developers looking to improve their algorithmic problem-solving skills.
Mathematics#
Category Theory#
by Bartosz Milewski
A comprehensive guide to category theory for programmers, covering topics such as functors, monads, and natural transformations. The book is a valuable resource for developers looking to deepen their understanding of functional programming and abstract mathematics.
by Emily Riehl
A comprehensive introduction to category theory, covering topics such as categories, functors, and natural transformations. The book is suitable for students and researchers interested in the foundations of mathematics and computer science.
by Brendan Fong and David I. Spivak
A practical guide to applied category theory, covering topics such as compositionality, duality, and universal properties. The book is a valuable resource for researchers and practitioners looking to apply category theory to real-world problems.
by Eugenia Cheng
This joyful journey through the world of abstract mathematics into category theory will demystify mathematical thought processes and help you develop your own thinking, with no formal mathematical background needed. A comprehensive guide to abstract mathematics, covering topics such as sets, functions, and relations.
Computational Logic#
by Franz Baader and Tobias Nipkow
A unified, self-contained introduction to the field of term rewriting. Covering basic material--abstract reduction systems, termination, confluence, completion, and combination problems--but also some important and closely connected subjects: universal algebra, unification theory, GrΓΆbner bases, and Buchberger's algorithm.
Cryptography#
by Joshua Holden
Taking readers on a fascinating tour of the mathematics behind cryptographyβthe science of sending secret messages. Most books about cryptography are organized historically, or around how codes and ciphers have been used, such as in government and military intelligence or bank transactions.
by Jean-Philippe Aumasson
A practical guide to the principles and techniques of modern cryptography. The book covers topics such as symmetric cryptography, public-key cryptography, and cryptographic protocols. It is a valuable resource for developers looking to build secure systems.
Ethical Hacking#
Penetration Testing#
by Rafay Baloch
A complete introduction to the steps required to complete a penetration test, or ethical hack, from beginning to end. You will learn how to properly utilize and interpret the results of modern-day hacking tools, which are required to complete a penetration test.
by Peter Kim
Take your offensive game to the pro tier. With a combination of new strategies, attacks, exploits, tips and tricks, you will be able to put yourself in the center of the action toward victory. A practical guide to penetration testing and red teaming. The book covers topics such as reconnaissance, scanning, and exploitation.
Network Security#
by Dafydd Stuttard and Marcus Pinto
The latest step-by-step techniques for attacking and defending the range of ever-evolving web applications. A comprehensive guide to web application security, covering topics such as hacking methodologies, attack techniques, and defense strategies. The book is a valuable resource for security professionals and developers looking to secure their web applications.
Reverse Engineering#
by Eldad Eilam
A basic primer on reverse engineering-including computer internals, operating systems, and assembly language-and then discussing the various applications of reverse engineering, this book provides readers with practical, in-depth techniques for software reverse engineering
Game Hacking#
by Nick Cano
An introduction to game hacking, covering topics such as memory hacking, code injection, and reverse engineering. Become a true game hacker. Learn the basics, like reverse engineering, assembly code analysis, programmatic memory manipulation, and code injection, and hone your new skills with hands-on example code and practice binaries.
Fiction#
Autobiography#
by Clifford Stoll
A fascinating true story of a young astronomer who turned detective to track down a computer intruder who stole information from his lab. Clifford Stoll's pursuit of a hacker led to the discovery of one of the first known computer viruses.
by Joseph Menn
A tale of the oldest, most respected, and most famous American hacking group of all time. Though until now it has remained mostly anonymous, its members invented the concept of hacktivism, released the top tool for testing password security, and created what was for years the best technique for controlling computers from afar, forcing giant companies to work harder to protect customers.
by Andy Greenberg
A true story of the cyber war that is being waged by Russia, Iran, and other countries against the West. The most dangerous team of cyberwarriors in history: a group known as Sandworm. Working in the service of Russia's military intelligence agency, they represent a persistent, highly skilled force, one whose talents are matched by their willingness to launch broad, unrestrained attacks on the most critical infrastructure of their adversaries. They target government and private sector, military and civilians alike.
by Kim Zetter
The virus now known as Stuxnet was unlike any other piece of malware built before: Rather than simply hijacking targeted computers or stealing information from them, it proved that a piece of code could escape the digital realm and wreak actual, physical destructionβin this case, on an Iranian nuclear facility.
Science Fiction#
by Douglas Adams
A classic science fiction comedy that follows the misadventures of Arthur Dent, an ordinary human who is rescued by Ford Prefect, an alien researcher for the titular guidebook. Together they embark on a journey through space and time, meeting a host of eccentric characters along the way.
That’s about all my books I have read so far. I will keep updating this list as I read more books. I hope you found inspiration for your next read!
There are no articles to list here yet.