Puppy School - Hacking Homework
If you don't know how to code, then you can learn even if you think you can't. Thousands of people have learned programming from these fine books:
Learn Code The Hard Way
I'm also working on a whole series of programming education books at learncodethehardway.org
These are works in progress, and feedback is welcome.
Graphics Programming
- GPU Gems
- GPU Gems 2 - ch 8,14,18,29,30 as pdf
- GPU Gems 3
- Graphics Programming Black Book
- ShaderX series
- DirectX manual (draft)
- Learning Modern 3D Graphics Programming (draft)
Language Agnostic
- Object-Oriented Reengineering Patterns
- Foundations of Programming
- Computer Musings (lectures by Donald Knuth)
- The Cathedral and the Bazaar
- Patterns and Practices: Application Architecture Guide 2.0
- Security Engineering
- Digital Signal Processing For Engineers and Scientists
- Getting Real
- Domain Driven Design Quickly
- OO Design
- Best Kept Secrets of Peer Code Review
- NASA Software Measurement Handbook
- NASA Manager Handbook for Software Development (PDF)
- Introduction to Functional Programming (class lectures and slides)
- How to Design Programs
- Guide to the Software Engineering Body of Knowledge
- Online Course Materials
- Algorithms (draft)
- Data Structures and Algorithms
- Essential Skills for Agile Development
- Programming Languages: Application and Interpretation
- Learn to Program
- Patterns of Software: Tales from the Software Community (PDF)
- How to write Unmaintainable Code
- The Art of Unix Programming
- The Definitive Guide to Building Code Quality
- How to Think Like a Computer Scientist
- Planning Algorithms
- Mathematical Logic - an Introduction (PDF)
- An Introduction to the Theory of Computation
- Developers Developers Developers Developers (broken download link?)
- Linkers and loaders
- Let's Build a Compiler
- Producing Open Source Software
- How to Write Parallel Programs
- Don't Just Roll the Dice
- 97 Things Every Programmer Should Know
- How Computers Work
- Introduction to Information Retrieval
- Is Parallel Programming Hard, And, If So, What Can You Do About It?
- Matters Computational
- Type Theory and Functional Programming
- Getting started with Open source development (PDF)
- Database Fundamentals (PDF)
- Clever Algorithms
- Summary of the GoF Design Patterns
- Flow based Programming
- Algorithms and Data-Structures (PDF)
- Compiler Construction (PDF)
- Project Oberon (PDF)
- The Little Book of Semaphores
- Essential Skills for Agile Development
- I Am a Bug
- Mining of Massive Datasets
- Data-Intensive Text Processing with MapReduce (PDF)
- Understanding IP Addressing: Everything you ever wanted to know (PDF)
- Operating Systems and Middleware (PDF and LaTeX)
- Think Stats: Probability and Statistics for Programmers (PDF, code written in Python)
- The Architecture of Open Source Applications
ASP.NET MVC
Assembly Language
- ProgrammingGroundUp (PDF)
- Paul Carter's Tutorial on x86 Assembly
- Software optimization resources by Agner Fog
Bash
C / C++
- The new C standard - an annotated reference
- Matters Computational: Ideas, Algorithms, Source Code, by Jorg Arndt
- The C book
- Thinking in C++, Second Edition
- C++ Annotations
- Software optimization resources by Agner Fog
- Introduction to Design Patterns in C++ with Qt 4 (PDF)
- Object Oriented Programming in C (PDF)
- Beej's Guide to Network Programming
- Learn C the hard way
- Also see: The Definitive C++ Book Guide and List
C#"
- C# School (covers C# 1.0 and 2.0)
- Threading in C#
- C# Yellow Book (intro to programming)
- C# Programming - Wikibook
- C# Essentials
- Data Structures and Algorithms with Object-Oriented Design Patterns in C#
- Illustrated C# 2008 (.zip, dead link)
Clojure
ColdFusion
DB2
- Getting started with IBM Data Studio for DB2 (PDF)
- Getting started with IBM DB2 development (PDF)
- Getting started with DB2 Express-C (PDF)
Delphi / Pascal
Django
Erlang
Flex
F#
- The F# Survival Guide
- F Sharp Programming in Wikibooks
- Real World Functional Programming (MSDN Chapters)
Forth
Git
Grails
Haskell
HTML / CSS
Java
- Sun's Java Tutorials
- Thinking in Java
- How to Think Like a Computer Scientist
- Java Thin-Client Programming
- OSGi in Practice (PDF)
- Java 6 Tutorial (PDF)
JavaScript
- Eloquent JavaScript
- Crockford's JavaScript
- jQuery Fundamentals (starts with JavaScript basics)
- Mozilla Developer Network's JavaScript Guide
- Essential Javascript & jQuery Design Patterns for Beginners
Latex
- The Not So Short Introduction to LATEX (perfect for beginners)
Linux
Lisp
- COMMON LISP: An Interactive Approach
- A Short Course in Common Lisp
- Structure And Interpretation of Computer Programs
- A Gentle Introduction to Symbolic Computation (PDF)
- Practical Common Lisp
- On Lisp
- ANSI Common Lisp
- Common Lisp the Language, 2nd Edition
- Successful Lisp
- Let Over Lambda - 50 Years of Lisp
- Natural Language Processing in Lisp
Lua
- Programming In Lua (for v5 but still largely relevant)
- Lua Programming Gems (not entirely free, but has a lot of free chapters and accompanying code)
Maven
- Better Builds with Maven
- Maven by Example
- Maven: The Complete Reference
- Repository Management with Nexus
- Developing with Eclipse and Maven
Mercurial
Nemerle
.NET"
- C# School (covers C# 1.0 and 2.0)
- Visual Studio Tips and Tricks (VS 2003-2005 only)
- Entity Framework
- Charles Petzold's .NET Book 0
- Threading in C#
- C# Yellow Book (intro to programming)
- C# Programming - Wikibook
- C# Essentials
- Data Structures and Algorithms with Object-Oriented Design Patterns in C#
- Nemerle
NoSQL
Oberon
- Programming in Oberon (PDF)
Objective-C
OCaml
Oracle Server
- Oracle's Guides and Manuals
Oracle PL/SQL
- PL/SQL Language Reference
- PL/SQL Packages and Types Reference
- Steven Feuerstein's PL/SQL Obsession - Videos and Presentations
Parrot / Perl 6
- Using Perl 6 (work in progress)
Perl
- Higher-Order Perl
- Perl The Hard Way
- Extreme Perl
- Perl Free Online EBooks (meta-list)
- The Mason Book
- Practical mod_perl
- Beginning Perl
- Embedding Perl in HTML with Mason
- Perl & LWP
- Perl for the Web
- Web Client Programming with Perl
- Modern Perl 5
PHP
- Symfony2
- Practical PHP Programming (wiki containing O'Reilly's PHP In a Nutshell)
- Zend Framework: Survive the Deep End
PowerShell
Prolog
- Building Expert Systems in Prolog
- Adventure in Prolog
- Prolog Programming A First Course
- Logic, Programming and Prolog (2ed)
- Introduction to Prolog for Mathematicians
- Learn Prolog Now!
- Natural Language Processing in Prolog
- Natural Language Processing Techniques in Prolog
- Prolog techniques
- Applications of Prolog
- Simply logical
PostgreSQL
Python
- Byte of Python
- Building Skills in Python Version 2.5
- Python Bibliotheca
- Think Python (PDF)
- Data Structures and Algorithms in Python
- Dive into Python
- How to Think Like a Computer Scientist: Learning with Python
- Python for Fun
- Invent Your Own Computer Games With Python
- Learn Python The Hard Way
- Thinking in Python
- The Django Book
- Snake Wrangling For Kids
- Natural Language Processing with Python
R
Ruby
- Programming Ruby
- Why's (Poignant) Guide to Ruby (mirror)
- Mr. Neighborly's Humble Little Ruby Book
- Ruby Best Practices
- MacRuby: The Definitive Guide
- Learn Ruby the hard way
Ruby on Rails
Scala
Scheme
Smalltalk
- Free Online Smalltalk Books (meta-list)
- Squeak By Example (Smalltalk IDE)
Subversion
SQL
- Developing Time-Oriented Database Applications in SQL
- Use The Index, Luke! (a guide to SQL database performance for developers)
- Learn SQL The Hard Way