# Programming books

The programmer needs to evolution always, for this reason he must to reads books. I thought I’d annotate all books, that appeal to me.

All books have been breaking up into categories, such way as every category contains each of easy reading and master reading series.

### Algorithms books:

 J. J. McConnell Analysis of Algorithms: An Active Learning Approach. Jones and Bartlett Publishers, Inc., 2001.-315p.

The book is pretty useful and easy to read. As with majority of books about algorithms, it starts from complexity analyse methods, then describes some famous algorithms and theirs comparative analysis. Alongside this, author represents the chapter deals with parallel algorithms, but it is weakish. Much better he explains automates and various Turing machines. It is very nice book for start but if you has read Knuth’s or Skiena’s books, for example, you can not learn something through McConnell. I recommend this book high schoolers.

 Miller R., Boxer L. Algorithms Sequential & Parallel: A Unified Approach – 3rd ed / Cengage Learning, 2012. – 448 p.

The author covers parallel algorithms and gives much attention to parallel system architectures. He describes fundamental algorithms and deduces their complexity analysis for every machine architecture. This book is pretty specify and sufficient hard because it contains quite a few mathematical manipulations so i would not recommend it as first book about algorithms. I advise the book engineering students, which interest parallel computing system.

 Skiena, Steven. The Algorithm Design Manual (2nd ed.). – Springer Science+Business Media. 2010.

The book is pretty nice as first to start learning algorithms design and analysis. Part way through the book author provides many examples and anecdotal evidence that simplify of the book reading. It is much more detailed treatise than McConnell’s book. Skiena describes algorithms analysis, data structures, several famous algorithms such as sorting, graphs processing, and many interesting examples like of Sudoku game. I suggest this book all future programmers, because it describes fundamental algorithms and principles, whereas requires little reader skill.

### Software design books

 E. Gamma Design Patterns: Elements of Reusable Object-Oriented Software / E. Gamma, R. Helm, R. Johnson, J. Vlissides. – Addison-Wesley Professional, 1994

It is a classical book about patterns design. The each of patterns description is so detailed, contains several implementations with their pros and cons. The books examples writes on C++ and Smalltalk languages, but verbal descriptions and UML-flowcharts help to understand the book to programmers on other languages. I recommend this book to every future programmers.

 Jason McC. Smith: Elemental Design Patterns – Addison-Wesley, 2012

Jason’s book is more scientific work than tutorial, although it is so interesting and useful. In the first instance, author considers elemental design patterns – such as delegation, inheritance, recursion. Then he shows how to produce more complex patterns and describes PIN – Pattern Instance Notation. The PIN is UML extension, that represents dependencies between patterns more concise, without implementation details. In fine, Jason explains the $$\rho$$-calculus, which is a formal theory of patterns. I suggest this book all good programmers.

 Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship. – Upper Saddle River, NJ: Prentice Hall, 2009

The book concentrates on clean code problems: coding styles, code formatting, clean code structure, unit testing, exception handling issues, etc. In the clean code context describes several design patterns. I advise this book to students, which achieved mastery of object oriented programming course.