(source: https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md)
Index
- Meta-Lists
- Graphics user interfaces
- Graphics Programming
- Language Agnostic
- Ada
- Android
- Autotools
- ASP.NET MVC
- Assembly Language
- Bash
- C
- C++
- Clojure
- CoffeeScript
- ColdFusion
- D
- Dart
- DTrace
- DB2
- Delphi / Pascal
- Elasticsearch
- Emacs
- Erlang
- Flex
- F#
- Forth
- Git
- Go
- Grails
- Hadoop
- Haskell
- HTML / CSS
- Icon
- IDL
- J
- Java
- JavaScript
- LaTeX
- Linux
- Lisp
- Lua
- Mathematica
- Maven
- Mercurial
- .NET (C# / VB / Nemerle / Visual Studio)
- NoSQL
- Oberon
- Objective-C
- OCaml
- Octave
- OpenSCAD
- Oracle Server
- Oracle PL/SQL
- Parrot / Perl 6
- Perl
- PHP
- PowerShell
- Processing
- Prolog
- PostgreSQL
- Python
- R
- Racket
- Ruby
- Ruby on Rails
- Rust
- Sage
- Scala
- Scheme
- Sed
- Smalltalk
- Subversion
- SQL (implementation agnostic)
- SQL Server
- Teradata
- TeX
- Theory
- Vim
- Websphere
- Windows Phone
Meta-Lists
- 25 Free Computer Science Ebooks
- Cheat Sheets (Free)
- Free Smalltalk Books, collected by Stéphane Ducasse
- Free Tech Books
- Hacker Shelf
- Microsoft Press: Free E-Books
- MindView Inc
- O'Reilly's Commons
- O'Reilly's Open Books Project
- TechBooksForFree.com
- Theassayer.org
- Wikibooks: Programming
Graphics Programming
- DirectX manual (draft)
- Learning Modern 3D Graphics Programming (draft)
- Introduction to Modern OpenGL
- GPU Gems
- GPU Gems 2 - ch 8,14,18,29,30 as pdf
- GPU Gems 3
- Graphics Programming Black Book
- OpenGL Insights (chapters 22, 23, 28, 33, 39)
- ShaderX series
- Tutorials for modern OpenGL
Graphics User Interfaces
Language Agnostic
Algorithms & Datastructures
- Algorithms and Data-Structures (PDF)
- Algorithms (draft)
- Binary Trees
- Clever Algorithms
- Computational Geometry: Algorithms and Applications (chapters 1 and 9, pseudo-code)
- Data Structures and Algorithms: Annotated Reference with Examples
- The Algorithm Design Manual
- Hacker's Delight (chapter 2, code)
- LEDA: A Platform for Combinatorial and Geometric Computing
- Planning Algorithms
- Linked List Basics
- Linked List Problems
- Open Data Structures
- Purely Functional Data Structures
- The Great Tree List Recursion Problem
- Matters Computational
- Algorithmic Graph Theory
- Foundations of Computer Science - Al Aho and Jeff Ullman
- A Field Guide To Genetic Programming
- The Art of Computer Programming (fascicles, mostly volume 4)
- Programming Pearls
- Algorithms for Programmers: Ideas and Source Code
- Sequential and parallel sorting algorithms
- Text Algorithms
- Problem Solving with Algorithms and Data Structures
Theoretical Computer Science
- Structure and Interpretation of Computer Programs
- Programming Languages: Application and Interpretation
- Introduction to Computing
- An Introduction to the Theory of Computation
- Think Complexity - Allen B. Downey
Operating systems
- The Art of Unix Programming
- The Little Book of Semaphores - Allen B. Downey
- Operating Systems and Middleware (PDF and LaTeX)
- Practical File System Design:The Be File System(PDF) - Dominic Giampaolo
Database
Networking
- High-Performance Browser Networking
- The TCP/IP Guide
- Understanding IP Addressing: Everything you ever wanted to know (PDF)
- ZeroMQ Guide
- Network Security Tools
Compiler Design
- Compiler Construction (PDF)
- Let's Build a Compiler
- Linkers and loaders
- Compiler Design: Theory, Tools, and Examples
- Practical and Theoretical Aspects of Compiler Construction (class lectures and slides)
Programming Paradigms
- Introduction to Functional Programming (class lectures and slides)
- Type Theory and Functional Programming
Parallel Programming
Software Architecture
- Seamless Object-Oriented Software Architecture
- How to write Unmaintainable Code
- Object-Oriented Reengineering Patterns
- Patterns and Practices: Application Architecture Guide 2.0
- The Definitive Guide to Building Code Quality
- Patterns of Software: Tales from the Software Community (PDF)
- Best Kept Secrets of Peer Code Review
- Domain Driven Design Quickly
- Essential Skills for Agile Development
- Guide to the Software Engineering Body of Knowledge
- Programming Reliable Systems (Joe Armstrong's PhD thesis)
- How to Design Programs
- NASA Manager Handbook for Software Development (PDF)
- NASA Software Measurement Handbook
- Don't Just Roll the Dice
Open Source Ecosystem
- Data Journalism Handbook
- Free Software, Free Society
- Getting started with Open source development (PDF)
- Innovation Happens Elsewhere
- Producing Open Source Software
- The Cathedral and the Bazaar
- The Architecture of Open Source Applications
- The Future of the Internet
- The Performance of Open Source Applications
Information Retrieval
Datamining
Machine Learning
- Programming Computer Vision with Python
- A Course in Machine Learning
- Computer Vision: Algorithms and Applications
- Bayesian Reasoning and Machine Learning
- Introduction to Machine Learning
- Gaussian Processes for Machine Learning
- Information Theory, Inference, and Learning Algorithms
Mathematics
- Think Bayes: Bayesian Statistics Made Simple - Allen B. Downey
- Think Stats: Probability and Statistics for Programmers (code written in Python) - Allen B. Downey
- Mathematical Logic - an Introduction (PDF)
- Bayesian Methods for Hackers
- Introduction to Statistical Thought
- Mathematics for Computer Science
- Category Theory for Computing Science
- Essentials of Metaheuristics by Sean Luke
Misc
- 97 Things Every Programmer Should Know
- 97 Things Every Programmer Should Know - Extended
- A Mathematical Theory of Communication by Claude E.Shannon
- Asterisk™: The Definitive Guide
- How to Think Like a Computer Scientist
- I Am a Bug
- Learn to Program
- Foundations of Programming
- Communicating Sequential Processes (PDF) - Tony Hoare
- Come, Let's Play: Scenario-Based Programming Using Live Sequence Charts
- Computer Musings (lectures by Donald Knuth)
- How Computers Work
- Data-Intensive Text Processing with MapReduce (PDF)
- Designing Interfaces by Jennifer Tidwell
- Digital Signal Processing For Engineers and Scientists
- Distributed systems for fun and profit
- Flow based Programming
- Getting Real
- Modeling Reactive Systems with Statecharts
- PNG: The Definitive Guide
- Pointers And Memory
- Project Oberon (PDF)
- Security Engineering
- Small Memory Software
- SVG Essentials
- Introduction to High-Performance Scientific Computing - Victor Eijkhout
- Object-Oriented Reengineering Patterns - Serge Demeyer, Stéphane Ducasse and Oscar Nierstrasz
- High-Performance Scientific Computing (class lectures and slides)
Web Performance
- Book of Speed by Stoyan Stefanov
MOOC
Ada
Android
- Google Android Developer Training
- Coreservlets Android Programming Tutorial
- Expert Android and Eclipse development knowledge
Autotools
ASP.NET MVC
Assembly Language
- Paul Carter's Tutorial on x86 Assembly
- Professional Assembly Language (PDF)
- Programming from the Ground Up (PDF)
- Software optimization resources by Agner Fog
- The Art of Assembly Language Programming
- x86 Assembly
- Ralf Brown's Interrupt List
Bash
- Advanced Bash-Scripting Guide
- Bash Guide for Beginners by Machtelt Garrels
- Lhunath's Bash Guide
- The Command Line Crash Course (also a Powershell reference)
C
- Beej's Guide to C Programming
- Beej's Guide to Network Programming
- The C book
- Essential C
- Learn C the hard way
- The new C standard - an annotated reference
- Object Oriented Programming in C (PDF)
- C Programming - Wikibooks
C++
- C++ Annotations
- C++ GUI Programming With Qt 3
- CS106X Programming Abstractions in C++
- Matters Computational: Ideas, Algorithms, Source Code, by Jorg Arndt
- Software optimization resources by Agner Fog
- Thinking in C++, Second Edition
- How To Think Like a Computer Scientist: C++ Version - Allen B. Downey
- Also see: The Definitive C++ Book Guide and List
Clojure
- A Brief Beginner’s Guide To Clojure
- Clojure - Functional Programming for the JVM
- Clojure Cookbook
- Clojure for the Brave and True
- Clojure Programming
- The Clojure Style Guide
- Data Sorcery with Clojure
- Modern cljs
CoffeeScript
ColdFusion
D
Dart
DTrace
DB2
- Getting started with DB2 Express-C (PDF)
- Getting started with IBM Data Studio for DB2 (PDF)
- Getting started with IBM DB2 development (PDF)
Delphi / Pascal
Elasticsearch
Emacs
Erlang
Flex
F Sharp
- F Sharp Programming in Wikibooks
- Real World Functional Programming (MSDN Chapters)
- Programming Language Concepts for Software Developers (PDF)
Forth
- Starting Forth
- Thinking Forth
- Programming Forth
- A Beginner's Guide to Forth
- And so Forth...
- Thoughtful Programming and Forth
Git
- Pro Git
- Gitmagic
- Git From The Bottom Up (PDF)
- Git internals
- Git Magic
- Git Reference
- Version Control by Example (Mercurial, Subversion, Verasity)
Go
- The Go Tutorial
- Go by Example
- Learning Go
- An Introduction to Programming in Go
- Network programming with Go
Grails
Hadoop
- Hadoop Illuminated - Mark Kerzner & Sujee Maniyam
- Programming Pig - Alan Gates
Haskell
- Haskell and Yesod
- Learn You a Haskell
- Natural Language Processing for the Working Programmer
- Parallel and Concurrent Programming in Haskell
- Real World Haskell
- Wikibook Haskell
- Yet Another Haskell Tutorial (PDF)
- Haskell no panic
- A Gentle Introduction to Haskell (HTML/PDF)
HTML / CSS
- Dive Into HTML5 (PDF)
- GA Dash
- HTML Dog Tutorials
- HTML5 Canvas - Steve Fulton & Jeff Fulton
- HTML5 for Publishers - Sanders Kleinfeld
- Learn CSS Layout
Icon
IDL
J
- Learning J by Roger Stokes- online || pdf
- J for C Programmers by Henry Rich- online || pdf || word 2003 file
- J Reference Card (pdf)
- Brief Reference by Chris Burke and Clifford Reiter (pdf)
- Computers and Mathematical Notation by Kenneth E Iverson
- Easy J by Linda Alvord, Norman Thomson - pdf || Word DOC
- Math for the Layman by Kenneth E Iverson (zipped html+images)
- Exploring Math by Kenneth E Iverson (pdf)
- Arithmetic by Kenneth E Iverson (pdf)
- Calculus by Kenneth E Iverson (pdf)
- Concrete Math Companion by Kenneth E Iverson (pdf)
- J Primer
Java
- Artificial Intelligence - Foundation of Computational Agents
- Data Structures and Algorithms with Object-Oriented Design Patterns in Java
- Category wise tutorials - J2EE
- Think Java: How to Think Like a Computer Scientist - Allen B. Downey
- Introduction to Programming Using Java - David J. Eck
- Java Application Development on Linux by Carl Albing and Michael Schwarz (PDF)
- The Java EE6 Tutorial (PDF)
- Java Thin-Client Programming
- Learning Java - Patrick Niemeyer
- OSGi in Practice (PDF)
- Sun's Java Tutorials
- Thinking in Java
JavaScript
- Crockford's JavaScript
- Eloquent JavaScript
- Essential Javascript & jQuery Design Patterns for Beginners
- JavaScript Bible
- JavaScript Essentials
- jQuery Fundamentals (starts with JavaScript basics)
- Mozilla Developer Network's JavaScript Guide
- JavaScript Allongé
- Learning JavaScript Design Patterns
- O'Reilly Programming JavaScript Applications - Early Release
- The JavaScript Tutorial
- AngularJS in 60 Minutes
Backbone.js
D3.js
Node.js
LaTeX
See also TeX
Linux
- Advanced Linux Programming
- Getting Started with Ubuntu
- GNU Autoconf, Automake and Libtool
- GTK+/Gnome Application Development
- The Debian Administrator's Handbook
- The Linux Command Line (PDF)
- The Linux Development Platform (PDF)
- Linux Device Drivers by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
- Linux Kernel in a Nutshell
- The Linux Kernel Module Programming Guide
- Secure Programming for Linux and Unix
- Linux from Scratch
- Ubuntu Pocket Guide and Reference
- What Every Programmer Should Know About Memory
Lisp
- Common Lisp the Language, 2nd Edition
- Common Lisp: A Gentle Introduction to Symbolic Computation - David S. Touretzky
- Common Lisp Quick Reference
- Let Over Lambda - 50 Years of Lisp
- Natural Language Processing in Lisp
- On Lisp
- Practical Common Lisp
- Successful Lisp: How to Understand and Use Common Lisp - David Lamkins
- Sketchy LISP - Nils Holm
Lua
- Programming In Lua (for version 5)
- Programming Gems
- Lua 5.1 Reference Manual
Mathematica
Maven
- Better Builds with Maven
- Maven by Example
- Maven: The Complete Reference
- Repository Management with Nexus
- Developing with Eclipse and Maven
Mercurial
.NET (C# / VB / Nemerle / Visual Studio)
- C# Essentials
- C# Programming - Wikibook
- C# Yellow Book (intro to programming)
- Charles Petzold's .NET Book Zero
- Data Structures and Algorithms with Object-Oriented Design Patterns in C#
- Entity Framework
- Moving to Microsoft Visual Studio 2010
- Nemerle
- Threading in C#
- Visual Basic Essentials
- Visual Studio Tips and Tricks (VS 2003-2005 only)
NoSQL
- CouchDB: The Definitive Guide
- The Little MongoDB Book
- The Little Redis Book
- The Little Riak Book
- Graph Databases
Oberon
Objective-C
OCaml
- Introduction to Objective Caml (PDF)
- Objective Caml for Scientists (first chapter only)
- Unix System Programming in OCaml
- Developing Applications With Objective Caml
- Real World OCaml
- Think OCaml - Allen B. Downey and Nicholas Monje
Octave
OpenSCAD
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
- Beginning Perl
- Embedding Perl in HTML with Mason
- Essential Perl
- Extreme Perl
- Higher-Order Perl
- The Mason Book
- Modern Perl 5
- Perl & LWP
- Perl for the Web
- Perl Free Online EBooks (meta-list)
- Learning Perl The Hard Way
- Practical mod_perl
- Web Client Programming with Perl
PHP
- PHP Essentials
- PHP: The Right Way
- Practical PHP Programming (wiki containing O'Reilly's PHP In a Nutshell)
- Symfony2
- Zend Framework: Survive the Deep End
- Laravel Framework
- Official Documentation (Offline Version)
- Code Happy (Laravel 3 Starter Book)
- Code Bright (Laravel 4 Starter Book)
- Drupal Framework
- * Drupal 6
- * Drupal 7 * The Tiny Book of Rules * Master Drupal in 7 hours
- * Drupal 8
- PHP Internals Book
PowerShell
Processing
Prolog
- Adventure in Prolog
- Applications of Prolog
- Building Expert Systems in Prolog
- Introduction to Prolog for Mathematicians
- Learn Prolog Now!
- Logic, Programming and Prolog (2ed)
- Natural Language Processing in Prolog
- Natural Language Processing Techniques in Prolog
- Prolog Techniques
- Simply Logical
- Visual Prolog 7.2 for Tyros
PostgreSQL
Python
- Byte of Python
- Data Structures and Algorithms in Python
- Dive into Python
- Dive into Python 3
- Hacking Secret Cyphers with Python - Al Sweigart
- Hitchiker's Guide to Python!
- How to Think Like a Computer Scientist: Learning with Python
- Invent Your Own Computer Games With Python - Al Sweigart
- Learn Python The Hard Way
- Lectures on scientific computing with python - J.R. Johansson
- Natural Language Processing with Python
- Porting to Python 3: An In-Depth Guide
- Python Bibliotheca
- Python Cookbook - David Beazley
- Python for Fun
- Python for Informatics: Exploring Information
- Python for you and me
- Python Scientific Lecture Notes
- Snake Wrangling For Kids
- Think Python - Allen B. Downey
- Problem Solving with Algorithms and Data Structures
Django
Flask
R
- The R Inferno (PDF)
- The R Manuals
- The R Language
- R by example
- Introduction to Probability and Statistics Using R
- Advanced R Programming
- R practicals
- R for spatial analysis
Racket
Ruby
- The Bastards Book of Ruby
- Learn Ruby the hard way
- MacRuby: The Definitive Guide
- Mr. Neighborly's Humble Little Ruby Book
- Programming Ruby
- Why's (Poignant) Guide to Ruby (mirror)
- Ruby Hacking Guide
- Ruby Best Practices (PDF)
- RubyMonk - Interactive Ruby tutorials
- A community-driven Ruby style guide
Ruby on Rails
- Ruby on Rails Tutorial: Learn Rails By Example
- Objects on Rails
- Ruby on Rails Guides
- A community-driven Rails style guide
Rust
Sage
Scala
- Another tour of Scala
- Effective Scala
- Exploring Lift (published earlier as "The Definitive Guide to Lift", PDF)
- Lift
- Pro Scala: Monadic Design Patterns for the Web
- Programming in Scala, First Edition
- Programming Scala
- Scala By Example (PDF)
- Scala School by Twitter
- A Scala Tutorial for Java programmers (PDF)
- Xtrace
Scheme
- Concrete Abstractions: An Introduction to Computer Science Using Scheme
- The Scheme Programming Language Edition 3, Edition 4
- Simply Scheme: Introducing Computer Science
- Teach Yourself Scheme in Fixnum Days
Sed
Smalltalk
- Dynamic Web Development with Seaside
- Free Online Smalltalk Books (meta-list)
- Squeak By Example (Smalltalk IDE)
Subversion
SQL (implementation agnostic)
- Developing Time-Oriented Database Applications in SQL
- Use The Index, Luke!: A Guide To SQL Database Performance
- Learn SQL The Hard Way
SQL Server
- Introducing Microsoft SQL Server 2008 R2
- Introducing Microsoft SQL Server 2012
- SQL Server 2012 Tutorials: Reporting Services
Teradata
TeX
- (TeX for the Impatient)(https://www.gnu.org/software/teximpatient/), by Paul Abrahams, Kathryn Hargreaves, and Karl Berry
See also LaTeX
Theory
Vim
- A Byte of Vim
- Vim Recipes
- Vi Improved – Vim by Steve Oualline
- Learn Vimscript the Hard Way