This is a list of links to different freely available learning resources about computer programming, math, and science.
This is a list of links to different freely available learning resources about computer programming, math, and science.
A Course in Machine Learning by Hal Daumé III
Algorithms for Decision Making by Mykel J. Kochenderfer, Tim A. Wheeler, and Kyle H. Wray
An Introduction to Statistical Learning by Gareth James, Daniela Witten, Trevor Hastie, Rob Tibshirani
Data-Driven Science and Engineering: Machine Learning, Dynamical Systems, and Control by Steven L. Brunton and J. Nathan Kutz [pdf]
Deep Learning by Ian Goodfellow, Yoshua Bengio and Aaron Courville
Deep Learning Course by François Fleuret
Deep Learning: Foundations and Concepts by Chris Bishop with Hugh Bishop
Deep Learning Interviews Second Edition by Shlomo Kashani
Foundations of Data Science by Avrim Blum, John Hopcroft, and Ravindran Kannan
Information Theory, Inference, and Learning Algorithms by David MacKay
Learning Theory from First Principles by Francis Bach [pdf]
Machine Learning Engineering Book by Andriy Burkov
Machine Learning Engineering Open Book by Stas Bekman
Mathematical Introduction to Deep Learning: Methods, Implementations, and Theory by Arnulf Jentzen, Benno Kuckuck, Philippe von Wurstemberger
Mathematics for Machine Learning by Marc Peter Deisenroth, A. Aldo Faisal, and Cheng Soon Ong
Neural Networks: Zero to Hero - A course by Andrej Karpathy
Physics-based Deep Learning by N. Thuerey, P. Holl, M. Mueller, P. Schnell, F. Trost, K. Um
Probabilistic Machine Learning: An Introduction by Kevin Patrick Murphy
Probabilistic Machine Learning: Advanced Topics by Kevin Patrick Murphy
Speech and Language Processing, 3rd edition by Daniel Jurafsky and James H. Martin
The Elements of Differentiable Programming by Mathieu Blondel and Vincent Roulet
The Hundred Page Machine Learning Book by Andriy Burkov
The Little Book of Deep Learning by François Fleuret
Understanding Deep Learning by Simon J.D. Prince
Game AI Pro by Steve Rabin
Programming Starcraft AI by Peter Kis
Algorithms by Jeff Erickson
Algorithms and Data Structures by Kurt Mehlhorn and Peter Sanders [pdf]
Algorithms for Optimization by Mykel J. Kochenderfer and Tim A. Wheeler
Algorithms for Modern Hardware by Sergey Slotin
Clever Algorithms: Nature-Inspired Programming Recipes by Jason Brownlee
Collision Detection by Jeff Thompson
Competitive Programmer's Handbook by Antti Laaksonen
Data Structures for Data-Intensive Applications: Tradeoffs and Design Guidelines by Manos Athanassoulis , Stratos Idreos and Dennis Shasha [pdf]
Exact String Matching Algorithms by Christian Charras and Thierry Lecroq
How does B-tree make your queries fast? by Mateusz Kuźmik
Introduction to Algorithms: A Creative Approach by Udi Manber [pdf]
Kalman Filter from the Ground Up by Alex Becker
Monte-Carlo Graph Search from First Principles by David J Wu
Planning Algorithms by Steven M. LaValle
Principles of Algorithmic Problem Solving by Johan Sannemo
Problem Solving with Algorithms and Data Structures using Python by Brad Miller and David Ranum
Purely Functional Data Structures by Chris Okasaki
Sequential and Parallel Data Structures and Algorithms: The Basic Toolbox by Peter Sanders, Kurt Mehlhorn, Martin Dietzfelbinger, and Roman Dementiev
The Algorithmic Beauty of Plants by Przemyslaw Prusinkiewicz and Aristid Lindenmayer [pdf]
Driving Compilers by Fabien Sanglard
Getting started with tmux by ittavern
How I'm still not using GUIs: A guide to the terminal by Lucas Fernandes da Costa
How is a binary executable organized? Let's explore it! by Julia Evans
Learn Makefiles: With the tastiest examples by Chase Lambert
NixOS & Flakes Book - An unofficial book for beginners by Ryan Yin
Use Midnight Commander like a pro by Igor Klimer
Curl Exercises by Julia Evans
Mastering curl: interactive text guide by Anton Zhiyanov
Effective Shell by Dave Kerr
Linux command line for you and me by Kushal Das
The Linux Command Handbook by Flavio Copes
The Linux Command Line by William Shotts
Build Your Own Lisp by Daniel Holden
Building the fastest Lua interpreter.. automatically! by Haoran Xu
Crafting Interpreters by Robert Nystrom
Creating the Bolt Compiler by Mukul Rathi
Essentials of Compilation: An Incremental Approach by Geremy G. Siek
How Clang Compiles a Function by John Regehr
How LLVM Optimizes a Function by John Regehr
Let's Build a Compiler by Jack Crenshaw
Let's make a Teeny Tiny compiler by Austin Z. Henley
Let's Write a Compiler by Brian Robert Callahan
Make A Language - A series about making a programming language called Eldiro using the Rust programming language.
3D Math Primer for Graphics and Game Development by Fletcher Dunn and Ian Parberry
A Gentle Introduction to D3D12 by Alex Tardif
A trip through the Graphics Pipeline by Fabian Giesen
Computer Graphics from Scratch by Gabriel Gambetta
A fast and precise triangle rasterizer by Kristoffer Dyrkorn
GPU Gems Books Series
GPU Performance for Game Artists by Keith O’Conor
Learn OpenGL by Joey de Vries
Learning Modern 3D Graphics Programming by Jason L. McKesson
Lode's Computer Graphics Tutorial by Lode Vandevenne
Matrix Compendium by Łukasz Izdebski - The main purpose of this article is to gather information in the field of transformation in computer graphics and put it in one place.
OGLdev: Modern OpenGL tutorials by Etay Meiri
Optimizing Software Occlusion Culling by Fabian Giesen
Order Independent Transparency by Kostas Anagnostou
Probability Theory for Physically Based Rendering by Jacco Bikker
Recreating Nanite by Xavier Niochaut
Simulating Fluids, Fire, and Smoke in Real-Time by Andrew Chan
Cubic spline interpolation by Eli Bendersky
Curves and Surfaces by Bartosz Ciechanowski
A raycasting engine in 7 easy steps by Austin Z. Henley
Getting Started With DirectX Raytracing by Seppe Dekeyser
How to build a BVH by Jacco Bikker
Introduction of the Raytracing Technology
Physically Based Rendering: From Theory To Implementation by Matt Pharr, Wenzel Jakob, and Greg Humphreys
Ray-Casting Tutorial For Game Development And Other Purposes by F. Permadi
Ray Tracing Gems by Eric Haines and Tomas Akenine-Möller
Ray Tracing Gems II by Adam Marrs, Peter Shirley, and Ingo Wald
Ray Tracing in One Weekend: The Book Series by Peter Shirley
A Beginner's Guide to Coding Graphics Shaders by Omar Shehata
A Journey Into Shaders by Antoine Mayerowitz
GM Shaders - All about shaders for GameMaker!
Introducing GPU Reshape - shader instrumentation for everyone by Miguel Petersen
Mesh Shaders on RDNA™ Graphics Cards by Max Oberberger, Bastian Kuth and Quirin Meyer
Shaders For People Who Don't Know How To Shader by Manuela Malasaña
The Book of Shaders by Patricio Gonzalez Vivo and Jen Lowe
I Am Graphics And So Can You - a series of blog posts about implementing a Vulkan renderer for Doom 3 by Dustin H. Land
Vulkan Tutorial by Alexander Overvoorde
Vulkan Tutorial (Rust) by Kyle Mayes
Learn WebGPU by Elie Michel
Learn Wgpu by Ben Hansen
Migrating from WebGL to WebGPU by Dmitrii Ivashchenko
Your first WebGPU app by Brandon Jones and François Beaufort
An Introduction to Computer Networks by Peter L. Dordal
Computer Networks: A Systems Approach by Larry Peterson and Bruce Davie
HTTP2 Explained by Daniel Stenberg
HTTP/3 explained by Daniel Stenberg
Implementing TCP In Rust by Ghvst Code
Networking 101 by Internal Pointers
REST Servers in Go by Ely Bendersky
A Graduate Course in Applied Cryptography by Dan Boneh and Victor Shoup
Cryptography: An Introduction (3rd Edition) by Nigel Smart [pdf]
Practical Cryptography for Developers by Svetlin Nakov
Advanced Data Science: Statistics and Prediction Algorithms Through Case Studies by Rafael A. Irizarry
Introduction to Data Science: Data Wrangling and Visualization with R by Rafael A. Irizarry
How Does a C Debugger Work? by Kevin Pouget
Writing a Debugger From Scratch by Tim Misiak
Build Your Own Database From Scratch by James Smith
Build Your Own Redis with C/C++ by James Smith
Database Fundamentals by Tony Solomonik
MySQL for Developers by Aaron Francis
PostgreSQL 14 Internals by Egor Rogov
SQL for the Weary by Greg Wilson
The Theory of Relational Databases by David Maier
Data-Oriented Design by Richard Fabian
Design Patterns & Refactoring SourceMaking
Handles are the better pointers by Andre Weissflog
From design patterns to category theory by Mark Seemann
Game Programming Patterns by Robert Nystrom
Distributed systems for fun and profit by Mikito Takada
Notes on Theory of Distributed Systems by James Aspnes [pdf]
Patterns of Distributed Systems by Unmesh Joshi
Testing Distributed Systems - Curated list of resources on testing distributed systems by Andrey Satarin.
5 Days To Virtualization: A Series On Hypervisor Development by Daax Rynd, Aidan Khoury and Nick Peterson
GameBoy Emulation in JavaScript by Imran Nazar
Roll your own JavaScript runtime by Bartek Iwańczuk
Writing NES emulator in Rust by Rafael Bagmanov
2D Game Development: From Zero To Hero by Daniele Penazzo
Gentle Introduction to Realtime Fluid Simulation for Programmers and Technical Artists by Shahriar Shahrabi
Retro Rampage a tutorial series in which you will learn how to build a Wolfenstein-like game from scratch, in Swift by Nick Lockwood
Roguelike Tutorial - In Rust by Herbert Wolverson
Scroll Back: The Theory and Practice of Cameras in Side-Scrollers by Itay Keren
Write a First Person Game in 2KB With Rust by Grant Handy
C# and Shader Tutorials for the Unity Engine by Jasper Flick
Godot Engine 4 Tutorials by Jasper Flick
Minimal Cross-Platform Graphics by Serge Zaitsev
X Window System Basics by Jasper St. Pierre
Architecture of Consoles by Rodrigo Copetti
Modern Microprocessors: A 90-Minute Guide! by Jason Robert Carey Patterson
What Every Programmer Should Know About Memory by Ulrich Drepper [pdf]
Hex: A Strategy Guide by Matthew Seymour
The World's Fastest Scrabble Program by Andrew W. Appel and Guy J. Jacobson [pdf]
A gentle introduction to two's complement by Michael Doornbos
Computer Science from the Bottom Up by Ian Wienand
Onboarding floating-point by Mike Acton
3Blue1Brown lessons by Grant Sanderson
A Gentle Introduction to Tensors by Boaz Porat
A Gentle Introduction to the Art of Mathematics by Joe Fields
A Programmer's Introduction to Mathematics by Jeremy Kun
An Infinite Descent into Pure Mathematics by Clive Newstead
An Infinitely Large Napkin by Evan Chen [pdf]
An introduction to graph theory by Darij Grinberg [pdf]
Book of Proof, Third Edition by Richard Hammack
Everything You Always Wanted To Know About Mathematics by Brendan W. Sullivan with Professor John Mackey [pdf]
Introduction to Homotopy Type Theory by Egbert Rijke
Paul's Online Math Notes by Paul Dawkins
The Mechanics of Proof by Heather Macbeth
The Princeton Companion to Mathematics by Timothy Gowers - editor [pdf]
Immersive Linear Algebra by J. Ström, K. Åström, and T. Akenine-Möller
Interactive Linear Algebra by Dan Margalit and Joseph Rabinoff
Intermediate Algebra by Saylor Academy
Linear Algebra Done Right by Sheldon Axler
Linear Algebra Done Wrong by Sergei Treil
Introduction to Calculus by Paul Lutus [pdf]
Category Theory for Programmers by Bartosz Milewski
Category Theory for Programming by Benedikt Ahrens and Kobe Wullaert
Category Theory Illustrated by Boris Marinov
Category Theory: Lecture Notes and Online Books - collection by Peter Smith
Seven Sketches in Compositionality: An Invitation to Applied Category Theory by Brendan Fong and David I. Spivak
Bayes Rules! An Introduction to Applied Bayesian Modeling by Alicia A. Johnson, Miles Q. Ott, Mine Dogucu
Digital textbook on probability and statistics by Marco Taboga
Introduction to Modern Statistics (2nd Ed) by Mine Çetinkaya-Rundel and Johanna Hardin
Introduction to Probability for Data Science by Stanley H. Chan
Markov Chains for programmers by Ricardo M. Czekster
Probability 101, the intuition behind martingales and solving problems with them
Probability and Statistics Cookbook by Matthias Vallentin
Seeing Theory - a book about statistics with interactive visualizations by Daniel Kunin, Jingru Guo, Tyler Dae Devlin, and Daniel Xiang
Statistics Handbook by Carlo Occhiena
Busy Beavers! - An interactive intro to Computability Theory by Jim Fisher
Elements of Programming by Alexander Stepanov and Paul McJones
Foundations of Computer Science by Alfred V. Aho and Jeffrey D. Ullman
Software Foundations - A broad introduction to the mathematical underpinnings of reliable software.
Algebraic Topology for Data Scientists by Michael S. Postol
Computational Algebraic Topology by Vidit Nanda
Topology Without Tears by Sidney A. Morris
A C++17 Thread Pool for High-Performance Scientific Computing by Barak Shoshany
A Science of Concurrent Programs by Leslie Lamport [pdf]
Is Parallel Programming Hard, And, If So, What Can You Do About It? by Paul E. McKenney
POSIX Threads Programming by Blaise Barney
The Little Book of Semaphores by Allen B. Downey
A Journey in Creating an Operating System Kernel by Mohammed Q. Hussain
Advanced Linux Programming by Mark Mitchell, Jeffrey Oldham, and Alex Samuel
Linux Insides by 0xAD
Making a RISC-V Operating System using Rust by Stephen Marz
Making an RISC-V OS
Making our own executable packer by Amos
Operating System development tutorials in Rust on the Raspberry Pi by Andre Richter
Operating Systems: Three Easy Pieces by Remzi H Arpaci-Dusseau and Andrea C Arpaci-Dusseau
Systems Programming: Lecture Notes by Jian Huang
The Art of Unix Programming by Eric Steven Raymond
The Linux Kernel Module Programming Guide by Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang
Unix as IDE by Tom Ryder
Writing a Simple Operating System — from Scratch by Nick Blundell
Writing an OS in Rust by Philipp Oppermann
A free introduction to quantum computing and quantum mechanics by Andy Matuschak and Michael Nielsen
Physics for Mathematicians by Nicolas James Marks Ford
Motion Mountain by Christoph Schiller - A free physics textbook in 5 volumes.
Relativity: A Modern Primer by Kevin Han
Structure and Interpretation of Classical Mechanics, Second Edition by Gerald Jay Sussman and Jack Wisdom
A fundamental introduction to x86 assembly programming by Nayuki
Learn Assembly Language - NASM x86 assembly language tutorial on Linux.
Let's Learn x86-64 Assembly!
PC Assembly Language by Paul A. Carter
RISC-V Assembly Programming by Prof. Edson Borin
Some Assembly Required: An approachable introduction to assembly
x86-64 Assembly Language Programming with Ubuntu by Ed Jorgensen
Coroutines in C by Simon Tatham
Demystifying bitwise operations, a gentle C tutorial by Andrei Ciobanu
Object-Oriented Programming with ANSI-C by Axel-Tobias Schreiner [pdf]
So You Think You Know C? by Oleksandr Kaleniuk [pdf]
The Lost Art of Structure Packing by Eric S. Raymond
Writing a Simple Garbage Collector in C by Matthew Plant
Beginner's Guide to Linkers by David Drysdale
C++ exceptions under the hood by Nicolás Brailovsky
C++20 Coroutines: sketching a minimal async framework by Jeremy Ong
C++20 Concepts: The Definitive Guide by Rajat Jain
Fiber in C++: Understanding the Basics by Jiayin Cao
Memory Profiling by Denis Bakhvalov
Performance Analysis and Tunning on Modern CPUs by Denis Bakhvalov
The Boost C++ Libraries by Boris Schäling
Starting FORTH by Leo Brodie
Thinking Forth by Leo Brodie [pdf]
Network Programming with Go by Jan Newmarch
Practical Go Lessons by Maximilien Andile
Learn Haskell by building a blog generator Gil Mizrahi
Learn You a Haskell for Great Good! by Miran Lipovača
Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen
Eloquent JavaScript by Marijn Haverbeke
Exploring JS: JavaScript books for programmers by Dr. Axel Rauschmayer
Speaking JavaScript: An In-Depth Guide for Programmers by Dr. Axel Rauschmayer
Structure and Interpretation of Computer Programs — JavaScript Edition by
The Modern JavaScript Tutorial by Ilya Kantor
Babashka Babooka: Write Command-Line Clojure by Daniel Higginbotham
Clojure Concurrency Tutorial by Eric Normand
Clojure for the Brave and True by Daniel Higginbotham
Learn Lisp The Hard Way by "the Phoeron" Colin J.E. Lupton
Practical Common Lisp by Peter Seibel
Successful Lisp: How to Understand and Use Common Lisp by David B. Lamkins
Typed Lisp, A Primer by Musa Al-hassy
A Functional Introduction To Computer Science by Prabhakar Ragde
Beautiful Racket by Matthew Butterick
How to Design Programs, Second Edition by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
Programming Languages: Application and Interpretation by Shriram Krishnamurthi
Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman with Julie Sussman
(learn 'scheme) by Jared Krinke
OCaml Programming: Correct + Efficient + Beautiful by Michael R. Clarkson
Real World OCaml by Yaron Minsky, Anil Madhavapeddy and Jason Hickey
Programming and Programming Languages by Shriram Krishnamurthi, Benjamin S. Lerner, Joe Gibbs Politz, Kathi Fisler
A Data-Centric Introduction to Computing by Kathi Fisler, Shriram Krishnamurthi, Benjamin S. Lerner, Joe Gibbs Politz
30 Days Of Python by Asabeneh
Automate the Boring Stuff with Python by Al Sweigart
Composing Programs by John DeNero
Computational Discovery on Jupyter by Rob Corless
Data Structures and Information Retrieval in Python by Allen B. Downey
From Python to Numpy by Nicolas P. Rougier
NumPy Illustrated: The Visual Guide to NumPy by Lev Maximov
Pandas Illustrated: The Definitive Visual Guide to Pandas by Lev Maximov
Practical Python Programming by David Beazley
Python Asyncio: The Complete Guide by Jason Brownlee
Python Design Patterns by Brandon Rhodes
Python for Data Analysis, 3rd edition by Wes McKinney
Scientific Visualization: Python + Matplotlib by Nicolas Rougier
Think Python, 2nd Edition by Allen B. Downey
Think Python, 3rd Edition by Allen B. Downey
Implementing Regular Expressions by Russ Cox
Regular-Expressions.info by Jan Goyvaerts
Building Games with DragonRuby by Brett Chalupa
A Gentle Introduction to Rust by Steve Donovan
Beginner's guide to Error Handling in Rust by Shesh Babu
Clear explanation of Rust’s module system by Shesh Babu
Effective Rust by David Drysdale
Exploring ways to make async Rust easier by Carl Lerche
Learning Async Rust With Entirely Too Many Web Servers by Ibraheem Ahmed
Rust Atomics and Locks: Low-Level Concurrency in Practice by Mara Bos
An Afterlife User's Guide to the C64 by Gregorio Naçu
Commodore Bookmarks - Bookmarks for the Commodore 64, 128, Plus4, C16, VIC20 & PET Community.
Famicom Party: Making NES Games in Assembly by Kevin Zurawel
First Steps in Z80 Assembly Language by Darryl Sloan
How to Write ZX Spectrum Games by Jonathan Cauldwell
Learn Multiplatform Assembly Programming by ChibiAkumas
MEGA65 Welcome Guide by Dan Sanderson
Michael Abrash’s Graphics Programming Black Book, Special Edition by Michael Abrash
Sinclair ZX Spectrum BASIC programming by Steven Vicker
The Lost Ways of Programming: Commodore 64 BASIC by Tomas Petricek
ZX Spectrum Next: Assembly Developer Guide by Tomaz Kragelj
Advent of Code 2022 on a MikroMikko 4TT m326 by Jukka Jylänki
Advent Of Code 2023 on a Commodore 64 by Jukka Jylänki
The Book of CP-System [pdf]
Beyond the 1 MB barrier in DOS by Julio Merino
From 0 to 1 MB in DOS by Julio Merino
Applied Reverse Engineering Series by Daax Rynd, Aidan Khoury and Nick Peterson
Reverse Engineering for Beginners by Dennis Yurichev
Reversing for dummies - x86 assembly and C code by Sami Alaoui
Introduction to Autonomous Robots by Nikolaus Correll, Bradley Hayes, Christoffer Heckman, and Alessandro Roncone
Modern Robotics: Mechanics, Planning, and Control by Kevin M. Lynch and Frank C. Park
Underactuated Robotics by Russ Tedrake
ARM NEON for C++ Developers [pdf]
Designing a SIMD Algorithm from Scratch by Miguel Young de la Sota
SIMD for C++ Developers [pdf]
Design and Implementation of a Win32 Text Editor by James Brown
Text Buffer Reimplementation by Peng Lyu
Text Editor: Data Structures by Avery Laird
Emacs From Scratch by Arne Bahlo
How to learn Emacs by David Röthlisberger
Use GNU Emacs: The Plain Text Computing Environment by Keith Waclena
Interactive Vim Tutorial by Henrik Huttunen
Learn Vim (the Smart Way) by Igor Irianto
The Vi/Ex Editor by Walter Alan Zintz
Vim from the ground up by Matthieu Cneude
Vim Reference Guide by Sundeep Agarwal
Programming with Unicode by Victor Stinner
The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets by Joel Spolsky
The Absolute Minimum Every Software Developer Must Know About Unicode in 2023 by Nikita Prokopov
Unicode programming, with examples by Joe Nelson
Git from the Bottom Up by John Wiegley
Learn the workings of Git, not just the commands by Andre Fachat
A book about using Node.js by Mikito Takada
FastCGI — The Forgotten Treasure by Peter Simons and Ralph Babel
Single page apps in depth by Mikito Takada
The Flask Mega-Tutorial by Miguel Grinberg
What happens when you type google.com into your browser's address box and press enter? by Alex Gaynor
A Complete Guide to CSS Grid by Chris House
Learn CSS Layout the pedantic way by Mikito Takada
Modern CSS Solutions for Old CSS Problems by Stephanie Eckles
Explained from First Principles by Kaspar Etter
How These Things Work - a book about abstraction
Project Oberon: The Design of an Operating System, a Compiler, and a Computer by Niklaus Wirth and Jürg Gutknecht
Software Technical Writing: A Guidebook by James [pdf]
The Art of HPC by Victor Eijkhout
The Fundamentals of Control Theory by Brian Douglas
The Nature of Code a book about how can we capture the unpredictable evolutionary and emergent properties of nature in software by Daniel Shiffman
The Scientist and Engineer's Guide to Digital Signal Processing by Steven W. Smith, Ph.D.
Become a Programmer, Motherfucker - A list of free programming books.
Electronic References by Colin S. Gordon - a loosely-categorized collection of links to CS textbooks in a variety of areas that are freely available online.
GPU Optimization for GameDev by Ken Hu