resources
resources copied to clipboard
A collection of useful papers, books, and links for the refined programmer
This is a collection of papers and books that have been useful to the Data Platform team at Twitter, as well as a collection put together by Peter Seibel here.
Many of these papers are available for free online; I welcome pull requests to update links to papers, or of course to add new papers and books.
Content generally presented in alphabetical order by subject and title.
Papers
Algorithms and Data Structures
Space/time trade-offs in hash coding with allowable errors by Bloom
Databases
Bit Weaving by Jignesh
Efficiently Compiling Efficient Query Plans for Modern Hardware by Neumann
Parallel Database System by David DeWitt and Jim Gray
Data Mining
Fast Discovery of Association Rules by Rakesh Agrawal
Mining association rules between sets of items in large databases by Rakesh Agrawal
Functional Programming
Applicative programming with effects
Theorems for Free by Wadler
Machine Learning
Hyper Log Log by Flajolet
Organizations
Birds and Frogs by Freeman Dyson
Scala
Scalable Component Abstractions by Odersky
Theorem Proving and Model Checking
Model-Checking Multi-Threaded Distributed Java Programs by Scott Stoller
Books
Algorithms and Data Structures
Data Structures and Algorithms by Aho, Hopcroft, Ullman
Introduction to Algorithms ("CLRS”) by Cormen, Leiserson, Rivest, and Stein
Programming Pearls by Bentley
The Art of Computer Programming by Knuth
C
The C Programming Language (“K&R”) by Kernighan and Ritchie
C: A Reference Manual (“H&S”) by Harbison and Steele
Category Theory
Category Theory by Steve Awodey
Conceptual Mathematics by Lawvere
Children
The Phantom Tollbooth by Norton Juster
Databases
An Introduction to Database Systems by Date
Database Management Systems by Ramakrishnan and Gehrke
Transaction Processing: Concepts and Techniques by Gray and Reuter
Design
Code Complete by McConnell
Design Patterns ("Gang of Four”) by Gamma, Johnson, Helm, Vlissides]
How to Design Programs ("HtDP”) by Felleisen, Findler, Flatt, and Krishnamurthi
Object-Oriented Software Construction ("OOSC”) by Meyer
Functional Programming
Purely Functional Data Structures by Okasaki
Lisp
Common Lisp the Language ("CLTL”) by Steele
Common Lisp the Language ("CLTL2”) by Steele
Lisp 1.5 Manual by McCarthy
Lisp in Small Pieces ("LiSP”) by Queinnec
Paradigms of Artificial Intelligence Programming ("PAIP”) by Norvig
Structure and Interpretation of Computer Programs ("SICP”) by Abelson and Sussman
The Art of the Metaobject Protocol ("AMOP”) by Kiczales
Machine Learning
AI: A Modern Approach by Norvig
Neural Networks for Pattern Recognition by Bishop
Pattern Classification by Duda, et al
Management
Mythical Man Month by Brooks
Peopleware by DeMarco and Lister
Math
Mathematics: Its Content, Methods and Meaning by Aleksandrov
Misc
Concepts, Techniques, and Models of Computer Programming by Van-Roy
The Practice of Programming by Kernighan and Pike
Perl
Higher Order Perl by Dominus
Programming Perl ("Camel Book”) by Wall, Schwartz, and Christiansen
Programming Languages
Lambda Calculi With Types by Berendregt
Types and Programming Languages by Pierce
Ruby
Programming Ruby ("Pickaxe Book”) by Thomas
Smalltalk
Smalltalk-80: The Language by Golgberg
Smalltalk-80: The Language and its Implementation by Golgberg and Robson
Systems programming
Compilers: Principles, Techniques, and Tools ("Dragon Book”) by Ullman, Aho, Lam, and Sethi
Modern Operating Systems by Tannenbaum
TCP/IP Illustrated vols. I-III by Stevens
- Vol 1: The Protocols
- Vol 2: The Implementation
- Vol 3: TCP for Transactions, HTTP, NNTP, and the UNIX Domain Protocols
Unix
Advanced Programming in the Unix Environment by Stevens
The Unix Programming Environment by Kernighan and Pike
Unix Network Programming by Stevens
Writing
On Writing Well by Zinsser
Style: Lessons in Clarity and Grace by Joseph Williams
Blogs
http://vanillajava.blogspot.com/