**Top five books every computer programmer should read at least once of them**

1) Structure and Interpretation of Computer Programs

2) Introduction to the Theory of Computation

3) Artificial Intelligence: A Modern Approach

4) Types and Programming Languages

5) Introduction to Algorithms

**1) Structure and Interpretation of Computer Programs**

(SICP) is a wonderful introduction to programming

computer science and most importantly abstraction.

It does an incredible job of quickly covering basic CS, including the major different programming paradigms.

Most importantly, it helps impart a true CS mindset and shows the inherent beauty and elegance of the subject.

Abelson and Sussman's classic Structure and Interpretation of Computer Programs teaches readers how to program by employing the tools of abstraction and modularity. The authors' central philosophy is that programming is the task of breaking large problems into small ones. The book spends a great deal of time considering both this decomposition and the process of knitting the smaller pieces back together.The authors employ this philosophy in their writing technique. The text asks the broad question "What is programming?" Having come to the conclusion that programming consists of procedures and data, the authors set off to explore the related questions of "What is data?" and "What is a procedure?"

The authors build up the simple notion of a procedure to dizzying complexity. The discussion culminates in the description of the code behind the programming language Scheme. The authors finish with examples of how to implement some of the book's concepts on a register machine. Through this journey, the reader not only learns how to program, but also how to think about programming. --This text refers to an out of print or unavailable edition of this title.

**2) Introduction to the Theory of Computation**

is one of the most readable texts in any discipline. It gives a wonderful introduction to formal languages (not programming languages), comparability and complexity.

Apart from being a very accessible introduction to theoretical computer science, it also has an innovative structure for teaching proofs which I've found very valuable for learning to reason abstractly and formally without sacrificing clarity.

It's well worth reading just for an example of how clear proofs can be.

This is a very practical book as well as theoretical. The exercises are great and help reinforce the material.The writing is crisp, clear, and the theory easy to follow because of the book's excellent use of examples and diagrams.

I highly recommend this book, not just to students taking a course, but for practitioners working in industry.

It was expensive, but well worth the price.

**3) Artificial Intelligence: A Modern Approach**

(AIMA) is a strong introduction to AI.

It covers the high level ideas necessary to approach the field as well as a nice covering set of basic AI algorithms.

It's an incredibly popular text used in over 1200 universities.

The long-anticipated revision of this #1 selling book offers the most comprehensive, state of the art introduction to the theory and practice of artificial intelligence for modern applications.Intelligent Agents. Solving Problems by Searching. Informed Search Methods. Game Playing. Agents that Reason Logically. First-order Logic. Building a Knowledge Base. Inference in First-Order Logic. Logical Reasoning Systems. Practical Planning. Planning and Acting. Uncertainty. Probabilistic Reasoning Systems. Making Simple Decisions. Making Complex Decisions. Learning from Observations. Learning with Neural Networks. Reinforcement Learning. Knowledge in Learning. Agents that Communicate. Practical Communication in English. Perception. Robotics.For computer professionals, linguists, and cognitive scientists interested in artificial intelligence.

**4) Types and Programming Languages**

(TAPL) is a good overview of modern programming language design and theory.

It's a good place to get a handle on the field as well as catch up with the last few decades of programming language research, much of which is only entering the mainstream now if at all.

It's good as both a starting point for learning more advanced languages

(like Haskell) and for understanding the design and trade-offs in more popular languages like Java.

(John Reynolds, School of Computer Science, Carnegie Mellon University)

Written by an outstanding researcher, this book is well organized and very clear, spanning both theory and implementation techniques, and reflecting considerable experience in teaching and expertise in the subject.(Robin Milner, Computer Laboratory, University of Cambridge)

Types are the leaven of computer programming; they make it digestible. This excellent book uses types to navigate the rich variety of programming languages, bringing a new kind of unity to their usage, theory, and implementation. Its author writes with the authority of experience in all three of these aspects.

(Henk Barendregt, Faculty of Science, Mathematics, and Computer Science, University of Nijmegen, The Netherlands)

Types and Programming Languages is carefully written with a well-balanced choice of topics. It focusses on pragmatics, with the right level of necessary theory. The exercises in this book range from easy to challenging and provide stimulating material for beginning and advanced readers, both programmers and the more theoretically minded.

**5) Introduction to Algorithms**

Introduction to Algorithms is the standard reference on algorithms.

It's good for both learning to design algorithms and just learning the standard set most programs rely on.

Each topic in the book is covered in the same way:

- Explanation of problem or concept.

- Example(s) and/or diagram(s)

- Mathematical proofs, where applicable.

- Problem set

(Daniel Spielman, Department of Computer Science, Yale University)

Introduction to Algorithms, the 'bible' of the field, is a comprehensive textbook covering the full spectrum of modern algorithms: from the fastest algorithms and data structures to polynomial-time algorithms for seemingly intractable problems, from classical algorithms in graph theory to special algorithms for string matching, computational geometry, and number theory. The revised third edition notably adds a chapter on van Emde Boas trees, one of the most useful data structures, and on multithreaded algorithms, a topic of increasing importance.

(Gabriel Robins, Department of Computer Science, University of Virginia)

As an educator and researcher in the field of algorithms for over two decades, I can unequivocally say that the Cormen et al book is the best textbook that I have ever seen on this subject. It offers an incisive, encyclopedic, and modern treatment of algorithms, and our department will continue to use it for teaching at both the graduate and undergraduate levels, as well as a reliable research reference.

### related posts

Books

January 10, 2017

0

## Comments

## Post a Comment