Pick freely from any of the book lists below. Note, there are a variety of links to books which are free at the top of the list, following them are a variety of books to buy or borrow if you've exhausted the free list or just want to invest in a few book purchases.
If there is some book not on the list that you find essential, read it, you can write it in and it'll count for points!
For those following the Computer Science Intensive (Free Version) path.
- You Don't Know JS: Up & Going
- You Don't Know JS: Scope & Closures
- You Don't Know JS: this & Object Prototypes
- You Don't Know JS: Types & Grammar
- You Don't Know JS: Async & Performance
- You Don't Know JS: ES6 & Beyond
- Setting Up ES6
- JavaScript Allongé, the "Six" Edition
- DOM Enlightenment
- JavaScript Design Patterns
- Think Java - How to Think Like a Computer Scientist
- Open Data Structures
- Professor Frisby's Mostly Adequate Guide to Functional Programming
- Programming JavaScript Applications
For those following the Data Science Intensive (Free Version) path.
- College Algebra
- Precalculus
- Think Python
- Think Stats
- An Introduction to Statistical Learning
- Biology
- Think Bayes
- Think DSP
- Think Complexity
- The Art of R Programming
- R for Data Science
- Machine Learning with R
- The Quest for Artificial Intelligence
- Multiagent Systems
- Bayesian Methods for Hackers
- Bayesian Methods in the Search for MH370
- Mining of Massive Datasets
- Informatics in the Future
- Bisociative Knowledge Discovery
- New Horizons for a Data-Driven Economy
- The Challenge of Chance
Additional free options for any path.
- Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman
- Clean Code Developer: An initiative for more professionalism in software development
- Confessions of an IT Manager
- Don't Just Roll the Dice
- How to Do What You Love & Earn What You’re Worth as a Programmer
- Professional Software Development For Students
- What I've Learned From Failure
- Why programmers work at night
- Introduction to Functional Programming
- Mostly Adequate Guide to Functional Programming
- Type Theory and Functional Programming
- RexEgg
- The 30 Minute Regex Tutorial
- The Bastards Book of Regular Expressions: Finding Patterns in Everyday Text
- Competitive Programmer's Handbook
- Competitive Programming, 1st Edition
- Agile Planning: From Ideas to Story Cards
- Architectural Styles and the Design of Network-based Software Architectures
- Best Kept Secrets of Peer Code Review
- Data-Oriented Design
- Developing Reactive Microservices
- Domain Driven Design Quickly
- DSL Engineering: Designing, Implementing and Using Domain-Specific Languages
- Evolving Architectures of FinTech
- Guide to the Software Engineering Body of Knowledge
- How to Design Programs
- How to Write Unmaintainable Code
- Kanban and Scrum - making the most of both
- Kanban for skeptics
- Microservice Databases: Migrating from Relational Monolith to Distributed Data
- Microservices AntiPatterns and Pitfalls
- Microservices in Production
- Microservices vs. Service-Oriented Architecture
- Migrating to Cloud-Native Application Architectures
- Naked objects
- OAuth - The Big Picture
- Object-Oriented Reengineering Patterns
- Practicing Domain-Driven Design
- Reactive Microservices Architecture
- Scrum and XP from the Trenches
- Seamless Object-Oriented Software Architecture
- Software Architecture Patterns
- Software Engineering for Internet Applications
- Test Driven Development, Extensive Tutorial
- Web API Design
- Working with Web APIs
- Your API Is Bad
- Monitoring Modern Infrastructure
- Multi-tenant Applications for the Cloud, 3rd Edition
- OpenStack Operations Guide
- CouchDB: The Definitive Guide
- Extracting Data from NoSQL Databases: A Step towards Interactive Visual Analysis of NoSQL Data
- Graph Databases
- Instant MongoDB
- MongoDB Koans
- MongoDB Succinctly, Syncfusion
- NoSQL Databases
- The Little MongoDB Book
- The Little Redis Book
- The Little Riak Book
- A Field Guide To Genetic Programming
- Algorithmic Graph Theory
- Algorithms, 4th Edition
- Algorithms and Automatic Computing Machines (1963)
- Algorithms and Complexity
- Algorithms Course Materials
- Analysis and Design of Algorithms
- Animated Algorithm and Data Structure Visualization
- Annotated Algorithms in Python: Applications in Physics, Biology, and Finance
- Binary Trees
- Clever Algorithms
- CS Unplugged: Computer Science without a computer
- Data Structures
- Data Structures (Into Java) - Paul N. Hilfinger
- Data Structures and Algorithms: Annotated Reference with Examples
- Data Structures Succinctly Part 1, Syncfusion
- Data Structures Succinctly Part 2, Syncfusion
- Elementary Algorithms
- Foundations of Computer Science
- Handbook of Graph Drawing and Visualization
- Lectures Notes on Algorithm Analysis and Computational Complexity (Fourth Edition)
- LEDA: A Platform for Combinatorial and Geometric Computing
- Linked List Basics
- Linked List Problems
- Matters Computational: Ideas, Algorithms, Source Code
- Open Data Structures: An Introduction
- Planning Algorithms
- Problems on Algorithms (Second Edition)
- Purely Functional Data Structures
- Sequential and parallel sorting algorithms
- Text Algorithms
- The Algorithm Design Manual
- The Art of Computer Programming
- The Design of Approximation Algorithms
- The Great Tree List Recursion Problem
- Think Complexity
- A Brief Introduction to Neural Networks
- A Course in Machine Learning
- A First Encounter with Machine Learning
- An Introduction to Statistical Learning
- Bayesian Reasoning and Machine Learning
- Deep Learning
- Gaussian Processes for Machine Learning
- Information Theory, Inference, and Learning Algorithms
- Introduction to Machine Learning
- Learn Tensorflow
- Learning Deep Architectures for AI
- Machine Learning
- Machine Learning, Neural and Statistical Classification
- Neural Networks and Deep Learning
- Probabilistic Models in the Study of Language
- Reinforcement Learning: An Introduction
- The Elements of Statistical Learning
- The LION Way: Machine Learning plus Intelligent Optimization
- The Python Game Book
- A First Course in Linear Algebra
- Advanced Algebra
- An Introduction to the Theory of Numbers
- Basic Algebra
- Basics of Algebra, Topology, and Differential Calculus
- Bayesian Methods for Hackers
- Book of Proof
- Calculus
- Calculus Made Easy
- Category Theory for the Sciences
- CK-12 Probability and Statistics - Advanced
- Collaborative Statistics
- Computational and Inferential Thinking. The Foundations of Data Science
- Computational Geometry
- Concepts & Applications of Inferential Statistics
- Differential Equations
- Discrete Mathematics
- Elementary Differential Equations
- Essentials of Metaheuristics
- Graph Theory
- Introduction to Probability
- Introduction to Probability and Statistics Spring 2014
- Introduction to Proofs
- Introduction to Statistical Thought
- Kalman and Bayesian Filters in Python
- Knapsack Problems - Algorithms and Computer Implementations
- Lecture Notes of Linear Algebra
- Linear Algebra
- Linear Algebra
- Linear Algebra by Jim Hefferon
- Mathematical Logic - an Introduction
- Mathematics, MTH101A
- Number Theory
- OpenIntro Statistics
- Ordinary Differential Equations
- Power Programming with Mathematica
- Probability and Statistics Cookbook
- Probability and Statistics EBook
- Statistics Done Wrong
- Think Bayes: Bayesian Statistics Made Simple
- Think Stats: Probability and Statistics for Programmers
- Data Journalism Handbook
- Fintech, Open Source, and Emerging Markets Digital Banking for Everyone
- Free as in Freedom
- Free Software, Free Society
- Getting Started with InnerSource
- Getting started with Open source development
- How to get started with open source
- Innovation Happens Elsewhere
- Open Advice: FOSS: What We Wish We Had Known When We Started
- Open by Design
- Open Source in Brazil
- Producing Open Source Software
- The Architecture of Open Source Applications: Vol. 1: Elegance, Evolution, and a Few Fearless Hacks; Vol. 2: Structure, Scale, and a Few More Feerless Hacks
- The Art of Community
- The Cathedral and the Bazaar
- The Future of the Internet
- The Open Source Way
- The Wealth of Networks: How Social Production Transforms Markets and Freedom
- C++ Annotations
- C++ Core Guidelines
- C++ GUI Programming With Qt 3
- C++ Succinctly, Syncfusion
- C++ Today
- C++ Tricks
- CS106X Programming Abstractions in C++
- Financial Numerical Recipes in C++
- Game Programming Patterns
- Google's C++ Style Guide
- How to make an Operating System
- How To Think Like a Computer Scientist: C++ Version
- Introduction to Design Patterns in C++ with Qt
- Joint Strike Fighter, C++ Coding Standards, by Bjarne Stroustrup
- Learn C++.
- Matters Computational: Ideas, Algorithms, Source Code, by Jorg Arndt
- Open Data Structures (In C++)
- Practical C++ Metaprogramming
- Software Design Using C++
- Software optimization resources by Agner Fog
- The Boost C++ libraries
- The Rook's Guide to C++
- The Ultimate Question of Programming, Refactoring, and Everything
- Thinking in C++, Second Edition
- 30 Days of Elixir
- Elixir School
- Études for Elixir
- Getting Started Guide
- Joy of Elixir
- Learning Elixir
- Phoenix v1.3.0 Guide
- Versioned APIs with Phoenix
- An Introduction to Programming in Go
- Build Web Application with Golang
- Building Web Apps with Go
- Effective Go
- Go Bootcamp
- Go by Example
- Go for Javascript Developers
- Learning Go
- Let's learn Go!
- Practical Cryptography With Go
- The Go Tutorial
- The Little Go Book
- Web apps in Go, the anti textbook
- A Gentle Introduction to Haskell
- Anatomy of Programming Languages
- Beautiful Code, Compelling Evidence
- Exploring Generic Haskell
- Happy Learn Haskell Tutorial
- Haskell and Yesod
- Haskell no panic
- Haskell web Programming
- Introduction to Haskell
- Learn Haskell Fast and Hard
- Learn You a Haskell for Great Good
- Parallel and Concurrent Programming in Haskell
- Real World Haskell
- Speeding Through Haskell
- The Haskell Road to Logic, Math and Programming
- Wikibook Haskell
- Yet Another Haskell Tutorial
- Basic JavaScript for the impatient programmer
- Book of Modern Frontend Tooling
- Crockford's JavaScript
- Dev Docs
- Developing Backbone.js Applications
- Directory of free Javascript ebooks
- Eloquent JavaScript 2nd edition
- Exploring ES6
- Google JavaScript Style Guide
- JavaScript Allongé
- JavaScript Bible
- JavaScript Enlightenment
- JavaScript For Cats
- JavaScript Fundamentals, Plus a Dash Of JQuery - for dinner ladies
- JavaScript Garden
- JavaScript Patterns Collection
- JavaScript Spessore
- Javascript Succinctly, Syncfusion
- JavaScript the Right Way
- jQuery Fundamentals
- JS Robots
- Leaflet Tips and Tricks: Interactive Maps Made Easy
- Learn to Code JavaScript by Playing a Game
- Learning JavaScript Design Patterns
- Managing Space and Time with JavaScript - Book 1: The Basics
- Marionette Exposé: Learn to write modular Javascript applicatons using Backbone Marionette and RequireJS/AMD
- Mastering JavaScript High Performance
- Mozilla Developer Network's JavaScript Guide
- O'Reilly Programming JavaScript Applications
- Oh My JS
- Patterns For Large-Scale JavaScript Application Architecture
- Speaking JavaScript
- The JavaScript Tutorial
- The JavaScript Way
- The Problem with Native JavaScript APIs
- Understanding ECMAScript 6
- Understanding JavaScript OOP
- You Don't Know JS
- An Introduction to libuv
- Mixu's Node Book
- Node Documentation
- Node: Up and Running
- Node.js Succinctly, Syncfusion
- The Node Beginner Book
- 20 Python Libraries You Aren't Using (But Should)
- A Beginner's Python Tutorial
- A Byte of Python
- A Guide to Python's Magic Methods
- A Whirlwind Tour of Python
- Automate the Boring Stuff
- Biopython
- Build applications in Python the antitextbook
- Building Machine Learning Systems with Python
- Building Skills in Object-Oriented Design (Python)
- Building Skills in Python
- Code Like a Pythonista: Idiomatic Python
- CodeCademy Python
- Composing Programs
- Data Structures and Algorithms in Python
- Dive into Python 3
- Dive into Python
- From Python to NumPy
- Full Stack Python
- Functional Programming in Python
- Fundamentals of Python Programming
- Google's Python Class
- Google's Python Style Guide
- Hacking Secret Cyphers with Python
- Hadoop with Python
- High Performance Python
- Hitchhiker's Guide to Python!
- How to Make Mistakes in Python
- How to Think Like a Computer Scientist: Learning with Python, Interactive Edition
- How to Think Like a Computer Scientist: Learning with Python
- Think Python
- Intermediate Python
- Introduction to Programming with Python
- Introduction to Programming Using Python
- Introduction to Python
- Invent Your Own Computer Games With Python
- Learn Python, Break Python
- Learn Python in Y minutes
- Learn Python The Hard Way
- Learn to Program Using Python
- Learning Python
- Learning to Program
- Lectures on scientific computing with python
- Making Games with Python & Pygame
- Modeling Creativity: Case Studies in Python
- Natural Language Processing with Python
- Non-Programmer's Tutorial for Python 3
- Non-Programmer's Tutorial for Python 2.6
- Picking a Python Version: A Manifesto
- Porting to Python 3: An In-Depth Guide
- Practical Programming in Python
- Problem Solving with Algorithms and Data Structures using Python
- Program Arcade Games With Python And Pygame
- Programming Computer Vision with Python
- Python 2 Official Documentation
- Python 2.7 quick reference
- Python 3 Official Documentation
- Python Cookbook
- Python Data Science Handbook
- Python for Econometrics
- Python for Everybody Exploring Data Using Python 3
- Python for Informatics: Exploring Information
- Python for you and me
- Python for you and me
- Python Idioms
- Python in Education
- Python in Hydrology
- Python Koans
- Python Module of the Week
- Python Module of the Week
- Python Practice Book
- Python Practice Projects
- Python Programming
- Scipy Lecture Notes
- SICP in Python
- Snake Wrangling For Kids
- Suporting Python 3: An In-Depth Guide
- Test-Driven Web Development with Python
- Text Processing in Python
- The Coder's Apprentice: Learning Programming with Python 3
- The Definitive Guide to Jython, Python for the Java Platform
- The Little Book of Python Anti-Patterns
- The Programming Historian
- The Python Ecosystem: An Introduction
- The Python GTK+ 3 Tutorial
- The Standard Python Library
- Think Complexity
- Web2py: Complete Reference Manual, 6th Edition (pre-release)
- Wikibooks: Python Programming
- CakePHP Cookbook 2.x
- CodeIgniter 2.2.6
- CodeIgniter 3.1.6
- The Tiny Book of Rules
- Hacking with PHP
- Laravel: Code Happy
- Laravel: Code Bright
- Laravel 5.x Official Documentation. Synced Daily
- Laravel Best Practices
- Laravel: Code Smart
- Laravel Collections Unraveled
- PHP 5 Power Programming
- PHP Best Practices
- PHP Internals Book
- PHP Pandas
- PHP Programming
- PHP Security Guide
- PHP: The Right Way
- PHPUnit Best Practices
- PHPUnit Manual
- Practical PHP Programming
- Practical PHP Testing
- Survive The Deep End: PHP Security
- The Symfony Book 2.x
- The Symfony Book 3.x
- Using Libsodium in PHP Projects
- Using Zend Framework 3
- A practical git introduction
- A Visual Git Reference
- Conversational Git
- git - the simple guide
- Git for Computer Scientists
- Git From The Bottom Up
- Git Immersion
- Git In The Trenches
- Git internals
- Git Magic
- Git Pocket Guide
- Git Reference
- Git Succinctly, Syncfusion
- Git Workflows
- GitHub Cheat Sheet
- Intoduction to Git and Github
- Learn Enough Git to be Dangerous
- Learn Git - Learn Version Control with Git
- Pro Git
- Pro Git Reedited
- Ry's Git Tutorial
- Think Like (a) Git: A Guide for the Perplexed
- Version Control by Example (Mercurial, Subversion, Verasity)
For those following the MITOCW "borrow or purchase books" path.
Algorithms in a Nutshell
Data Structures and Algorithms Made Easy
A Common Sense Guide to Data Structures and Algorithms
Algorithms Iluminated Part 1
Algorithms Part 1
Algorithms Part 2
An Introduction to the Analysis of Algorithms
Algorithms in C Parts 1-4
Algorithms in C Part 5
Algorithms in C++ Parts 1-4
Algorithms in C++ Part 5
Learning JavaScript Data Structures and Algorithms
Problem Solving in Data Structures and Algorithms using C++
Data Structures and Algorithms with Python
Data Structures and Algorithms with JavaScript
Think Data Structures
Computational Probability
Graphs Algorithms and Optimization
Mobile Applications Development with Android: Technologies and Algorithms
Algorithmic Game Theory
Twenty Lectures on Algorithmic Game Theory
Grokking Algorithms
Unsupervised Learning Algorithms
Elementary Functions: Algorithms and Implementation
Algorithms and Networking for Computer Games
Algorithms: A functional programming approach
Data Structure Practice for Collegiate Programming Contests
The Colossal Book of Mathematics
Analytic Combinatorics
Everyday Data Structures
For those following the MITOCW "borrow or purchase books" path.
21st Century C: : C Tips from the New School
Advanced Programming in the UNIX Environment
C Interfaces and Implementations
Expert C Programming: Deep C Secrets
Programming in C
The C Programming Language
C: From Theory to Practice
Pointers in C
Shell Programming in Unix, Linux, and OSX
Build Your Own Lisp.
C++ Coding Standards
C++ Concurrency In Action
Effective C++
Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
Effective STL
Exceptional C++
More Exceptional C++
Exceptional C++ Style
Modern C++ Design
C++ Template Metaprogramming
C++ Templates: the Complete Guide
C++ Concurrency in Action
Advanced Metaprogramming in Classic C++
The C++ Standard Library
Programming: Principles and Practice Using C++
C++ Programming: Program Design including Data Structures
Introducing Go
Go Systems Programming
Functional Reactive Programming
Developing Web Apps with Haskell and Yesod
Haskell Design Patterns
Learn You a Haskell for Great Good
Parallel and Concurrent Programming in Haskell
Real World Haskell
Android Programming - The Big Nerd Ranch Guide
Computer Science: An Interdisciplinary Approach
Core Java
Effective Java
Hello, Android
Java Concurrency in Practice
Professional Android
Thinking In Java
Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript
JavaScript Allonge
JavaScript Patterns: Build Better Applications with Coding and Design Patterns
Secrets of the JavaScript Ninja
YDKJS
Fluent Python: Clear, Concise, and Effective Programming
Python Cookbook
Python Crash Course: A Hands-On, Project-Based Introduction to Programming
Think Python
The Hitchhiker's Guide to Python
Computer Science Distilled
Fortran for Scientists and Engineers
For those following the MITOCW "borrow or purchase books" path.
Code Complete: A Practical Handbook of Software Construction
The Pragmatic Programmer: From Journeyman to Master
The Mythical Man-Month
Refactoring: Improving the Design of Existing Code
Clean Code: A Handbook of Agile Software Craftsmanship
Introduction to Algorithms
Patterns of Enterprise Application Architecture
Peopleware: Productive Projects and Teams
Working Effectively with Legacy Code
Design Patterns: Elements of Reusable Object-Oriented Software
Code: The Hidden Language of Computer Hardware and Software
Domain-Driven Design: Tackling Complexity in the Heart of Software
Head First Design Patterns
Structure and Interpretation of Computer Programs
Programming Pearls
Coders at Work: Reflections on the Craft of Programming
The C Programming Language
The Art of Computer Programming
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation
Rapid Development: Taming Wild Software Schedules
Agile Software Development, Principles, Patterns, and Practices
The Design of Everyday Things: Revised and Expanded Edition
Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability
Gödel, Escher, Bach: An Eternal Golden Braid
The Clean Coder: A Code of Conduct for Professional Programmers
User Stories Applied: For Agile Software Development
Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions
Release It!: Design and Deploy Production-Ready Software
The Passionate Programmer: Creating a Remarkable Career in Software Development
About Face: The Essentials of Interaction Design
Designing Web Usabillity
A Pattern Language: Towns, Buildings, ruction (Center for Environmental Structure)
The Visual Display of Quantitative Information
Extreme Programming Explained: Embrace Change
Smalltalk Best Practice Patterns
Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives
Refactoring to Patterns
Agile Estimating and Planning
Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values
Cracking the Coding Interview: 189 Programming Questions and Solutions
Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman
Pragmatic Thinking and Learning: Refactor Your Wetware
The Art of Agile Development
Soft Skills: The software developer's life manual
Succeeding with Agile: Software Development Using Scrum
Growing Object-Oriented Software, Guided by Tests
Java Concurrency in Practice
Software Estimation: Demystifying the Black Art (Developer Best Practices)
Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14
Algorithms
Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)
Debugging: The 9 Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems
Rework
Cracking the IT Architect Interview
Coding Interview Questions