Put your credit card back in your wallet — I’ve found some really good software development books that are available for free, and will keep you busy until the end of the year, at least.
The Nature of Code by Daniel Shiffman
Daniel Shiffman is a professor at NYU’s ITP program, where he teaches “a course entitled Introduction to Computational Media. In this course, the students learn the basics of programming (variables, conditionals, loops, objects, arrays) as well as a survey of applications related to making interactive projects (images, pixels, computer vision, networking, data, 3D).”
So, on the one hand, this is a book targeting beginners (or near beginners..) but quickly dives into topics like working with particle systems, physics libraries, and neural networks. I’ve been writing code for a living for a long time now, and I learned a ton from reading this book. It’s available for purchase in either PDF, or print formats, but it’s far more useful in its online form.
All the code in the book is written using the Java-based Processing language, for which there’s also a JavaScript implementation, Processing.js, and all of his examples run live in the browser — much more convenient than needing to fire up an external development environment to play with things.
Online version (and links to paid versions) available here.
The Mature Optimization Handbook by Carlos Bueno
Carlos Bueno is an engineer at Facebook, and has written a book that came out of an internal training class he taught there. Thorough, and brings an interesting spin on the idea of when it’s even worth your time to optimize heavily:
“Unlike testing or bug-fixing, performance work can often be deferred until just before or even after the program has shipped. In my experience, it makes most sense on mature systems whose architectures have settled down. New code is almost by definition slow code, but it’s also likely to be ripped out and replaced as a young program slouches towards beta-test. Unless your optimizations are going to stick around long enough to pay for the time you spend making them, plus the opportunity cost of not doing something else, it’s a net loss.”
Available in ePub, Mobi, and PDF formats here.
Mathematics for Computer Science, by Lehman, Leighton, and Meyer
876 page text from the 6.042 class at MIT’s Computer Science and Artificial Intelligence Lab. Even if you already know all of what’s in this book (hint: you probably don’t), it’s an amazing reference. If you’re going to learn something from the book, a little poking around on the CSAIL website will lead you to the problem sets that are used in that class.
PDF format available here.
The Motherlode
Victor Felder maintains a master list of freely available programming books on his github site.