Welcome to Good Programming Books

We are going online with full version soon. Right now you could check our TOP 20 of recommended programming books:

name

The Art of Computer Programming (Boxed Set) 1st edition

by Donald E. Knuth

This multivolume work on the analysis of algorithms has long been recognized as the definitive description of classical computer science. The three complete volumes published to date already comprise a unique and invaluable resource in programming theory and practice. Countless readers have spoken about the profound personal influence of Knuth's writings. Scientists have marveled at the beauty and elegance of his analysis, while practicing programmers have successfully applied his "cookbook" solutions to their day-to-day problems. All have admired Knuth for the breadth, clarity, accuracy, and good humor found in his books.

Publisher: Addison-Wesley Professional
Edition: 1stISBN-10: 0321751043
Pages: -ISBN-13: 978-0321751041
Release year: 2011
name

Code: The Hidden Language of Computer Hardware and Software 1st edition

by Charles Petzold

What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In CODE, they show us the ingenious ways we manipulate language and invent new means of communicating with each other. And through CODE, we see how this ingenuity and our very human compulsion to communicate have driven the technological innovations of the past two centuries.

Using everyday objects and familiar language systems such as Braille and Morse code, author Charles Petzold weaves an illuminating narrative for anyone who’s ever wondered about the secret inner life of computers and other smart machines.

It’s a cleverly illustrated and eminently comprehensible story—and along the way, you’ll discover you’ve gained a real context for understanding today’s world of PCs, digital media, and the Internet. No matter what your level of technical savvy, CODE will charm you—and perhaps even awaken the technophile within.

Publisher: Microsoft Press
Edition: 1stISBN-10: 0735611319
Pages: 400ISBN-13: 978-0735611313
Release year: 2000
name

The C Programming Language 2nd edition

by Brian W. Kernighan and Dennis M. Ritchie

This book is meant to help the reader learn how to program in C. It is the definitive reference guide, now in a second edition. Although the first edition was written in 1978, it continues to be a worldwide best-seller. This second edition brings the classic original up to date to include the ANSI standard.

This second editon describes C as defined by the ANSI standard. This book is meant to help the reader learn how to program in C. The book assumes some familiarity with basic programming concepts like variables, assignment statements, loops, and functions. A novice programmer should be able to read along and pick up the language.

Publisher: Prentice Hall
Edition: 2ndISBN-10: 0131103628
Pages: 272ISBN-13: 978-0131103627
Release year: 1988
name

Structure and Interpretation of Computer Programs 2nd edition

by Harold Abelson and Gerald Jay Sussman

Structure and Interpretation of Computer Programs has had a dramatic impact on computer science curricula over the past decade. This long-awaited revision contains changes throughout the text. There are new implementations of most of the major programming systems in the book, including the interpreters and compilers, and the authors have incorporated many small changes that reflect their experience teaching the course at MIT since the first edition was published. A new theme has been introduced that emphasizes the central role played by different approaches to dealing with time in computational models: objects with state, concurrent programming, functional programming and lazy evaluation, and nondeterministic programming. There are new example sections on higher-order procedures in graphics and on applications of stream processing in numerical programming, and many new exercises. In addition, all the programs have been reworked to run in any Scheme implementation that adheres to the IEEE standard.

Publisher: The MIT Press
Edition: 2ndISBN-10: 0262510871
Pages: 657ISBN-13: 978-0262510875
Release year: 1996
name

Introduction to Algorithms 3rd edition

by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein

Some books on algorithms are rigorous but incomplete; others cover masses of material but lack rigor. Introduction to Algorithms uniquely combines rigor and comprehensiveness. The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.

The first edition became a widely used text in universities worldwide as well as the standard reference for professionals. The second edition featured new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming. The third edition has been revised and updated throughout. It includes two completely new chapters, on van Emde Boas trees and multithreaded algorithms, substantial additions to the chapter on recurrence (now called “Divide-and-Conquer”), and an appendix on matrices. It features improved treatment of dynamic programming and greedy algorithms and a new notion of edge-based flow in the material on flow networks. Many exercises and problems have been added for this edition. The international paperback edition is no longer available; the hardcover is available worldwide.

Publisher: The MIT Press
Edition: 3rdISBN-10: 0262033844
Pages: 1292ISBN-13: 978-0262033848
Release year: 2009
name

Algorithms

by Robert Sedgewick and Kevin Wayne 4th edition

This fourth edition of Robert Sedgewick and Kevin Wayne’s Algorithms is the leading textbook on algorithms today and is widely used in colleges and universities worldwide. This book surveys the most important computer algorithms currently in use and provides a full treatment of data structures and algorithms for sorting, searching, graph processing, and string processing -- including fifty algorithms every programmer should know. In this edition, new Java implementations are written in an accessible modular programming style, where all of the code is exposed to the reader and ready to use.

The algorithms in this book represent a body of knowledge developed over the last 50 years that has become indispensable, not just for professional programmers and computer science students but for any student with interests in science, mathematics, and engineering, not to mention students who use computation in the liberal arts.

