Software is used in many situations to tackle incredibly complex tasks. Creating such software requires the understanding of many layers of responsibility and functionality. Architecture is no metaphor when it comes to software, it is a reality of how modern software is created. Further, with software integrated into so many critical parts of modern day-to-day life, developers must be very aware of security. Poor coding practices can cause huge financial losses and can ruin a company’s reputation.
No matter if you are a novice or expert coder, there is always room for improving existing skills and developing new ones. Maybe you want to become a better software craftsman or perhaps you want to learn about agile development and see if it’s right for you and your team. Whatever the case, Safari Books Online is full of books and videos that can help you write better code. The following bibliography is a shortcut to finding the right book for your needs inside Safari Books Online.
Learn Python the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code, Third Edition
By Zed Shaw
Addison-Wesley Professional, December 2012
In this book the author teaches the Python programming language through a series of 52 brilliantly-crafted exercises. As you read, type, fix your mistakes, and watch the results, you’ll learn how software works, how programming works, what good programs look like, and how to read, write, and see code. You’ll discover how to spot crucial differences that fundamentally affect program behavior, and you’ll learn everything you need to know about Python logic, input/output, variables, and functions. Above all, you’ll learn the attention to detail that is indispensable to successful programming (and so much else in life). At first, yes, it can be difficult. But it gets easier. And Shaw offers plenty of extra guidance and insight through 5+ full hours of teaching video on the accompanying CD.
Read it on Safari Books Online (http://bit.ly/WW4Kla)
Head First Design Patterns
By Eric T Freeman; Elisabeth Robson; Bert Bates; Kathy Sierra
O’Reilly Media, October 2004
With Design Patterns, you get to take advantage of the best practices and experience of others, so that you can spend your time on something else. You want to learn about the patterns that matter—why to use them, when to use them, how to use them (and when NOT to use them). You also want to learn how patterns are used in the Java API, and how to exploit Java’s built-in pattern support in your own code. Using the latest research in neurobiology, cognitive science, and learning theory, Head First Design Patterns will load patterns into your brain in a way that sticks. In a way that lets you put them to work immediately. In a way that makes you better at solving software design problems, and better at speaking the language of patterns with others on your team.
Read it on Safari Books Online (http://bit.ly/UVCaCE)
Clean Code: A Handbook of Agile Software Craftsmanship
By Robert C. Martin
Prentice Hall, August 2008
Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. In this book noted software expert Robert C. Martin presents a revolutionary paradigm. 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. Each case study in the book is an exercise in cleaning up code-of transforming a code base that has some problems into one that is sound and efficient. This book is a must for any developer, software engineer, project manager, team lead, or systems analyst with an interest in producing better code.
Read it on Safari Books Online (http://bit.ly/VsCyZk)
Head First Object-Oriented Analysis and Design
By Brett McLaughlin; Gary Pollice; David West
O’Reilly Media, November 2006
This book shows you how to analyze, design, and write serious object-oriented software: software that’s easy to reuse, maintain, and extend; software that doesn’t hurt your head; software that lets you add new features without breaking the old ones. You will learn how to apply the Open-Closed Principle (OCP) and the Single Responsibility Principle (SRP) to promote reuse of your code. You will also learn how to leverage the power of design patterns to solve your problems more efficiently, and how to use UML, use cases, and diagrams to ensure that all stakeholders are communicating clearly to help you deliver the right software that meets everyone’s needs. Expect to have fun, expect to learn, expect to be writing great software consistently by the time you’re finished reading this!
Read it on Safari Books Online (http://bit.ly/XydEp5)
Design Patterns: Elements of Reusable Object-Oriented Software
By Erich Gamma; Richard Helm; Ralph Johnson; John Vlissides
Addison-Wesley Professional, October 1994
Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems in this book. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. You will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.
Read it on Safari Books Online (http://bit.ly/10xKlFr)
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, Third Edition
By Craig Larman
Prentice Hall, October 2004
Building on two widely acclaimed previous editions, Craig Larman has updated this book to fully reflect the new UML 2 standard, to help you master the art of object design, and to promote high-impact, iterative, and skillful agile modeling practices. In this book you won’t just learn UML diagrams, you’ll learn how to apply UML in the context of Object-Oriented software development. This book helps you understand evolutionary requirements and use cases, domain object modeling, responsibility-driven design, “Gang of Four” design patterns, iterative methods, an agile approach to the Unified Process (UP), and much more.
Read it on Safari Books Online (http://bit.ly/W11KZc)
Code Complete, Second Edition
By Steve McConnell
Microsoft Press, June 2004
The research and programming experience collected in this book will help you create higher-quality software and to do your work more quickly and with fewer problems. The programming practices described here will help you keep big projects under control and help you maintain and modify software successfully as the demands of your projects change. Some of the most beneficial programming aids are practices that you can use regardless of the environment or language you’re working in. Other books generally neglect such practices, which is why this book concentrates on them. The information in this book is distilled from many sources. The only other way to obtain the information you’ll find in this handbook would be to plow through a mountain of books and a few hundred technical journals and then add a significant amount of real-world experience.
Read it on Safari Books Online (http://bit.ly/XyfiqQ)
Game Coding Complete, Fourth Edition
By Mike McShaffry; David Graham
Course Technology PTR, March 2012
This book is the essential hands-on guide to developing commercial-quality games. The authors take you through the complete process of developing a professional-quality game using hundreds of insider tricks and techniques developed and perfected in their nearly two decades in game development. The book takes a unique approach to understanding the overall architecture—explaining how the different components of a game engine work together. This updated fourth edition uses the latest versions of DirectX and Visual Studio, and it includes expanded chapter coverage of the C# editor, resource caching, network code, and other important updates to every chapter.
Read it on Safari Books Online (http://bit.ly/TnPSRT)
The Clean Coder: A Code of Conduct for Professional Programmers
By Robert C. Martin
Prentice Hall, May 2011
Programming languages and development platforms burst into fashion, and then fade away. Software paradigms briefly dominate, and then shift. Methodologies are debated religiously, agreed upon – and soon scrapped altogether. It’s no wonder that application development has a high rate of turnover and burnout. Programmers who endure and succeed amidst swirling uncertainty have one thing in common: they all care deeply about the practice of creating software. This book explains why you should care about your job, how organizations can foster the type of environment that allows you to succeed, and what it means to truly work as craftsmen. This book goes beyond “values and attitudes” to fully document the specific disciplines, techniques, tools, and practices that successful software craftsmen share in common.
Read it on Safari Books Online (http://bit.ly/XyfjLl)
Neal Ford on Agile Engineering Practices (Video)
By Neal Ford
O’Reilly Media, August 2011
7 hours 6 minutes
Many people who explain agile software development often discuss project and planning practices, but hardly mention the development phase. In this insightful video, renowned software architect Neal Ford drills into the real details of agile engineering practices from a pure development perspective. Discover the development and design practices that make the agile approach work, the pros and cons of feedback mechanisms, and a host of related topics.
Read it on Safari Books Online (http://bit.ly/WVyXko)
The Pragmatic Programmer: From Journeyman to Master
By Andrew Hunt; David Thomas
Addison-Wesley Professional, October 1999
Straight from the programming trenches, this book 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. Read this book, and you’ll learn how to fight software rot, capture real requirements, write flexible and adaptable code, delight your users, and more. Written as a series of self-contained sections and filled with entertaining anecdotes, thoughtful examples, and interesting analogies, this book illustrates the best practices and major pitfalls of many different aspects of software development.
Read it on Safari Books Online (http://bit.ly/10SBnbF)
Refactoring: Improving the Design of Existing Code
By Martin Fowler; Kent Beck; John Brant; William Opdyke; Don Roberts
Addison-Wesley Professional, June 1999
As the application of object technology—particularly the Java programming language—has become commonplace, a new problem has emerged to confront the software development community. Significant numbers of poorly designed programs have been created by less-experienced developers, resulting in applications that are inefficient and hard to maintain and extend. With proper training a skilled system designer can take a bad design and rework it into well-designed, robust code. In this book, Martin Fowler shows you where opportunities for refactoring typically can be found, and how to go about reworking a bad design into a good one. Martin provides a detailed catalog of more than seventy proven refactorings with helpful pointers that teach you when to apply them, and an example illustrating how the refactoring works. The illustrative examples are written in Java, but the ideas are applicable to any object-oriented programming language.
Read it on Safari Books Online (http://bit.ly/VkqrB8)
Head First Software Development
By Dan Pilone; Russ Miles
O’Reilly Media, December 2007
Even the best developers have seen well-intentioned software projects fail — often because the customer kept changing requirements, and end users didn’t know how to use the software you developed. Instead of surrendering to these common problems, let this book guide you through the best practices of software development. Before you know it, those failed projects will be a thing of the past. You’ll gain essential information about each step of the software development lifecycle — requirements, design, coding, testing, implementing, and maintenance — and understand why and how different development processes work.
Read it on Safari Books Online (http://bit.ly/10KkI9l)
97 Things Every Programmer Should Know
By Kevlin Henney
O’Reilly Media, February 2010
Get 97 short and extremely useful tips from some of the most experienced and respected practitioners in the industry, including Uncle Bob Martin, Scott Meyers, Dan North, Linda Rising, Udi Dahan, Neal Ford, and many more. They encourage you to stretch yourself by learning new languages, looking at problems in new ways, following specific practices, taking responsibility for your work, and becoming as good at the entire craft of programming as you possibly can.
Read it on Safari Books Online (http://bit.ly/WVz5R1)
By Tom Pender
John Wiley & Sons, June 2003
UML is the industry standard specification for modeling, visualizing, and documenting software projects. This book provides the comprehensive coverage of all aspects of UML (Unified Modeling Language), including use, diagramming notation, the object constraint language, and profiles. It includes up-to-date coverage of both UML 1.4 and the new 2.0 UML specifications, and it thoroughly covers executable UML and testing UML diagrams, which make coding more efficient. Be sure to look at the companion Web site, which provides additional code samples and updates.
Read it on Safari Books Online (http://bit.ly/WgzwJm)
By Allen B. Downey
O’Reilly Media, March 2012
Expand your Python skills by working with data structures and algorithms in a refreshing context, through an eye-opening exploration of complexity science. Whether you’re an intermediate-level Python programmer or a student of computational modeling, you’ll delve into examples of complex systems through a series of exercises, case studies, and easy-to-understand explanations.
Read it on Safari Books Online (http://bit.ly/Xyfuq2)
Domain-Driven Design: Tackling Complexity in the Heart of Software
By Eric Evans
Addison-Wesley Professional, August 2003
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. This book fills that need. It offers 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. With this book in hand, you will havve the guidance needed to create rich and useful domain models, and leverage those models into quality, long-lasting software implementations.
Read it on Safari Books Online (http://bit.ly/WuopdG)
Data Structures and Algorithms in C++, Second Edition
By Michael T. Goodrich; Roberto Tamassia; David M. Mount
John Wiley & Sons, February 2011
Written by an author team of experts in their fields, this authoritative guide demystifies even the most difficult mathematical concepts so that you can gain a clear understanding of data structures and algorithms in C++. This book offers a unique multimedia format for learning the fundamentals of data structures and algorithms. It allows you to visualize key analytic concepts, learn about the most recent insights in the field, and do data structure design. The book features a clear, easy-to-understand writing style that breaks down even the most difficult mathematical concepts.
Read it on Safari Books Online (http://bit.ly/UWcUfJ)
Great Java (Video)
By Mark Reese; Brett McLaughlin
O’Reilly Media, November 2009
5 hours 24 minutes
This video will teach you the fundamentals of Java, from the basics of compilation through methods, objects, and the key concepts of good programming. By the time you’re through these lessons, you’ll be programming, and programming well. Throughout the course, you’ll progressively learn to code and compile programs, work extensively with text, and declare, convert, and cast between data types. You’ll also read files, get user input, and build arrays, including multi-dimensional arrays. Finally, you’ll move into objects, modeling your data and behavior into core Java structures. We’re continually adding new sections in this video that take you further into Java. We’re also updating existing lessons and creating new ones in response to your questions, along with special “challenge lessons” that will test your skills.
Read it on Safari Books Online (http://bit.ly/WVzqmF)
The Art of Readable Code
By Dustin Boswell; Trevor Foucher
O’Reilly Media, November 2011
Learn to write code that’s readable, reusable, clean, and maintainable — a goal that eludes many people who code for a living. This book helps you focus on the nuts and bolts of programming with simple and practical techniques you can use every time you sit down to write code. You’ll find easy-to-digest code examples throughout the book, and every page includes tips to help you write better code.
Read it on Safari Books Online (http://bit.ly/VXWi8u)
Modern C++ Design: Generic Programming and Design Patterns Applied
By Andrei Alexandrescu
Addison-Wesley Professional, February 2001
This book opens new vistas for programmers, offering a cutting-edge approach to design that unites design patterns, generic programming, and C++, enabling programmers to achieve expressive, flexible, and highly reusable code. Generic components enable an easier and more seamless transition from design to application code, generate code that better expresses the original design intention, and support the reuse of design structures with minimal recoding. Recurring issues that developers face in their day-to-day activity are discussed in depth and implemented in a generic way, including policy-based design, patterns and multi-method engines. For each generic component, the book presents the fundamental problems and design options, and finally implements a generic solution.
Read it on Safari Books Online (http://bit.ly/UWdwSv)
By Andy Oram; Greg Wilson
O’Reilly Media, June 2007
How do the experts solve difficult problems in software development? In this unique and insightful book, leading computer scientists offer case studies that reveal how they found unusual, carefully designed solutions to high-profile projects. You will be able to look over the shoulder of major coding and design experts to see problems through their eyes. This is not simply another design patterns book, or another software engineering treatise on the right and wrong way to do things. The authors think aloud as they work through their project’s architecture, the tradeoffs made in its construction, and when it was important to break rules.
Read it on Safari Books Online (http://bit.ly/10xMRM4)
Mythical Man-Month: The Essays on Software Engineering, Anniversary Edition
By Frederick P. Brooks Jr.
Addison-Wesley Professional, August 1995
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.
Read it on Safari Books Online (http://bit.ly/10KmdEo)
Applying Domain-Driven Design and Patterns: With Examples in C# and .NET
By Jimmy Nilsson
Addison-Wesley Professional, May 2006
Patterns, Domain-Driven Design (DDD), and Test-Driven Development (TDD) enable architects and developers to create systems that are powerful, robust, and maintainable. Now, there’s a comprehensive, practical guide to leveraging all these techniques primarily in Microsoft .NET environments, but the discussions are just as useful for Java developers. The author illuminates each principle with clear, well-annotated code examples based on C# 1.1 and 2.0.
Read it on Safari Books Online (http://bit.ly/XAJrpX)
Refactoring to Patterns
By Joshua Kerievsky
Addison-Wesley Professional, August 2004
This book introduces the theory and practice of pattern-directed refactorings: sequences of low-level refactorings that allow designers to safely move designs to, towards, or away from pattern implementations. Using code from real-world projects, Kerievsky documents the thinking and steps underlying over two dozen pattern-based design transformations. Along the way he offers insights into pattern differences and how to implement patterns in the simplest possible ways.
Read it on Safari Books Online (http://bit.ly/WnvhbW)
Design Patterns For Dummies
By Steve Holzner Ph.D.
John Wiley & Sons, May 2006
Find out how the 23 leading design patterns can save you time and trouble. Ever feel as if you’ve solved this programming problem before? You — or someone — probably did, and that’s why there’s a design pattern to help this time around. This book shows you how (and when) to use the famous patterns developed by the “Gang of Four,” plus some new ones, all designed to make your programming life easier. Discover how to reduce the amount of code needed for a task and how to create your own patterns.
Read it on Safari Books Online (http://bit.ly/WMVtgQ)
Essentials of Software Engineering, 2nd Edition
By Frank Tsui
Jones & Bartlett Learning, December 2009
This book is a comprehensive, yet concise introduction to the core fundamental topics and methodologies of software development. This text presents the complete life cycle of a software system, from inception to release and through support. The authors have broken the text into six distinct sections covering programming concepts, system analysis and design, principles of software engineering, development and support processes, methodologies, and product management.
Read it on Safari Books Online (http://bit.ly/Yone4t)
Real-World Functional Programming with Examples in F# and C#
By Tomas Petricek; Jon Skeet
Manning Publications, December 2009
Functional programming languages like F#, Erlang, and Scala are attracting attention as an efficient way to handle the new requirements for programming multi-processor and high-availability applications. This book is a unique tutorial that explores the functional programming model through the F# and C# languages. The clearly presented ideas and examples teach readers how functional programming differs from other approaches. It explains how ideas look in F#-a functional language-as well as how they can be successfully used to solve programming problems in C#. Readers build on what they know about .NET and learn where a functional approach makes the most sense and how to apply it effectively in those cases.
Read it on Safari Books Online (http://bit.ly/146sDxs)
By Max Kanat-Alexander
O’Reilly Media, March 2012
Good software design is simple and easy to understand. This concise guide helps you understand the fundamentals of good design through scientific laws and principles you can apply to any programming language or project. You’ll learn how to create a sound plan for your software project, and make better decisions about the pattern and structure of your system. Discover why good software design has become the missing science. Learn how to make easier changes in the future by keeping your code simpler and gain better knowledge of your software’s behavior with more accurate tests.
Read it on Safari Books Online (http://bit.ly/VXXgkW)
The Object-Oriented Thought Process, Third Edition
By Matt Weisfeld
Addison-Wesley Professional, August 2008
Written by a developer for developers who want to make the leap to object-oriented technologies as well as managers who simply want to understand what they are managing, this book provides a solution-oriented approach to object-oriented programming. You will learn to understand object-oriented design with inheritance or composition, object aggregation and association, and the difference between interfaces and implementations. You will also become more efficient and a better thinker in terms of object-oriented development. This revised edition focuses on interoperability across various technologies, primarily using XML as the communication mechanism. A more detailed focus is placed on how business objects operate over networks, including client/server architectures and web services.
Read it on Safari Books Online (http://bit.ly/Xyg4Eb)
By Christopher G. Lasater
Jones & Bartlett Learning, October 2006
Design Patterns demonstrates how software developers can improve the performance, maintainability, portability, and scalability of their code through the use of the Gang of Four design patterns. After a discussion of patterns methodology, the book delves into each of the 23 patterns. Each pattern section gives a detailed description of the pattern, refactored from either Boolean logic or simpler, less-maintainable code that you might encounter in the real world, and shows you how to use the pattern in your code.
Read it on Safari Books Online (http://bit.ly/V7YJlR)
Design Patterns in Ruby
By Russ Olsen
Addison-Wesley Professional, December 2007
Most design pattern books are based on C++ and Java. But Ruby is different — and the language’s unique qualities make design patterns easier to implement and use. In this book, Russ Olsen demonstrates how to combine Ruby’s power and elegance with patterns, and write more sophisticated, effective software with far fewer lines of code. The book especially calls attention to Ruby features that simplify the use of patterns, including dynamic typing, code closures, and “mixins” for easier code reuse. You’ll discover opportunities to implement patterns in just one or two lines of code, instead of the endlessly repeated boilerplate that conventional languages often require.
Read it on Safari Books Online (http://bit.ly/Xyg6vI)
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
By Barbara Liskov; John Guttag
Addison-Wesley Professional, June 2000
This book shows how to build production-quality programs—programs that are reliable, easy to maintain, and quick to modify. Its emphasis is on modular program construction: how to get the modules right and how to organize a program as a collection of modules. The book presents a methodology effective for either an individual programmer, who may be writing a small program or a single module in a larger one; or a software engineer, who may be part of a team developing a complex program comprised of many modules. Both audiences will acquire a solid foundation for object-oriented program design and component-based software development from this methodology. The Java programming language is used for the book’s examples. The techniques presented are language independent; however, and an introduction to key Java concepts is included for programmers who may not be familiar with the language.
Read it on Safari Books Online (http://bit.ly/14afvGG)
Algorithms of the Intelligent Web
By Haralambos Marmanis; Dmitry Babenko
Manning Publications, May 2009
Many Web 2.0 applications use powerful techniques to process information intelligently and offer features based on patterns and relationships in the data that couldn’t be discovered manually. This book is an example-driven blueprint for creating applications that collect, analyze, and act on the massive quantities of data users leave in their wake as they use the web. You’ll learn how to build Amazon- and Netflix-style recommendation engines, and how the same techniques apply to people matches on social-networking sites. See how click-trace analysis can result in smarter ad rotations. With a lot of examples, this book shows you how to build Web 2.0 applications that are as smart as your users.
Read it on Safari Books Online (http://bit.ly/WMVZeH)
Software Engineering: Principles and Practice
By Hans van Vliet
John Wiley & Sons, June 2008
This book challenges you to appreciate the issues, design trade-offs and teamwork required for successful software development. This new edition has been brought fully up to date, with complete coverage of all aspects of the software lifecycle and a strong focus on all the skills needed to carry out software projects on time and within budget. This book is invaluable for everyone in software development and maintenance who wants an accessible account of the problems incurred in large-scale software development and the proposed solutions.
Read it on Safari Books Online (http://bit.ly/WVA17V)
Coders at Work: Reflections on the Craft of Programming
By Peter Seibel
Apress, September 2009
Patterned after the best selling Founders at Work, Coders at Work represents two years of interviews with some of the top programmers of our times. You will find out what your work habits are, coding preferences, language preferences, style choices and idiosyncrasies in the fascinating look at how some of the best in the world do their work.
Read it on Safari Books Online (http://bit.ly/WVA03P)
Software Development and Professional Practice
By John Dooley
Apress, July 2011
This book reveals how to design and code great software. What factors do you take into account? What makes a good design? What methods and processes are out there for designing software? Is designing small programs different than designing large ones? How can you tell a good design from a bad one? You’ll learn the principles of good software design, and how to turn those principles back into great code. This book is also about code construction, and how to write great programs and make them work. Using the Java language, you’ll look deeply into coding standards, debugging, unit testing, modularity, and other characteristics of good programs. You’ll also talk about reading code. How do you read code? What makes a program readable? Can good, readable code replace documentation? How much documentation do you really need? Finally, this book is also about human-computer interaction and user interface design issues. A poor user interface can ruin any desire to actually use a program; in this book, you’llfigure out why and how to avoid those errors.
Read it on Safari Books Online (http://bit.ly/10SCHeA)
By Charles Petzold
Microsoft Press, October 2000
What do flashlights, the British invasion, black cats, and seesaws have to do with computers? In this book, they show you the ingenious ways to manipulate language and invent new means of communicating with each other. You will 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.
Read it on Safari Books Online (http://bit.ly/WVA43B)
The Art of Computer Programming, Volume 4, Fascicle 1: Bitwise Tricks & Techniques; Binary Decision Diagrams
By Donald E. Knuth
Addison-Wesley Professional, March 2009
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. This fourth volume describes basic broadword operations and an important class of data structures that can make computer programs run dozens, even thousands, of times faster. The author brings together and explains a substantial amount of previously scattered but eminently practical information known only to a few specialists. This book demonstrates how ideas once thought to be “far out” are now ready to become a part of the programming mainstream.
Read it on Safari Books Online (http://bit.ly/14ag5Em)
Coding Interviews: Questions, Analysis & Solutions
By Harry He
Apress, December 2012
This book is about coding interview question of software and Internet companies. It covers five key factors which determine performance of candidates: (1) the basics of programming languages, data structures and algorithms, (2) approaches to writing code with high quality, (3) tips to solve difficult problems, (4) methods to optimize code, and (5) soft skills required in interviews. The basics of languages, algorithms and data structures are discussed as well as questions that explore how to write robust solutions after breaking down problems into manageable pieces. It also includes examples to focus on modeling and creative problem solving. Interview questions from the most popular companies in the IT industry are taken as examples to illustrate the five factors above. Besides solutions, it contains detailed analysis, how interviewers evaluate solutions, as well as why they like or dislike them.
Read it on Safari Books Online (http://bit.ly/VkXt47)
By E. Gabriella Coleman
Princeton University Press, November 2012
This book details the ethics behind hackers’ devotion to F/OSS, the social codes that guide its production, and the political struggles through which hackers question the scope and direction of copyright and patent law. In telling the story of the F/OSS movement, the book unfolds a broader narrative involving computing, the politics of access, and intellectual property. Looking at the ways that hackers sustain their productive freedom, the author shows that these activists, driven by a commitment to their work, reformulate key ideals including free speech, transparency, and meritocracy, and refuse restrictive intellectual protections.
Read it on Safari Books Online (http://bit.ly/XZTgzZ)
All rights reserved: Coding Bibliography