Added "Making Games with Python & Pygame" to "free-programming-books.md"
53 KiB
###Index
- Meta-Lists
- Graphics user interfaces
- Graphics Programming
- Language Agnostic
- Algorithms & Datastructures
- Theoretical Computer Science
- Operating systems
- Database
- Networking
- Compiler Design
- Programming Paradigms
- Parallel Programming
- Software Architecture
- Open Source Ecosystem
- Information Retrieval
- Datamining
- Machine Learning
- Mathematics
- Misc
- Web Performance
- MOOC
- Professional Development
- 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
- iOS
- 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
- TypeScript
- Vim
- Websphere
- Windows Phone
###Meta-Lists
- 25 Free Computer Science Ebooks
- Cheat Sheets (Free)
- E-Books Directory
- 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)
- Algorithms Course Materials - Jeff Erickson
- Binary Trees (PDF)
- 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 (PDF)
- Linked List Problems (PDF)
- Open Data Structures
- Purely Functional Data Structures (PDF)
- The Great Tree List Recursion Problem (PDF)
- 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 (PDF)
- Sequential and parallel sorting algorithms
- Text Algorithms (PDF)
- Problem Solving with Algorithms and Data Structures
- Data Structures Succinctly Part 1, Syncfusion (PDF, Kindle) (Just fill the fields with any values)
- Data Structures Succinctly Part 2, Syncfusion (PDF, Kindle) (Just fill the fields with any values)
####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
- HTTP Succinctly, Syncfusion (PDF, Kindle) (Just fill the fields with any values)
####Compiler Design
- Compiler Construction (PDF)
- Let's Build a Compiler (PDF)
- 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
- How to Write Parallel Programs
- Is Parallel Programming Hard, And, If So, What Can You Do About It?
- Introduction to Parallel Computing - Blaise Barney
####Software Architecture
- Seamless Object-Oriented Software Architecture (PDF)
- 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) (PDF)
- 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 (PDF)
- Gaussian Processes for Machine Learning
- Information Theory, Inference, and Learning Algorithms
- Artificial Intelligence | Machine Learning - Andrew Ng (Notes, lectures, and problems)
####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 (PDF)
- Essentials of Metaheuristics by Sean Luke
- Advanced Data Analysis from an Elementary Point of View
- Probability and Statistics Cookbook
####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) by 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 (PDF)
- 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
####Professional Development
- Don't Just Roll the Dice (PDF) (RedGate, By Neil Davidson)
- Confessions of an IT Manager (RedGate, By Phil Factor)
###Ada
- Ada 95: The Craft of Object-Oriented Programming
- Ada Distilled (PDF)
- Ada for Software Engineers (PDF)
###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
- A Tutorial on Pointers and Arrays in C
- Beej's Guide to C Programming
- Beej's Guide to Network Programming
- The C book
- Essential C (PDF)
- 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 (PDF)
- Software optimization resources by Agner Fog
- Thinking in C++, Second Edition, Vol. 1. [(Vol. 2)] (http://www.mindviewinc.com/downloads/TICPP-2nd-ed-Vol-two.zip)
- How To Think Like a Computer Scientist: C++ Version - Allen B. Downey
- Also see: The Definitive C++ Book Guide and List
- C++ Succinctly, Syncfusion (PDF, Kindle) (Just fill the fields with any values)
###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)
- F# Succinctly, SyncFusion (PDF, Kindle) (Just fill the fields with any values)
###Forth
- Starting Forth
- Thinking Forth
- Programming Forth (PDF)
- A Beginner's Guide to Forth
- And so Forth... (PDF)
- Thoughtful Programming and Forth
###Git
- Pro Git
- Gitmagic
- Git From The Bottom Up (PDF)
- Git internals (PDF)
- Git Magic
- Git Reference
- Version Control by Example (Mercurial, Subversion, Verasity)
- Git Succinctly, Syncfusion (PDF, Kindle) (Just fill the fields with any values)
###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
- Speeding Through Haskell
###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
###iOS
- iOS Succinctly, Syncfusion (PDF, Kindle) (Just fill the fields with any values)
###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) (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 (PDF)
- 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 (PDF)
- Javascript Succinctly, Syncfusion (PDF, Kindle) (Just fill the fields with any values)
####Backbone.js
####D3.js
####jQuery
- jQuery Succinctly, Syncfusion (PDF, Kindle) (Just fill the fields with any values)
####Knockout.js
- Knockout.js Succinctly (PDF, Kindle) (Just fill the fields with any values)
####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) (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 (PDF)
###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
- Mathematica® programming: an advanced introduction by Leonid Shifrin
- Stephen Wolfram's The Mathematica Book
- Wolfram Mathematica Tutorial Collection
###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 (PDF)
- Threading in C#
- Visual Basic Essentials
- Visual Studio Tips and Tricks (VS 2003-2005 only)
- Under the Hood of .NET Memory Management (PDF) (RedGate, By Chris Farrell and Nick Harrison)
- Practical Performance Profiling: Improving the efficiency of .NET code (RedGate, By Jean-Philippe Gouigoux)
- .NET Performance Testing and Optimization - The Complete Guide (RedGate, By Paul Glavich and Chris Farrell)
###NoSQL
- CouchDB: The Definitive Guide
- The Little MongoDB Book
- The Little Redis Book
- The Little Riak Book
- Graph Databases
###Oberon
###Objective-C
- Programming With Objective-C (PDF)
- Object-Oriented Programming with Objective-C (PDF)
- Objective-C Succinctly, Syncfusion (PDF, Kindle) (Just fill the fields with any values)
###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 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 (PDF)
- 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 (PDF)
- Master Drupal in 7 hours (PDF)
- 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 Techniques in Prolog
- Prolog Techniques
- Simply Logical
- Visual Prolog 7.2 for Tyros (PDF)
###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
- Making Games with Python & Pygame - Al Sweigart
- 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 (PDF)
- Advanced R Programming
- R practicals (PDF)
- R for spatial analysis (PDF)
- Learning Statistics with R
###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)
- Pharo by Example (Smalltalk DE)
- 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
- SQL Server Execution Plans (PDF) (RedGate, By Grant Fritchey)
- Defensive Database Programming (PDF) (RedGate, By Alex Kuznetsov)
- SQL Server Execution Plans, Second Edition (PDF) (RedGate, By Grant Fritchey)
- Inside the SQL Server Query Optimizer (RedGate, By Benjamin Nevarez)
- SQL Server Transaction Log Management (RedGate, By Tony Davis and Gail Shaw)
- The Art of SQL Server FILESTREAM (RedGate, By Jacob Sebastian and Sven Aelterman)
- SQL Server Concurrency: Locking, Blocking and Row Versioning (RedGate, By Kalen Delaney)
- SQL Server Backup and Restore (RedGate, By Shawn McGehee)
- Troubleshooting SQL Server: A Guide for the Accidental DBA (RedGate, By Jonathan Kehayias and Ted Krueger)
- SQL Server Hardware (RedGate, By Glenn Berry)
- SQL Server Statistics (RedGate, By Holger Schmeling)
- Performance Tuning with SQL Server Dynamic Management Views (RedGate, By Tim Ford and Louis Davidson)
- Brad's Sure Guide to SQL Server Maintenance Plans (RedGate, By Brad McGehee)
- Best of SQLServerCentral.com Vol 7 (RedGate, By SQLServerCentral Authors)
- Protecting SQL Server Data (RedGate, By John Magnabosco)
- SQL Server Tacklebox (RedGate, By Rodney Landrum)
- How to Become an Exceptional DBA (RedGate, By Brad McGehee)
- SQL Server Stumpers Vol.5 (RedGate, By SQLServerCentral Authors)
- Mastering SQL Server Profiler (RedGate, By Brad McGehee)
###Teradata
###TeX
- TeX for the Impatient, by Paul Abrahams, Kathryn Hargreaves, and Karl Berry
See also LaTeX
###Theory
###TypeScript
- TypeScript Succinctly, Syncfusion (PDF, Kindle) (Just fill the fields with any values)
###Vim
- A Byte of Vim
- Vim Recipes (PDF)
- Vi Improved -- Vim (PDF) by Steve Oualline
- Learn Vimscript the Hard Way
###Websphere
###Windows Phone