Publisher: Addison-Wesley Professional
Edition: 4thISBN-10: 032157351X
Pages: 976ISBN-13: 978-0321573513
Release year: 2011
name

Code Complete: A Practical Handbook of Software Construction 2nd edition

by Steve McConnell

Widely considered one of the best practical guides to programming, Steve McConnell’s original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices—and hundreds of new code samples—illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking—and help you build the highest quality code.

Publisher: Microsoft Press
Edition: 2ndISBN-10: 0735619670
Pages: 960ISBN-13: 978-0735619678
Release year: 2004
name

The Practice of Programming 1st edition

by Brian W. Kernighan and Rob Pike

With the same insight and authority that made their book The Unix Programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual programmers more effective and productive.

The practice of programming is more than just writing code. Programmers must also assess tradeoffs, choose among design alternatives, debug and test, improve performance, and maintain software written by themselves and others. At the same time, they must be concerned with issues like compatibility, robustness, and reliability, while meeting specifications.

Publisher: Addison-Wesley
Edition: 1stISBN-10: 020161586X
Pages: 288ISBN-13: 978-0201615869
Release year: 1999
name

The Pragmatic Programmer: From Journeyman to Master 1st edition

by Andrew Hunt and David Thomas

Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process--taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse.

Publisher: Addison-Wesley Professional
Edition: 1stISBN-10: 020161622X
Pages: 352ISBN-13: 978-0201616224
Release year: 1999
name

The Art of Readable Code: Simple and Practical Techniques for Writing Better Code 1st edition

by Dustin Boswell and Trevor Foucher

As programmers, we’ve all seen source code that’s so ugly and buggy it makes our brain ache. Over the past five years, authors Dustin Boswell and Trevor Foucher have analyzed hundreds of examples of "bad code" (much of it their own) to determine why they’re bad and how they could be improved. Their conclusion? You need to write code that minimizes the time it would take someone else to understand it—even if that someone else is you.

This book focuses on basic principles and practical techniques you can apply every time you write code. Using easy-to-digest code examples from different languages, each chapter dives into a different aspect of coding, and demonstrates how you can make your code easy to understand.

Publisher: O'Reilly Media
Edition: 1stISBN-10: 0596802293
Pages: 206ISBN-13: 978-0596802295
Release year: 2011
name

Clean Code: A Handbook of Agile Software Craftsmanship 1st edition

by Robert C. Martin

Even bad code can function. But if code isn't clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn't have to be that way.

Noted software expert Robert C. Martin presents a revolutionary paradigm with "Clean Code: A Handbook of Agile Software Craftsmanship." Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code "on the fly" into a book that will instill within you the values of a software craftsman and make you a better programmer--but only if you work at it.

Publisher: Prentice Hall
Edition: 1stISBN-10: 0132350882
Pages: 464ISBN-13: 978-0132350884
Release year: 2009
name

Touch of Class: Learning to Program Well with Objects and Contracts 1st edition

by Bertrand Meyer

From object technology pioneer, Design by Contract inventor and ETH Zurich professor Bertrand Meyer, winner of ACM Software System Award, the Dahl-Nygaard prize and the Jolt award, Touch of Class is a revolutionary introductory programming textbook that makes learning programming fun and rewarding.

Instead of the traditional low-level examples, Meyer builds his presentation on a rich object-oriented software system supporting graphics and multimedia, which students can use to produce impressive applications from day one, then explore "from the outside in" as they learn new programming techniques.

Unique to Touch of Class is the combination of a practical, hands-on approach with sound theory. Throughout the presentation of software concepts, the book relies on the principles of Design by Contract, critical to software quality and providing a gentle introduction to formal methods.

Publisher: Springer
Edition: 1stISBN-10: 3540921443
Pages: 876ISBN-13: 978-3540921455
Release year: 2009
name

Object-Oriented Analysis and Design with Applications 3rd edition

by Grady Booch, Robert A. Maksimchuk, Michael W. Engle, Bobbi J. Young, Jim Conallen, Kelli A. Houston

Object-Oriented Design with Applications has long been the essential reference to object-oriented technology, which, in turn, has evolved to join the mainstream of industrial-strength software development. In this third edition--the first revision in 13 years--readers can learn to apply object-oriented methods using new paradigms such as Java, the Unified Modeling Language (UML) 2.0, and .NET.

The authors draw upon their rich and varied experience to offer improved methods for object development and numerous examples that tackle the complex problems faced by software engineers, including systems architecture, data acquisition, cryptoanalysis, control systems, and Web development. They illustrate essential concepts, explain the method, and show successful applications in a variety of fields. You'll also find pragmatic advice on a host of issues, including classification, implementation strategies, and cost-effective project management.

Publisher: Addison-Wesley Professional
Edition: 3rdISBN-10: 020189551X
Pages: 720ISBN-13: 978-0201895513
Release year: 2007
name

Patterns of Enterprise Application Architecture 1st edition

by Martin Fowler

The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their developers do not understand the architectural lessons that experienced object developers have learned.

