alama@world: ~/
./toggle-theme

# Books

A collection of books I've read and my thoughts on them.

Cover of Grokking Algorithms, Second Edition

Grokking Algorithms, Second Edition

By Aditya Y Bhargava completed
Programming Algorithms Computer Science
An illustrated guide to the most important algorithms and data structures—covering search, sort, graph, greedy, and NP-complete algorithms with Python 3 examples and over 400 illustrations, aimed at readers without advanced mathematics or prior programming experience.
Cover of Refactoring: Improving the Design of Existing Code

Refactoring: Improving the Design of Existing Code

By Martin Fowler completed
Software Engineering Object-Oriented Programming Software Reengineering
A guide to improving the design of existing code through behaviour-preserving transformations, covering a catalogue of code smells and the techniques used to address them.
Cover of Docker Deep Dive

Docker Deep Dive

By Nigel Poulton completed
A zero-to-Docker introduction covering container fundamentals through practical usage, by the author's own subtitle: 'Zero to Docker in a single book'.
Cover of The Object-Oriented Thought Process

The Object-Oriented Thought Process

By Matt Weisfeld completed
Programming Object-Oriented Design
An introduction to object-oriented concepts covering how to think in objects, encapsulation, inheritance, and design principles, intended to be language-independent.
Cover of Clean Code

Clean Code

By Robert C. Martin completed
Agile Software Development Software Engineering Coding Theory
A handbook of agile software craftsmanship covering principles and practices for writing clean, maintainable code, structured across foundational techniques, case studies, and a reference catalogue of code smells.
Cover of Concise Guide to Databases

Concise Guide to Databases

By Peter Lake completed
Databases Computer Science Software Engineering
A comprehensive introduction to databases covering relational systems and modern alternatives including NoSQL and big data, with attention to real-world concerns such as scalability, security, and performance.
Cover of Principles of Package Design: Creating Reusable Software Components

Principles of Package Design: Creating Reusable Software Components

By Matthias Noback completed
Object-Oriented Programming Software Engineering
A guide to creating reusable software components, covering how SOLID principles and package cohesion and coupling principles apply at the package level.