Algorithms for Breakfast
Dmitry Vostokov ????
Diagnostician. The Author of Diagnomicon. The Gang of One. Software Surgeon. Machine Learning and AI for Software Diagnostics.
Not long ago my mornings started with reading philosophy books because I was doing diagnostic analysis and philosophy was a great start of the day. A year ago, things changed and along with that my morning routine: my mornings started with reading books about algorithms. The shift was due to my move to software construction. It requires the knowledge of existing algorithms, algorithm design of the new algorithms, combining the existing algorithms with design patterns, and algorithm analysis. My previous focus on the diagnostic analysis of software postconstruction problems required only proficiency with data structures as a part of reversing and reconstruction. Occasionally, the knowledge of algorithms was required to deal with performance problems. Now the things changed. My projects require knowledge of many existing algorithms. Some advanced projects even require the design of new algorithms. As usual, mastering the subject requires deliberate repetition. I compiled the list of books from my library (classified as related to algorithms) that I read through the past year, currently reading, and plan to read soon[1]:
- Algorithms Unlocked
- Real-World Algorithms: A Beginner's Guide
- Guide to Competitive Programming: Learning and Improving Algorithms Through Contests
- Introduction to Algorithms, Third Edition
- Programming Pearls, Second Edition
- Garbage Collection: Algorithms for Automatic Dynamic Memory Management
- Advanced Data Structures (by Brass)
- How to Think About Algorithms
- Introduction to Recursive Programming
- The Art of Computer Programming, Volumes 1-4A Boxed Set
- Algorithmic Puzzles
- Algorithms and Data Structures: The Basic Toolbox
- Algorithms and Theory of Computation Handbook, Volume 1: General Concepts and Techniques
- Algorithms in a Nutshell: A Desktop Quick Reference, Second Edition
- Algorithms Unplugged
- The Garbage Collection Handbook: The Art of Automatic Memory Management
- Structured Parallel Programming: Patterns for Efficient Computation
- A Common-Sense Guide to Data Structures and Algorithms
- The Algorithm Design Manual, Second Edition
- Algorithmic Composition: Paradigms of Automated Music Generation
- Computational Thinking: A Beginner's Guide to Problem-Solving and Programming
- The Power of Computational Thinking: Games, Magic and Puzzles to Help You Become A Computational Thinker
- Think Like a Programmer: An Introduction to Creative Problem Solving
- Mastering Algorithms with C: Useful Techniques from Sorting to Encryption
- Once Upon an Algorithm: How Stories Explain Computing
- Handbook of Data Structures and Applications, Second Edition
- Data Structures and Algorithm Analysis in C++, Fourth Edition
- Introduction to Reliable and Secure Distributed Programming, Second Edition
- Algorithms (by Dasgupta et al.)
- Algorithmic Mathematics
- The CS Detective: An Algorithmic Tale of Crime, Conspiracy, and Computation
- Data Structure Practice: for Collegiate Programming Contests and Education
- Practical Analysis of Algorithms
- The Power of Algorithms: Inspiration and Examples in Everyday Life
- Data Structures and Algorithms with JavaScript: Bringing classic computing approaches to the Web
- Mathematics and Technology
- The Second Age of Computer Science: From Algol Genes to Neural Nets
- Programming Massively Parallel Processors: A Hands-on Approach, Third Edition
- The Art of Multiprocessor Programming, Revised Edition
- Synchronization Algorithms and Concurrent Programming
- Networks, Second Edition
- Information Theory: A Tutorial Introduction
- How to Solve It: Modern Heuristics
- Concrete Mathematics: A Foundation for Computer Science, Second Edition (this one I have in Russian translation)
- C Interfaces and Implementations: Techniques for Creating Reusable Software
- Transactional Information Systems: Theory, Algorithms, and the Practice of Concurrency Control and Recovery
I didn’t include more mathematically oriented books, and Data Science, AI and ML titles. These are saved for another post.
Also, I wouldn’t recommend learning algorithms from technical interview preparation guides alone, but such books contain some insights including what you need to highlight to an interviewer[2]:
- Programming Interviews Exposed: Coding Your Way Through the Interview, Fourth Edition
- Elements of Programming Interviews: The Insiders' Guide (there are C++, Python, and Java versions)
- Cracking the Coding Interview, 6th Edition: 189 Programming Questions and Solutions
- Coding Interviews: Questions, Analysis & Solutions
[1] The links are not included because all the books are available on Amazon either in a hardcopy or Kindle version and can be easily found there. I include authors only if there are several books with the same title.
[2] Meso-problem Solving using Meso-patterns (https://www.dumpanalysis.org/meso-patterns)