Past, current, and future. List is in approximate reverse chronological order.


The Alchemist Paulo Coelho

Gödel, Escher, Bach: an Eternal Golden Braid Douglas R. Hofstadter

Peopleware Productive Projects and Teams - Tom DeMarco and Timothy Lister

The Mythical Man-Month Frederick P. Brooks, Jr.

An Introduction to Functional Programming Systems Using Haskell A J T Davie

Purely Functional Data Structures Chris Okasaki

Mastering Regular Expressions Jeffrey E.F. Friedl

Hackers Delight Henry S. Warren, Jr.

Artificial Intelligence A modern Approach - Stuart Russell and Peter Norvig

Coders At Work Reflections on the craft of programming - Peter Seibel

Algorithms in C Parts 1 - 5 Robert Sedgewick

Linux Kernel Networking Implementation and Theory - Rami Rosen

The Art of Linux Kernel Design Illustrating the Operating System Design Principle and Implementation - Lixiang Yang


Programming Pearls Jon Bentley


Key: (x,x) (text read, exercises completed)
a = all, s = some, m = most, n= none, - = not applicable (i.e no exercises in text).

Code Complete Steve McConnell (a,-)

802.11 Wireless Networks The Definitive Guide - Matthew S. Gast (m,-)

Linux Device Drivers 3rd Edition Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman (a,-) (read twice)

Refactoring Improving the Design of Existing Code - Martin Fowler (a,-)

The Design of the Unix Operating System Maurice J. Bach (a,-)

The Clean Coder A Code of Conduct for Professional Programmers - Robert C. Martin (a,-)

Modern Operating Systems Andrew S. Tanenbaum (m,)

Essential Linux Device Drivers Sreekrishnan Venkateswaran (a,-)

Linux Kernel Develop Robert Love (a,-)

Open Data Structures Pat Morin (m,-)

Pro Git Scott Chacon (m,-)

Introduction to Algorithms Thomas H. Cormen, Charles C. Leiserson, Ronald L. Rivest, Clifford Stein (m,-)

The Algorithm Design Manual Steven S Skiena (a,n)

The Go Programming Language Alan A. A. Donovan, Brian W. Kernighan (a,a)

Apprenticeship Patterns Guidance for the Aspiring Software Craftsman - David H. Hoover and Adewale Oshineye (a,-)

Real World Haskell Bryan O’Sullivan, John Goerzen and Don Stewart (s,s)

Learn You a Haskell For Great Good Miran Lipovaca (m,m)

Structure and Interpretation of Computer Programs Harold Abelson, Gerald Jay Sussman, Julie Sussman (m,m)

The Scheme Programming Language R. Kent Dybvig (m,m)

The Little Schemer Daniel P. Friedman, Matthias Felleisen (a,a)

ARM Assembly Language William Hohl (a,m)

The Linux Programming Interface Michael Kerrisk (m,m)

Programming the World Wide Rebert W. Sebesta (a,-)

Applied Cryptography Bruce Schneier (a,-)

Python Essential Reference David M. Beazley (m,-)

Clean Code, A Handbook of Agile Software Craftsmanship Robert C. Martin (a,-)

Python the Hard Way Zed A. Shaw (a,a)

UNIX Network Programming W. Richard Stevens, Bill Fenner, Andrew M. Rudoff (a,a)

Advanced Programming in the UNIX Environment W. Richard Stevens, Stephen A. Rago (a,a)

UNIX Systems Programming Kay A. Robbins, Steven Robbins (a,m)

Intermediate Perl Randal L. Schwartz, brian d foy, Tom Phoenix (a,a)

Learning Perl Randal L. Schwartz, brian d foy, Tom Phoenix (a,a)

Beginning Linux Programming Neil Matthew, Richard Stones (a,-)

Version Control with Git Jon Loeliger, Matthew McCullough (a,-)

The Pragmatic Programmer Andrew Hunt, David Thomas (a,-)

The Art of UNIX Programming Eric S. Raymond (a,-)

Expert C Programming, Deep C Secrets Peter Van Der Linden (a,-)

The Practice of Programming Brian W. Kernighan, Rob Pike (a,-)

How Linux Works Brian Ward (a,-)

Learning GNU Emacs Debra Cameron, James Elliott, Marc Loy, Eric Raymond, Bill Rosenblatt (a,-)

The Art of Computer Programming (volume 2) Seminumerical Algorithms - Donald E. Knuth (m,-)

The Art of Computer Programming (volume 1) Fundamental Algorithms - Donald E. Knuth (a,-)

Command Line Kung Foo Jason Cannon (a,-)

Linux Shell Scripting with Bash Ken O. Burtch (a,-)

From Bash to Z Shell Conquering the Command - Oliver Kiddle, Jerry Peek, Peter Stephenson (a,-)

Computer Networks A Systems Approach - Larry L. Peterson, Bruce S. Davie (a,-)

A Concise Introduction to Pure Mathematics Martin Liebeck (m,m)

Computer Organization and Design David A. Patterson, John L Hennessy (a,-)

Operating System Concepts Abraham Silberschatz, Peter Baer Galvin, Greg Cagne (a,-)

The C Programming Language Brian W. Kernighan, Dennis Ritchie (a,a)