Patterns of Enterprise Application Architecture is written in direct response to the stiff challenges that face enterprise application developers. The author, noted object-oriented designer Martin Fowler, noticed that despite changes in technology--from Smalltalk to CORBA to Java to .NET--the same basic design ideas can be adapted and applied to solve common problems. With the help of an expert group of contributors, Martin distills over forty recurring solutions into patterns. The result is an indispensable handbook of solutions that are applicable to any enterprise application platform.

This book is actually two books in one. The first section is a short tutorial on developing enterprise applications, which you can read from start to finish to understand the scope of the book's lessons. The next section, the bulk of the book, is a detailed reference to the patterns themselves. Each pattern provides usage and implementation information, as well as detailed code examples in Java or C#. The entire book is also richly illustrated with UML diagrams to further explain the concepts.

Armed with this book, you will have the knowledge necessary to make important architectural decisions about building an enterprise application and the proven patterns for use when building them.

Publisher: Addison-Wesley Professional
Edition: 1stISBN-10: 0321127420
Pages: 560ISBN-13: 978-0321127426
Release year: 2002
name

Domain-Driven Design: Tackling Complexity in the Heart of Software 1st edition

by Eric Evans

The software development community widely acknowledges that domain modeling is central to software design. Through domain models, software developers are able to express rich functionality and translate it into a software implementation that truly serves the needs of its users. But despite its obvious importance, there are few practical resources that explain how to incorporate effective domain modeling into the software development process.

Domain-Driven Design fills that need. This is not a book about specific technologies. It offers readers a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software development.

Readers learn how to use a domain model to make a complex development effort more focused and dynamic. A core of best practices and standard patterns provides a common language for the development team. A shift in emphasis—refactoring not just the code but the model underlying the code—in combination with the frequent iterations of Agile development leads to deeper insight into domains and enhanced communication between domain expert and programmer. Domain-Driven Design then builds on this foundation, and addresses modeling and design for complex systems and larger organizations.

Publisher: Addison-Wesley Professional
Edition: 1stISBN-10: 0321125215
Pages: 560ISBN-13: 978-0321125217
Release year: 2004
name

Refactoring: Improving the Design of Existing Code 2nd edition

by Martin Fowler

For more than twenty years, experienced programmers worldwide have relied on Martin Fowler’s Refactoring to improve the design of existing code and to enhance software maintainability, as well as to make existing code easier to understand.

This eagerly awaited new edition has been fully updated to reflect crucial changes in the programming landscape. Refactoring, Second Edition, features an updated catalog of refactorings and includes JavaScript code examples, as well as new functional examples that demonstrate refactoring without classes.

Publisher: Addison-Wesley Professional
Edition: 2ndISBN-10: 0134757599
Pages: 448ISBN-13: 978-0134757599
Release year: 2018
name

Test Driven Development: by Example. 1st edition

by Kent Beck

Clean code that works--now. This is the seeming contradiction that lies behind much of the pain of programming. Test-driven development replies to this contradiction with a paradox--test the program before you write it.

A new idea? Not at all. Since the dawn of computing, programmers have been specifying the inputs and outputs before programming precisely. Test-driven development takes this age-old idea, mixes it with modern languages and programming environments, and cooks up a tasty stew guaranteed to satisfy your appetite for clean code that works--now.

Developers face complex programming challenges every day, yet they are not always readily prepared to determine the best solution. More often than not, such difficult projects generate a great deal of stress and bad code. To garner the strength and courage needed to surmount seemingly Herculean tasks, programmers should look to test-driven development (TDD), a proven set of techniques that encourage simple designs and test suites that inspire confidence.

By driving development with automated tests and then eliminating duplication, any developer can write reliable, bug-free code no matter what its level of complexity. Moreover, TDD encourages programmers to learn quickly, communicate more clearly, and seek out constructive feedback.

Publisher: Addison-Wesley Professional
Edition: 1stISBN-10: 0321146530
Pages: 240ISBN-13: 978-0321146533
Release year: 2003
name

Working Effectively with Legacy Code 1st edition

by Michael Feathers

Get more out of your legacy systems: more performance, functionality, reliability, and manageability.

Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts.

In this book, Michael Feathers offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control.

Publisher: Prentice Hall
Edition: 1stISBN-10: 0131177052
Pages: 464ISBN-13: 978-0131177055
Release year: 2005
name

Cracking the Coding Interview 6th edition

by Gayle Laakmann McDowell

Cracking the Coding Interview, 6th Edition is here to help you through this process, teaching you what you need to know and enabling you to perform at your very best. I've coached and interviewed hundreds of software engineers. The result is this book.

Learn how to uncover the hints and hidden details in a question, discover how to break down a problem into manageable chunks, develop techniques to unstick yourself when stuck, learn (or re-learn) core computer science concepts, and practice on 189 interview questions and solutions.

Publisher: CareerCup
Edition: 6thISBN-10: 0984782850
Pages: 687ISBN-13: 978-0984782857
Release year: 2015
name

The Mythical Man Month: Essays on Software Engineering 2nd edition

by Brooks Jr. and Frederick P.

Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering it for the first time.

Publisher: Addison-Wesley Professional
Edition: 2ndISBN-10: 0201835959
Pages: 336ISBN-13: 978-0201835953
Release year: 1996