This is a list of links to different freely available learning resources about computer programming, math, and science.
- AI
- Algorithms
- Art
- Biology
- Command Line and Tools
- Compilers and Interpreters
- Computer Graphics
- Computer Networks and Network Programming
- Cryptography
- Data Science
- Debuggers
- Databases
- Demoscene
- Design Patterns
- Distributed Systems
- Electronics
- Emulators and Virtual Machines
- Fluids Simultion
- Game Programming
- Geographic Information Systems
- GUI Programming
- Hardware
- Logical Games
- Low Level Stuff
- Math
- Multithreading and Concurrency
- Operating Systems
- Photography
- Physics
- Programming Languages
- Retrocomputing
- Reverse engineering
- Robotics
- SIMD programming
- Text editors
- Unicode
- Version control tools
- Web programming
- Other
- Other lists
-
A Course in Machine Learning by Hal Daumé III
-
A Visual Guide to Quantization: Demystifying the Compression of Large Language Models by Maarten Grootendorst
-
Alice’s Adventures in a differentiable wonderland by Simone Scardapane
-
An Introduction to Statistical Learning by Gareth James, Daniela Witten, Trevor Hastie, Rob Tibshirani
-
Applied Machine Learning for Tabular Data by Max Kuhn and Kjell Johnson
-
Crash Course in Deep Learning (for Computer Graphics) by Jakub Boksansky [alternative link]
-
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 by Shlomo Kashani and Amir Ivry
-
Information Theory, Inference, and Learning Algorithms by David MacKay
-
Introduction to ggml by Xuan Son NGUYEN, Georgi Gerganov and slaren
-
Introduction to Machine Learning Interviews by Chip Huyen
-
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
-
Neural Networks and Deep Learning by Michael Nielsen
-
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 Engineer's Guide To Deep Learning by Hironobu Suzuki
-
The Hundred Page Machine Learning Book by Andriy Burkov
-
The Little Book of Deep Learning by François Fleuret
-
Tutorial on Diffusion Models for Imaging and Vision by Stanley H. Chan
-
Understanding Deep Learning by Simon J.D. Prince
-
Deep Reinforcement Learning by Aske Plaat
-
Distributional Reinforcement Learning by Marc G. Bellemare, Will Dabney and Mark Rowland
-
Multi-Agent Reinforcement Learning: Foundations and Modern Approaches by Stefano V. Albrecht, Filippos Christianos and Lukas Schäfer
-
Reinforcement Learning: An Introduction, Second Edition by Richard S. Sutton and Andrew G. Barto
-
Artificial Intelligence and Games by Georgios N. Yannakakis and Julian Togelius
-
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 Books by Mykel J. Kochenderfer
- Algorithms for Optimization by Mykel J. Kochenderfer, and Tim A. Wheeler
- Algorithms for Decision Making by Mykel J. Kochenderfer, Tim A. Wheeler, and Kyle H. Wray
- Algorithms for Validation by Mykel J. Kochenderfer, Sydney M. Katz, Anthony L. Corso, and Robert J. Moss
-
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
-
Foundations of Data Science by Avrim Blum, John Hopcroft, and Ravindran Kannan [pdf]
-
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 [pdf]
-
Sequential and Parallel Data Structures and Algorithms: The Basic Toolbox by Peter Sanders, Kurt Mehlhorn, Martin Dietzfelbinger, and Roman Dementiev
-
The Skyline algorithm for packing 2D rectangles by Julien Vernay
- Pixel art articles and tutorials by Pedro Medeiros
-
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
-
Terminal colours are tricky by Julia Evans
-
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 a Toy Programming Language in Python by Miguel Grinberg
-
Building the fastest Lua interpreter.. automatically! by Haoran Xu
-
Compiling to Assembly from Scratch by Vladimir Keleshev
-
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 fast and precise triangle rasterizer by Kristoffer Dyrkorn
-
A Gentle Introduction to D3D12 by Alex Tardif
-
A trip through the Graphics Pipeline by Fabian Giesen
-
A Quick Introduction to Workgraphs by Kostas Anagnostou
-
Building Real-Time Global Illumination by Jason McGhee
-
Computer Graphics from Scratch by Gabriel Gambetta
-
Crash Course in BRDF Implementation by Jakub Boksansky
-
GPU Gems Books Series
-
GPU Performance for Game Artists by Keith O’Conor
-
GPU Programming Primitives for Computer Graphics by Daniel Meister, Atsushi Yoshimura, and Chih-Chen Kao
-
Implementing a tiny CPU rasterizer by Nikita Lisitsa
-
Implementing Order-Independent Transparency by Rubén Osorio López
-
Inigo Quilez's Website - Articles, tutorials, code, and presentations related to computer graphics.
-
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.
-
Optimizing Software Occlusion Culling by Fabian Giesen
-
Order Independent Transparency by Kostas Anagnostou
-
Physically Based Rendering in Filament by Romain Guy and Mathias Agopian
-
Probability Theory for Physically Based Rendering by Jacco Bikker
-
Rasterising a triangle by Jason Tsorlinis
-
Recreating Nanite by Xavier Niochaut
-
Software rasterizing hair by Marcin Matuszczyk
-
Texture-less Text Rendering by Tim Gfrerer
-
Cubic spline interpolation by Eli Bendersky
-
Curves and Surfaces by Bartosz Ciechanowski
-
Compute with DirectX 12 by Stefan Pijnacker
-
Getting Started With DirectX Raytracing by Seppe Dekeyser
-
GPU Work Graphs mesh nodes in Microsoft DirectX® 12 by Max Oberberger
- Atkinson Dithering by John Earnest
-
Drawing Graphics on Apple Vision with the Metal Rendering API by Georgi Nikolov
-
Metal Tutorial by Will Martin
-
Learn OpenGL by Joey de Vries
-
Learning Modern 3D Graphics Programming by Jason L. McKesson
-
OGLdev: Modern OpenGL tutorials by Etay Meiri
-
A raycasting engine in 7 easy steps by Austin Z. Henley
-
Demystifying multiple importance sampling by Nikita Lisitsa
-
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
-
Ray Tracing with Voxels in C++ by Jacco Bikker
-
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
-
Introduction to Shaders by Karl Bittner
-
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 Best Darn Grid Shader (Yet) by Ben Golus
-
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
-
How I learned Vulkan and wrote a small game engine with it by Elias Daler
-
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
-
WebGPU Unleashed: A Practical Tutorial by Shi Yan
-
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
-
Mediocre Engineer’s guide to HTTPS by Devon Peroutky
-
Networking 101 by Internal Pointers
-
A Graduate Course in Applied Cryptography by Dan Boneh and Victor Shoup
-
All I Know About Certificates by Ke Pi
-
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
-
B-trees and database indexes by Benjamin Dicken
-
Build Your Own Database From Scratch in Go by James Smith
-
Build your own SQLite by Geoffrey Copin
-
Build Your Own Redis with C/C++ by James Smith
-
Database Design for Google Calendar: a tutorial by Alexey Makhotkin
-
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 Internals of PostgreSQL by Hironobu Suzuki
-
The Theory of Relational Databases by David Maier
-
Graphics Tricks from Boomers - Technical details about a 4096 bytes Atari-STE intro, by Arnaud Carré.
-
How a 64k intro is made by Pekka Väänänen
-
The making of Immersion
-
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
-
Implementing Raft by Eli Bendersky
-
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
-
Gentle Introduction to Realtime Fluid Simulation for Programmers and Technical Artists by Shahriar Shahrabi
-
Simulating Fluids, Fire, and Smoke in Real-Time by Andrew Chan
-
2D Game Development: From Zero To Hero by Daniele Penazzo
-
3D Game Engine Programming by Jeremiah van Oosten
-
Game Development, Shader Coding & Artificial Intelligence by Alan Zucconi
-
Isometric Projection in Game Development by Gustavo Pezzi
-
Isometric Tutorials by Clint Bellanger
-
Procedural Content Generation in Games by Noor Shaker, Julian Togelius, and Mark J. Nelson
-
Retro Rampage - A tutorial series in which you will learn how to build a Wolfenstein-like game from scratch, in Swift by Nick Lockwood
-
Red Blob Games - Interactive visual explanations of math and algorithms, using motivating examples from computer games by Amit Patel
-
Roguelike Tutorial - In Rust by Herbert Wolverson
-
Terrain programmig by Shamus Young
-
The guide to implementing 2D platformers by Rodrigo Monteiro
-
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
- Computational Modelling of Terrains by Hugo Ledoux, Ken Arroyo Ohori, Ravi Peters, and Maarten Pronk
-
A Book about Qt5 by Jürgen Bocklage-Ryannel and Johan Thelin
-
Minimal Cross-Platform Graphics by Serge Zaitsev
-
Sol on Immediate Mode GUIs by Jari Komppa
-
X Window System Basics by Jasper St. Pierre
-
Architecture of Consoles by Rodrigo Copetti
-
Computer Architecture, Fifth Edition: A Quantitative Approach by John L. Hennessy and David A Patterson
-
Modern Microprocessors: A 90-Minute Guide! by Jason Robert Carey Patterson
-
What Every Programmer Should Know About Memory by Ulrich Drepper [pdf]
-
Zen, CUDA, and Tensor Cores by Casey Muratori
-
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
-
Beginner's Guide to Linkers by David Drysdale
-
Computer Science from the Bottom Up by Ian Wienand
-
CPU performance optimization guide - Preface by Hui Zhang
-
Floating Point Visually Explained by Fabien Sanglard
-
Memory Profiling by Denis Bakhvalov
-
Onboarding floating-point by Mike Acton
-
Performance Analysis and Tunning on Modern CPUs by Denis Bakhvalov
-
3Blue1Brown lessons by Grant Sanderson
-
A Gentle Introduction to Tensors by Boaz Porat [pdf]
-
A Gentle Introduction to the Art of Mathematics by Joe Fields
-
A Programmer's Introduction to Mathematics by Jeremy Kun
-
An animated introduction to Fourier Series by Andrei Ciobanu
-
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
-
- Category theory
- Fourier analysis [pdf]
- Galois theory
- General topology [pdf]
- Linear algebra by [pdf]
-
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
-
Real Not Complex - Discover Incredible FREE Resources to Study Mathematics.
-
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
-
Calculus by Gilbert Strang
-
Calculus with Julia by John Verzani
-
Harmonic Function Theory by Sheldon Axler, Paul Bourdon, and Wade Ramey
-
Introduction to Calculus by Paul Lutus [pdf]
-
Measure, Integration & Real Analysis by Sheldon Axler
-
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 in Programming by Noah Ma
-
Category Theory: Lecture Notes and Online Books - collection by Peter Smith
-
Pragmatic Category Theory by Dmitrii Kovanikov
-
Seven Sketches in Compositionality: An Invitation to Applied Category Theory by Brendan Fong and David I. Spivak
- Planes in 3D space by Alex Harri
-
Applied Mathematical Programming by Stephen P. Bradley, Arnoldo C. Hax, and Thomas L. Magnanti
-
Introduction to Operations Research, Tenth Edition by Frederick S. Hillier, and Gerald J. Lieberman [pdf]
-
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
-
The Truth About Linear Regression by Cosma Rohilla Shalizi
-
Busy Beavers! - An interactive intro to Computability Theory by Jim Fisher
-
Discrete Mathematics: An Open Introduction, 4th Edition by Oscar Levin
-
Elements of Programming by Alexander Stepanov and Paul McJones
-
Foundations of Computer Science by Alfred V. Aho and Jeffrey D. Ullman
-
Mathematics for Computer Science by Eric Lehman, F. Thomson Leighton, and Albert R. Meyer [pdf]
-
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
-
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
-
What every systems programmer should know about concurrency by Matt Kline [pdf]
-
Advanced Linux Programming by Mark Mitchell, Jeffrey Oldham, and Alex Samuel [pdf]
-
Linux Insides by Alex Kuleshov
-
Making our own executable packer by Amos Wenger
-
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
-
A Journey in Creating an Operating System Kernel by Mohammed Q. Hussain
-
Baking Pi – Operating Systems Development by Alex Chadwick
-
Making a RISC-V Operating System using Rust by Stephen Marz
-
Making an RISC-V OS
-
Operating System development tutorials in Rust on the Raspberry Pi by Andre Richter
-
Writing a Simple Operating System — from Scratch by Nick Blundell
-
Writing an OS in Rust by Philipp Oppermann
-
Writing an OS in Nim by Khaled Hammouda
- Photography for geeks by Michal Zalewski
-
A free introduction to quantum computing and quantum mechanics by Andy Matuschak and Michael Nielsen
-
An Intuitive Guide to Maxwell’s Equations by Nick M.
-
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 by Gerald Jay Sussman and Jack Wisdom with Meinhard E. Mayer
-
Physics-Based Simulation by Minchen Li, Chenfanfu Jiang, and Zhaofeng Luo
-
Ten Minute Physics by Matthias Müller
- Introduction to the Theory of Programming Languages by Bertrand Meyer
- Ada 95: The Craft of Object-Oriented Programming by John English
-
A friendly introduction to assembly for high-level programmers by Manuel Spagnolo
-
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
-
x86-64 Assembly Language Programming with Ubuntu by Ed Jorgensen
- Introduction to Bash Scripting by Bobby Iliev
-
Coroutines in C by Simon Tatham
-
Demystifying bitwise operations, a gentle C tutorial by Andrei Ciobanu
-
How to implement a hash table (in C) by Ben Hoyt
-
Moden C by Jens Gustedt
-
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
-
C++ exceptions uner the hood by Nicolás Brailovsky
- Part 1
- Part 2: A tiny ABI
- Part 3: An ABI to appease the linker
- Part 4: Catching what you throw
- Part 5: Magic around __cxa_begin_catch and __cxa_end_catch
- Part 6: gcc_except_table and the personality function
- Part 7: A nice personality
- Part 8: Two-phase handling
- Part 9: Catching our first exception
- Part 10: Unwind and call frame info
- Part 11: Reading a CFI table
- Part 12: And suddenly, reflexion in C++
- Part 13: Setting the context for a landing pad
- Part 14: Multiple landing pads & the teachings of the guru
- Part 15: Finding the right landing pad
- Part 16: Finding the right catch in a landing
- Part 17: Reflecting on an exception type and reading .gcc_except_table
- Part 18: Getting the right stack frame
- Part 19: Getting the right catch in a landing pad
- Part 20: Running destructors while unwinding
- Part 21: A summary and some final thoughts
- Appendix I: The true cost of an exception
- Appendix II: Metaclasses and RTTI on C++
- Appendix III: RTTI and exceptions orthogonality
-
C++ Stories by Bartłomiej Filipek
-
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
-
Modernes C++ by Rainer Grimm
-
The Boost C++ Libraries by Boris Schäling
- Programming in D by Ali Çehreli
- Learn Datalog Today by Jonas Enlund
-
Adopting Erlang by Tristan Sloughter, Fred Hebert, and Evan Vigil-McClanahan
-
Learn You Some Erlang for great good! by Fred Hebert
-
Stuff Goes Bad: Erlang in Anger by Fred Hebert
-
Starting FORTH by Leo Brodie
-
Thinking Forth by Leo Brodie [pdf]
-
Practical Go Lessons by Maximilien Andile
-
REST Servers in Go by Ely Bendersky
-
Learn Haskell by building a blog generator Gil Mizrahi
-
Learn You a Haskell for Great Good! by Miran Lipovača
-
Monads for functional programming by Philip Wadler [pdf]
-
Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen
- How to Design Classes by Matthias Felleisen, Matthew Flatt, Robert Bruce Findler, Kathryn E. Gray, Shriram Krishnamurthi and Viera K. Proulx [pdf]
-
Eloquent JavaScript by Marijn Haverbeke
-
Exploring JS: JavaScript books for programmers by Dr. Axel Rauschmayer
-
Structure and Interpretation of Computer Programs — JavaScript Edition by
- Harold Abelson and Gerald Jay Sussman with Julie Sussman — original authors
- Martin Henz and Tobias Wrigstad with Julie Sussman — adapters to JavaScript
- Samuel Fang — designer and developer of this Interactive SICP JS edition
-
The Modern JavaScript Tutorial by Ilya Kantor
- Functional Programming in Lean by David Thrane Christiansen
-
Babashka Babooka: Write Command-Line Clojure by Daniel Higginbotham
-
Clojure for the Brave and True by Daniel Higginbotham
-
Gamedev in Lisp by Andrew Kravchuk
-
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
- Computer Programming with the Nim Programming Language by Dr. Stefan Salewski
-
OCaml Programming: Correct + Efficient + Beautiful by Michael R. Clarkson
-
Real World OCaml by Yaron Minsky, Anil Madhavapeddy and Jason Hickey
- Object-Oriented Programming in Oberon-2 by Hanspeter Mössenböck [pdf]
- Introduction to the Odin Programming Language by Karl Zylinski
- Modern Object Pascal Introduction for Programmers by Michalis Kamburelis
- Learning PostScript by Doing by Andre Heck [pdf]
-
The Power of Prolog by Markus Triska
-
Game Programming in Prolog by Youngjin Kang
-
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
-
Architecture Patterns with Python by Harry Percival and Bob Gregory
-
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
-
Full Stack Python by Matt Makai
-
How Python Asyncio Works: Recreating it from Scratch by Jacob Padilla
-
How to Think Like a Computer Scientist: Interactive Edition by Peter Wentworth, Jeffrey Elkner, Allen B. Downey, and Chris Meyers
-
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 & OpenGL for Scientific Visualization by Nicolas P. Rougier
-
Python Asyncio: The Complete Guide by Jason Brownlee
-
Python Data Science Handbook by Jake VanderPlas
-
Python Design Patterns by Brandon Rhodes
-
Python for Data Analysis, 3rd edition by Wes McKinney
-
Scientific Visualization: Python + Matplotlib by Nicolas Rougier
-
Test-Driven Development with Python by Harry Percival
-
The Ultimate Guide to Error Handling in Python by Miguel Grinberg
-
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
-
Async Rust in Three Parts by Jack O'Connor
-
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
- Smalltalk Resources - A list of free smalltalk books.
- Learning Zig by Karl Seguin
-
- Game Engine Black Book: Wolfenstein 3D
- Game Engine Black Book: DOOM
- The Book of CP-System
-
Famicom Party: Making NES Games in Assembly by Kevin Zurawel
-
How PlayStation Graphics & Visual Artefacts Work by Gustavo Pezzi
-
Learn Multiplatform Assembly Programming by ChibiAkumas
-
Mark Moxon's Software Archaeology - Fully documented source code for Elite, Revs, Lander, Aviator and more
-
Michael Abrash’s Graphics Programming Black Book, Special Edition by Michael Abrash
-
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
-
An Afterlife User's Guide to the C64 by Gregorio Naçu
-
C64 OS Programmer's Guide by Gregorio Naçu
-
Commodore Bookmarks - Bookmarks for the Commodore 64, 128, Plus4, C16, VIC20 & PET Community.
-
The Lost Ways of Programming: Commodore 64 BASIC by Tomas Petricek
-
256-Color VGA Programming in C by David Brackeen
-
Beyond the 1 MB barrier in DOS by Julio Merino
-
From 0 to 1 MB in DOS by Julio Merino
-
MEGA65 Welcome Guide by Dan Sanderson
-
First Steps in Z80 Assembly Language by Darryl Sloan [pdf]
-
How to Write ZX Spectrum Games by Jonathan Cauldwell [pdf]
-
Sinclair ZX Spectrum BASIC programming by Steven Vicker [pdf]
-
ZX Spectrum Next: Assembly Developer Guide by Tomaz Kragelj
-
Applied Reverse Engineering Series by Daax Rynd, Aidan Khoury and Nick Peterson
-
Reverse Engineering for Beginners by Dennis Yurichev
-
Reverse Engineering For Everyone by Kevin Thomas
-
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 Config 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
-
HTML for People by Blake Watson
-
Implementing React From Scratch by Robby Pruzan
-
Single page apps in depth by Mikito Takada
-
The Copenhagen Book - A general guideline on implementing auth in web applications.
-
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