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. This page collects the responses I received. (A few are missing because I am still tracking down bibliographic information.) Many thanks to Frank Atanassow, David Benson, Nick Benton, Karl Crary, Olivier Danvy, Mariangiola Dezani, Dan Friedman, Alwyn Goodloe, Pieter Hartel, Michael Hicks, Robert Irwin, Luis Lamb, Rod Moten, Rishiyur Nikhil, Tobias Nipkow, Jens Palsberg, and John Reynolds for contributing.

Additional suggestions are welcome. The greatest of the great (mentioned by many people): C. Peter J. Robin Milner. Gordon Plotkin. John C. Pretty great works (mentioned by multiple people): Luca Cardelli. Luis Damas and Robin Milner. Edsger W. Edsger W. William A. Robert Kowalski. Peter J. John McCarthy. Eugenio Moggi. Greg Morrisett, David Walker, Karl Crary, and Neal Glew. George C. Gordon D. Gordon D. Jr. C. Alonzo Church. O. 10 must-read books for developers | Development tools.

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 6.2 Maintaining the heap property 154 6.3 Building a heap 156 7 Quicksort 170 Index.

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. Working Scheme systems based on the design described in this book are quite common student projects. Characters[edit] The book uses some fictional characters repeatedly: Ben Bitdiddle. License[edit] The book is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.[4] Coursework[edit] Reception[edit] BYTE recommended SICP "for professional programmers who are really interested in their profession".

Influence[edit] SICP has been influential in computer science education, and a number of later books have been inspired by its style. References[edit] Further reading[edit] External links[edit] 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. 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. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman about compiler construction. Although more than two decades have passed since the publication of the first edition, it is widely regarded as the classic definitive compiler technology text.[2] It is affectionately known as the Dragon Book to a generation of computer scientists [3][4] as its cover depicts a knight and a dragon in battle, a metaphor for conquering complexity. First edition[edit] The first edition is informally called the 'red dragon book' to distinguish it from the second edition[5] and from Aho & Ullman’s 1977 Principles of Compiler Design sometimes known as the 'green dragon book' [5] Topics covered in the first edition include: Second edition[edit] Following in the tradition of its two predecessors, the second edition features a dragon and a knight on its cover, and is informally known as the purple dragon.

See also[edit] 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". 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] The mythical man-month[edit] Brooks discusses several causes of scheduling failures. Therefore, assigning more programmers to a project running behind schedule will make it even later.

The manual[edit]

Extras

The Art of Computer Programming. The Pragmatic Bookshelf. You’re a Pragmatic Programmer. 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.

The Pragmatic Programmer Book First published back at the turn of the century in 1999, The Pragmatic Programmer: From Journeyman to Master still expresses our beliefs about successful software development. Pragmatic Programmer Tips The original seventy tips from The Pragmatic Programmer. And now, for the first time ever, you can now get the DRM-free PDF, epub, and mobi versions of The Pragmatic Programmer directly from us. New Title Announcements and Sales Do you get our email newsletter? 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.

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. The version of C described in this book is sometimes referred to as K&R C (after the book's authors), often to distinguish this early version from the later version of C standardized as ANSI C.[2] 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. We have tried to retain the brevity of the first edition. Before the advent of ANSI C, the first edition of the text served as the de facto standard of the language for writers of C compilers. See also[edit] Books by Martin Fowler.