background preloader

Developer Reading Lists

Facebook Twitter

Great Works in Programming Languages. In September, 2004, I posted a query to the Types list asking people to name the five most important papers ever written in the area of programming languages.

Great Works in Programming Languages

This page collects the responses I received. (A few are missing because I am still tracking down bibliographic information.) 10 must-read books for developers. Refactoring: Improving the Design of Existing Code (9780201485677): Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts. Introduction to Algorithms, Third Edition. Table of Contents I Foundations Introduction 3 1 The Role of Algorithms in Computing 5 1.1 Algorithms 5 1.2 Algorithms as a technology 11 2 Getting Started 16 2.1 Insertion sort 16 2.2 Analyzing algorithms 23 2.3 Designing algorithms 29 3 Growth of Functions 43 3.1 Asymptotic notation 43 3.2 Standard notations and common functions 53 4 Divide-and-Conquer 65 4.1 The maximum-subarray problem 68 4.2 Strassen's algorithm for matrix multiplication 75 4.3 The substitution method for solving recurrences 83 4.4 The recursion-tree method for solving recurrences 88 4.5 The master method for solving recurrences 93 4.6 Proof of the master theorem 97 5 Probabilistic Analysis and Randomized Algorithms 114 5.1 The hiring problem 114 5.2 Indicator random variables 118 5.3 Randomized algorithms 122 5.4 Probabilistic analysis and further uses of indicator random variables 130 II Sorting and Order Statistics Introduction 147 6 Heapsort 151 6.1 Heaps 151.

Introduction to Algorithms, Third Edition

Structure and Interpretation of Computer Programs. Content[edit] The program also introduces a practical implementation of the register machine concept, defining and developing an assembler for such a construct, which is used as a virtual machine for the implementation of interpreters and compilers in the book, and as a testbed for illustrating the implementation and effect of modifications to the evaluation mechanism.

Structure and Interpretation of Computer Programs

Working Scheme systems based on the design described in this book are quite common student projects. Design Patterns. It has been highly influential to the field of software engineering and is regarded as an important source for object-oriented design theory and practice.

Design Patterns

More than 500,000 copies have been sold in English and in 13 other languages. The authors are often referred to as the Gang of Four (GoF).[1] History[edit] Introduction, Chapter 1[edit] Chapter 1 is a discussion of object-oriented design techniques, based on the authors' experience, which they believe would lead to good object-oriented software design, including: clients remain unaware of the specific types of objects they use, as long as the object adheres to the interfaceclients remain unaware of the classes that implement these objects; clients only know about the abstract class(es) defining the interface Use of an interface also leads to dynamic binding and polymorphism, which are central features of object-oriented programming.

The authors admit that delegation and parameterization are very powerful but add a warning: Formatting[edit] Compilers: Principles, Techniques, and Tools. Compilers: Principles, Techniques, and Tools[1] is a computer science textbook by Alfred V.

Compilers: Principles, Techniques, and Tools

Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman about compiler construction. The Mythical Man-Month. The Mythical Man-Month: Essays on Software Engineering is a book on software engineering and project management by Fred Brooks, whose central theme is that "adding manpower to a late software project makes it later".

The Mythical Man-Month

This idea is known as Brooks' law, and is presented along with the second-system effect and advocacy of prototyping. Brooks' observations are based on his experiences at IBM while managing the development of OS/360. He had added more programmers to a project falling behind schedule, a decision that he would later conclude had, counter-intuitively, delayed the project even further. He also made the mistake of asserting that one project — writing an ALGOL compiler — would require six months, regardless of the number of workers involved (it required longer).

Ideas presented[edit]

Extras

The Art of Computer Programming. The Pragmatic Bookshelf. You’re a Pragmatic Programmer.

The Pragmatic Bookshelf

You aren’t wedded to any particular technology, but you have a broad enough background in the science, and your experience with practical projects allows you to choose good solutions in particular situations. Theory and practice combine to make you strong. You adjust your approach to suit the current circumstances and environment. And you do this continuously as the work progresses. Pragmatic Programmers get the job done, and do it well. Code Complete 2nd Edition - Code Complete 2 Home Page. The C Programming Language. Book cover of The C Programming Language, first edition Book cover of The C Programming Language, second edition History[edit] The first edition of the book, published in 1978, was the first widely available book on the C programming language.

The C Programming Language

C was created by Dennis Ritchie. Brian Kernighan wrote the first C tutorial.[1] The authors came together to write the book in conjunction with the language's early development at AT&T Bell Labs. Influence[edit] The C Programming Language has often been cited as a model for technical writing, due to the book's clear presentation and concise treatment. Books by Martin Fowler.