programming-math-science
This is a list of links to different freely available learning resources about computer programming, math, and science.
https://github.com/bobeff/programming-math-science
Last synced: about 9 hours ago
JSON representation
-
Retrocomputing
-
Books by Fabien Sanglard
-
Zig
- Programming specs for the GBA and NDS hardware
- A Guide to the Graphics of the Sega Mega Drive / Genesis
- An Afterlife User's Guide to the C64
- Apple II Documentation Project
- Commodore 64 Guides
- Commodore Bookmarks - Bookmarks for the Commodore 64, 128, Plus4, C16, VIC20 & PET Community.
- Famicom Party: Making NES Games in Assembly
- First Steps in Z80 Assembly Language
- How to Write ZX Spectrum Games
- Learn Multiplatform Assembly Programming
- MEGA65 Documentation
- MEGA65 Welcome Guide
- Michael Abrash’s Graphics Programming Black Book, Special Edition
- Multiplying and Dividing on the 6502
- Sinclair ZX Spectrum BASIC programming
- The Lost Ways of Programming: Commodore 64 BASIC
- Z80 User's Manual
- Usborne 1980s Computer Books
- Neil Parker's Apple II page
- A Guide to the Graphics of the Sega Mega Drive / Genesis
- BASIC Code
- Books by Fabien Sanglard
- Easy 6502
- How PlayStation Graphics & Visual Artefacts Work
- How pseudo-3d racing games work
- jsgroth's blog
- Learn Multiplatform Assembly Programming
- Mark Moxon's Software Archaeology - Fully documented source code for Elite, Revs, Lander, Aviator and more
- MarkeyJester’s Motorola 68000 Beginner’s Tutorial
- Michael Abrash’s Graphics Programming Black Book, Special Edition
- NeHe OpenGL Tutorials
- Patai Gergely's Website
- Porting Stunt Car Racer to the Commodore Plus/4
- Porting Stunt Car Racer to the Apple II
- Pushing the Boundaries of C64 Graphics with NUFLIX
- Portals and Quake
- Retro Game Coders
- The Annotated "Programming the Nintendo GBA : The Unofficial Guide
-
Adevent of code on retro machines
-
DOS
-
ZX Spectrum and Z80 CPU
-
Apple II
-
Commodore 64
- An Afterlife User's Guide to the C64
- C64 OS Programmer's Guide
- Commodore Bookmarks - Bookmarks for the Commodore 64, 128, Plus4, C16, VIC20 & PET Community.
- The Lost Ways of Programming: Commodore 64 BASIC
-
CP/M <span id="cpm">
-
Game Boy
-
Mega 65
-
NES
- Famicom Party: Making NES Games in Assembly
- NesDev.org - A community of homebrew game developers and hardware researchers for the Nintendo Entertainment System (NES) and other retro consoles.
-
-
Programming languages
-
Lisp dialects
- Clojure for the Brave and True
- Beautiful Racket
- How to Design Programs
- Babashka Babooka: Write Command-Line Clojure
- Clojure Concurrency Tutorial
- Learn Lisp The Hard Way
- Successful Lisp: How to Understand and Use Common Lisp
- Typed Lisp, A Primer - hassy*
- Part II
- Structure and Interpretation of Computer Programs
- Babashka Babooka: Write Command-Line Clojure
- Part 1: ECS and Metalinguistic Abstraction
- Part 2: Dungeons and Interfaces
- Learn Lisp The Hard Way
- On Lisp
- Practical Common Lisp
- The Common Lisp Cookbook
- Typed Lisp, A Primer - hassy*
- Part I
- Part II
- Programming Languages: Application and Interpretation
- (learn 'scheme)
-
Ada
-
C++ <span id="cpp">
- C++ Core Guidelines
- Performance Analysis and Tunning on Modern CPUs
- More C++ Idioms
- Awesome Modern C++
- C++ exceptions under the hood
- C++20 Coroutines: sketching a minimal async framework
- C++20 Concepts: The Definitive Guide
- Fiber in C++: Understanding the Basics
- Hacking C++
- Microsoft C++ language documentation
- The Boost C++ Libraries
- Part 2: Memory Usage Case Study
- Part 3: Memory Footprint with SDE
- Part 4: Memory Footprint Case Study
- Part 5. Data Locality and Reuse Distances
- Part 4: Catching what you throw
- Part 8: Two-phase handling
- Part 14: Multiple landing pads & the teachings of the guru
- Part 20: Running destructors while unwinding
- Appendix II: Metaclasses and RTTI on C++
- Appendix III: RTTI and exceptions orthogonality
- C++20 Coroutines: sketching a minimal async framework
- C++20 Concepts: The Definitive Guide
- Effective Modern C++
- Fiber in C++: Understanding the Basics
- Hacking C++
- Learn C++
- Learning to read C++ compiler errors: Not a legal base class
- Microsoft C++ language documentation
- My Favorite C++ Pattern: X Macros
- Philosophy of coroutines
- The Boost C++ Libraries
- Part 1: Concept art
- Part 2: Using a std::list
- Part 3: Using a std::vector
- Part 4: Using a circular doubly linked list
- Part 5: Copying our tracking pointer
- Part 6: Non-modifying trackers
- Part 7: Non-modifying trackers, second try
- Part 8: Tracking const objects
- Part 9: Conversion
- Part 10: Proper conversion
- Part 11: Repairing assignment
- Part 12: A shared tracking pointer
- Part 13: Restoring the strong exception guarantee
- Part 14: Nonthrowing moves with the shared tracking pointer
- Part 15: A custom shared pointer
- Part 16: Second attempt to use a list
-
OCaml
-
Nim
-
Python
- Composing Programs
- Composing Programs
- From Python to Numpy
- Learn Python the Right Way
- Practical Python Programming
- Python Asyncio: The Complete Guide
- Python for Data Analysis, 3rd edition
- Test-Driven Development with Python
- NumPy Illustrated: The Visual Guide to NumPy
- Pandas Illustrated: The Definitive Visual Guide to Pandas
- Think Python, 3rd Edition
- NumPy Illustrated: The Visual Guide to NumPy
- NumPy Illustrated: The Visual Guide to NumPy
- Pandas Illustrated: The Definitive Visual Guide to Pandas
- NumPy Illustrated: The Visual Guide to NumPy
- Pandas Illustrated: The Definitive Visual Guide to Pandas
- NumPy Illustrated: The Visual Guide to NumPy
- Pandas Illustrated: The Definitive Visual Guide to Pandas
- NumPy Illustrated: The Visual Guide to NumPy
- How Python Asyncio Works: Recreating it from Scratch
- Modern Good Practices for Python Development
- 30 Days Of Python
- Scientific Visualization: Python + Matplotlib
- Computational Discovery on Jupyter
- Data Structures and Information Retrieval in Python
- From Python to Numpy
- How to Think Like a Computer Scientist: Interactive Edition
- Introduction to Computer Programming with Python
- Introduction to Python Programming
- Invent With Python
- Audio, Video, and Webcams in Python (Lost Chapter from Automate the Boring Stuff)
- Automate the Boring Stuff with Python
- Beyond the Basic Stuff with Python
- Cracking Codes with Python
- Invent Your Own Computer Games with Python
- Making Games with Python & Pygame
- Python Programming Exercises, Gently Explained
- Scratch 3 Programming Playground
- The Big Book of Small Python Projects
- The Recursive Book of Recursion
- Learn Python the Right Way
- NumPy Illustrated: The Visual Guide to NumPy
- Pandas Illustrated: The Definitive Visual Guide to Pandas
- Planet Python
- Python & OpenGL for Scientific Visualization
- Python Asyncio: The Complete Guide
- Python Courses
- Python Data Science Handbook
- Python Design Patterns
- Python for Data Analysis, 3rd edition
- Python Programming for Economics and Finance
- The Ultimate Guide to Error Handling in Python
- Think Python, 2nd Edition
- Wicked Python trickery - dynamically patch a Python function's source code at runtime
-
Prolog
-
D
-
C
- Writing a Simple Garbage Collector in C
- Coroutines in C
- Compiler Options Hardening Guide for C and C++
- Demystifying bitwise operations, a gentle C tutorial
- Object-Oriented Programming with ANSI-C - Tobias Schreiner* **[pdf]**
- So You Think You Know C?
- Implementing smart pointers for the C programming language
- How to implement a hash table (in C)
- Hacktical C: A practical hacker's guide to the C programming language
- Extreme C
- Few lesser known tricks, quirks and features of C
- Hacking Coroutines into C
- How to implement a hash table (in C)
- I Write Type Safe Generic Data Structures in C
- Modern C
- The C Book
- The Lost Art of Structure Packing
-
Go
- REST Servers in Go
- Network Programming with Go
- A comprehensive guide to go generate
- Accessing PostgreSQL databases in Go
- Embedding in Go
- Generic functions on slices with Go type parameters
- Go internals: invariance and memory layout of slices
- Higher-order functions in Go
- Memory Allocation in Go
- Notes on running Go in the browser with WebAssembly
- Practical Go Lessons
- Ranging over functions in Go 1.23
- The Y combinator in Go with generics
- Go HTTPS servers with TLS
- Go socket servers with TLS
-
Regular expressions
-
Simulations
-
Assembly
- A fundamental introduction to x86 assembly programming
- Part 0 - Setup and First Steps
- Part 1 - Metaprogramming in Flat Assembler
- Part 2 - We're Writing a Virtual Machine
- Part 3 - Arithmetic and Logic
- RISC-V Assembly Programming
- x86-64 Assembly Language Programming with Ubuntu
- Learn x86-64 assembly by writing a GUI from scratch
- Part 1: Hello
- FFmpeg School of Assembly Language
- An interactive guide to x86-64 assembly
- Easy RISC-V
- Learn Assembly Language - NASM x86 assembly language tutorial on Linux.
- Programming from the Ground Up
- Part 4 - More About Jumps Than You Wanted To Know
- NASM Tutorial
- PC Assembly Language
- RISC-V Assembly Programming
- The Art of Assembly Language
- Understanding Windows x64 Assembly
- x86-64 Assembly Language Programming with Ubuntu
-
Basic
-
Haskell
-
Java
-
JavaScript
-
Oberon-2
-
Pascal
-
PostScript
-
Pyret
-
Rust
- A Gentle Introduction to Rust
- Beginner's guide to Error Handling in Rust
- Effective Rust
- Exploring ways to make async Rust easier
- Learning Async Rust With Entirely Too Many Web Servers
- Rust Atomics and Locks: Low-Level Concurrency in Practice
- Things you can’t do in Rust (and what to do instead)
- 100 Exercises To Learn Rust
- Async Rust in Three Parts
- Asynchronous Programming in Rust
- Beginner's guide to Error Handling in Rust
- C++ to Rust Phrasebook
- Clear explanation of Rust’s module system
- Comprehensive Rust
- Dependency Injection like Bevy Engine from Scratch
- Effective Rust
- Exploring ways to make async Rust easier
- Learning Async Rust With Entirely Too Many Web Servers
- No-Panic Rust: A Nice Technique for Systems Programming
- Rust Atomics and Locks: Low-Level Concurrency in Practice
- Rust data structures with circular references
- Rust Language Cheat Sheet
- Testing multiple implementations of a trait in Rust
- Things you can’t do in Rust (and what to do instead)
-
Smalltalk
- Smalltalk Resources - A list of free smalltalk books.
- Smalltalk Resources - A list of free smalltalk books.
-
Forth
-
Odin
-
Bash
-
Operating Systems Development
-
C# <span id="c-sharp">
-
CMake
-
Cuda
-
Datalog
-
Erlang
-
Jai
-
Lean
-
R
- Big Book of R
- Efficient R Programming
- R for Data Science (2e) - Rundel*, *Garrett Grolemund*
-
Ruby
-
Ya
-
Zig
-
-
Computer Graphics
-
Shaders
- The Book of Shaders
- Part 1
- Part 2
- Part 3
- Part I: The blob
- Mesh Shaders on RDNA™ Graphics Cards
- Mesh Shaders on RDNA™ Graphics Cards
- Introducing GPU Reshape - shader instrumentation for everyone
- 3D Game Shaders For Beginners
- Shaders For People Who Don't Know How To Shader
- Part 1
- Part 2
- Part 3
- GM Shaders - All about shaders for GameMaker!
- Introducing GPU Reshape - shader instrumentation for everyone
- Introduction to Shaders
- Learn Shader Programming with Rick and Morty
- Mesh Shaders on RDNA™ Graphics Cards
- No More Shading Languages: Compiling C++ to Vulkan Shaders
- On Crafting Painterly Shaders
- Post-Processing Shaders as a Creative Medium
- Shader Tutorials by Ronja
- The Best Darn Grid Shader (Yet)
-
Linux command line
- WebGL2 Fundamentals
- 3D Math Primer for Graphics and Game Development
- GPU Gems
- GPU Gems 2
- GPU Gems 3
- A Gentle Introduction to D3D12
- Computer Graphics from Scratch
- GPU Performance for Game Artists
- Let's Make a Voxel Engine
- Lode's Computer Graphics Tutorial
- Marching Cubes, Explained Using Marching Squares
- Part 1
- Part 2
- Part 1
- Part 2
- RasterTek toturials
- Part 1 - The Plan
- Part 2 - Visibility buffer
- Part 3 - Cluster rendering
- Part 4 - LOD generation
- Part 5 - A basic material pass
- Part 6 - LOD generation - faster, better, simpler
- Part 7 - Runtime LOD selection
- Part 8 - Mesh shader time
- Physically Based Rendering in Filament
- Crash Course in BRDF Implementation
- GPU Work Graphs mesh nodes in Microsoft DirectX® 12
-
Ray Tracing
- Physically Based Rendering: From Theory To Implementation
- A raycasting engine in 7 easy steps
- Getting Started With DirectX Raytracing
- How to build a BVH
- Part 1
- Part 2
- Ray-Casting Tutorial For Game Development And Other Purposes
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Demystifying multiple importance sampling
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing with Voxels in C++
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Amanatides and Woo's fast Voxel Traversal
- How to build a BVH
- Ray Tracing Gems - Möller*
- Ray Tracing Gems II
- Ray Tracing with Voxels in C++
- Raymarching explained interactively
-
OpenGL
-
Vulkan
- 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 Raytracing Tutorials
- How I learned Vulkan and wrote a small game engine with it
- A Vulkan introduction
- How I learned Vulkan and wrote a small game engine with it
- NVIDIA Vulkan Ray Tracing Tutorial - Karl Lefrançois*, *Pascal Gautron*, *Nia Bickford*, *David Akeley*
- Vulkan Raytracing Tutorials
- Vulkan Tutorial
- Vulkan Tutorial (Rust)
-
Curves and Surfaces
-
Demoscene
-
WebGPU
-
Image Processing
-
DirectX 12
-
Metal
-
Programming <span id="programming-competitions">
- A fast and precise triangle rasterizer
- A trip through the Graphics Pipeline
- Part 1
- Part 2: Performance
- Blocky Planet — Making Minecraft Spherical
- Part 1: Naive GI: A Foundation
- Part 2: Radiance Cascades
- Collection of AMD Research Publications
- FrostKiwi's Secrets
- AAA - Analytical Anti-Aliasing
- How to (and how not to) fix color banding
- How video games use LUTs and how you can too
- Video Game Blurs (and how the best one works)
- Fundamentals of Radiance Cascades
- Noise is Beautiful: Part 1: Procedural textures
- Part 1: Procedural textures
- Part 2: Noise is beautiful
- Radiometry: Overview
- Rotations with quaternions
- GPU Performance for Game Artists
- GPU Programming Primitives for Computer Graphics - Chen Kao*
- Implementing a tiny CPU rasterizer
- Implementing Order-Independent Transparency
- Learn Computer Graphics From Scratch
- Lode's Computer Graphics Tutorial
- Matrix Compendium - The main purpose of this article is to gather information in the field of transformation in computer graphics and put it in one place.
- Ocean Rendering, Part 1 - Simulation
- Optimizing Software Occlusion Culling
- Part 1
- Part 2
- Part 3
- Part 1
- Part 2
- Physically based rendering from first principles
- Physically Based Shading in Theory and Practice
- Part 1
- Part 2
- Rasterising a triangle
- Part 9 - Raytracing
- Software rasterizing hair
- Texture-less Text Rendering
- The Geometry Behind Normal Maps
- Voxel Engine in a Weekend
-
Creative Coding
-
-
Math
-
Algebra
- Immersive Linear Algebra - Möller*
- Algebra: An Elementary Text-Book
- Intermediate Algebra
- Linear Algebra Done Wrong
- Linear Algebra
- Abstract Algebra - Tong Siu*, notes by *Dongryul Kim* **[pdf]**
- Advanced Modern Algebra
- Algebra: An Elementary Text-Book
- Algebraic Combinatorics
- Introduction to Abstract Algebra
- Learn you Galois Fields for Great Good
- Lectures on Abstract Algebra
- The Rising Sea: Foundations Of Algebraic Geometry Notes
- Graphical Linear Algebra
- Interactive Linear Algebra
- Introduction to Applied Linear Algebra – Vectors, Matrices, and Least Squares
- Linear Algebra, Fourth edition
- Linear Algebra Done Right
- Linear Algebra for Computer Science
- Linear Algebra Lecture Notes by Terence Tao
- Notes for Computational Linear Algebra
- Numerical Linear Algebra
- The Little Book of Linear Algebra - Tam Nguyen*
-
Theoretical Computer Science
- Notation as a Tool of Thought
- Notes on Discrete Mathematics
- Analytic Combinatorics
- Mathematics for Computer Science
- Foundations of Computer Science
- Busy Beavers! - An interactive intro to Computability Theory
- Elements of Programming
- Mathematics and Computation
- Foundations of Computer Science
- An Introduction to Abstract Mathematics
- Busy Beavers! - An interactive intro to Computability Theory
- Computational Complexity: A Modern Approach
- Discrete Mathematical Modeling
- Discrete Mathematics
- Discrete Mathematics: An Open Introduction, 4th Edition
- Discrete Mathematics and Its Applications, Eighth Edition
- Edsger W. Dijkstra Archive
- Elements of Programming
- Great Ideas in Theoretical Computer Science
- Introduction to Theoretical Computer Science
- Introduction to University Mathematics
- Mathematical Foundations of Computing
- Mathematical Techniques for Algorithm Analysis
- Mathematical Techniques for Computer Science
- Mathematics for Computer Science
- Mathematics for Computer Science
- Notes on Computational Complexity Theory
- Type Theory & Functional Programming
- What Can Be Computed?: A Practical Guide to the Theory of Computation
-
Game Engines
- A Programmer's Introduction to Mathematics
- 3Blue1Brown lessons
- Everything You Always Wanted To Know About Mathematics
- A Gentle Introduction to Tensors
- An Infinite Descent into Pure Mathematics
- An Infinitely Large Napkin
- An introduction to graph theory
- Books by *Dr. Kenneth Kuttler*
- Euclid's Elements
- Introduction to Homotopy Type Theory
- Paul's Online Math Notes
- The Princeton Companion to Mathematics - editor* **[pdf]**
- A Gentle Introduction to the Art of Mathematics
- Approved Textbooks
- An animated introduction to Fourier Series
-
SIMD programming
- Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning
- Algebraic Number Theory
- Group Theory
- Fields and Galois Theory
- Lie algebras
- Semi-Riemann Geometry and General Relativity
- Algebraic Geometry
- Theory of functions of a real variable
- Mathematical Biology
- Category theory
- A Gentle Introduction to the Art of Mathematics
- An Infinite Descent into Pure Mathematics
- An Introduction to Tensors for Students of Physics and Engineering
- Approved Textbooks
- Books and papers by *Professor Dimitry P. Bertsekas*
- Books of Shlomo Sternberg
- Advanced Calcululs
- Dynamical Systems
- Semi-classical analysis
- Courses and lecture notes by Jeffrey Robert Chasnov
- Applied Linear Algebra and Differential Equations
- Calculus for Engineers
- Differential Equations for Engineers
- Differential Equations: Review with YouTube Examples
- Differential Equations
- Fibonacci Numbers and the Golden Ratio
- Flow Around a Cylinder
- Matrix Algebra for Engineers
- Numerical Methods for Engineers
- Numerical Methods
- Scientific Computing
- Vector Calculus for Engineers
- Cournse Notes and Books by Curtis T. McMullen
- Complex Dynamics and Renormalization
- Renormalization and 3-Manifolds which Fiber over the Circle
- Advanced Complex Analysis
- Advanced Real Analysis
- Algebra and Dynamics
- Complex Analysis on Riemann Surfaces
- Ergodic theory, geometry and dynamics
- From Conformal Invariants to Percolation
- Probability Theory
- Real Analysis
- Riemann surfaces, dynamics and geometry
- Sets, Groups and Knots
- Topology
- Course notes by J.S. Milne
- Abelian Varieties
- Class Field Theory
- Complex Multiplication
- Lectures on Etale Cohomology
- Lie Algebras, Algebraic Groups, and Lie Groups
- Modular Functions and Modular Forms
- Reductive Groups
- Course notes by Kenneth R. Davidson
- Measure Theory
- Nest Algebras
- Real Analysis
- Rigorous Calculus
- Course notes by Rajen Shah
- Mathematics of Machine Learning
- Modern Statistical Methods
- Principles of Statistics
- Statistical Modelling
- Course Notes by Richard Weber
- Markov Chains
- Mathematics of Operational Research
- Optimization
- Optimization and Control
- Probability
- Statistics
- Time Series
- Course notes by Tom Leinster
- Fourier analysis
- Galois theory
- General topology
- Linear algebra
- Foundations of Mathematics
- How do undergraduates do mathematics?
- Intermediate Calculus and Linear Algebra
- Introduction to Applied Mathematics
- Introduction to Stochastic Calculus - Ha*
- Lecuture Notes by Aditya Guntuboyina
- Analysis of Time Series
- Introduction to Probability at an advanced level
- Theoretical Statistics
- Lecture Notes by Ian Tice
- A crash course in complex analysis
- A crash course in interpolation theory
- Derivation of the fluid equations
- Fluid-solid interaction
- From Stokes flow to Darcy's law
- Gamma-convergence of the Ginzburg-Landau energy
- Linear constant coefficient ordinary differential systems
- Monstrous Functions
- Quasilinear symmetric hyperbolic systems
- Calculus 1
- Complex Analysis with Applications
- Functional Analysis
- Measure Theory
- Topics in Mathematical Physics
- Homeworks and other courses materials
- Lecture Notes by John K. Hunter
- Applied Analysis
- Applied Mathematics
- Asymptotics
- Introduction to Analysis
- Measure Theory
- Partial Differential Equations
- Lecture Notes by Omer Tamuz
- General Equilibrium Theory
- Graduate Real Analysis
- Multivariate Calculus
- Probability: Random Walks
- Probability
- The Value and Cost of Information
- Undergraduate Game Theory
- Lecture Notes by Seongjai Kim
- Calculus Lectures
- Fundamentals of Numerical Linear Algebra
- Heterogeneity in Computational Environments
- Linear Algebra with Applications
- Mathematical Foundations of Machine Learning
- Numerical Analysis and Applications with Music
- Numerical Methods for Partial Differential Equations
- Programming Basics and AI with Matlab and Python
- Math Alive - lecture notes on:
- Math Planet
- Mathematical Methods for Computer Vision, Robotics, and Graphics
- Mathematical Methods for Physics
- Problem sheets and solutions
- Mathematics for the Physical Sciences
- Menthal Math Tricks
- Notes on Mathematics For Engineers
- Open Mathematics Depository
- Open textbooks for undergraduate mathematics
- Precalculus
- Real Not Complex - Discover Incredible FREE Resources to Study MathemF comilatics.
- Street-Fighting Mathematics - Course teaches the art of guessing results and solving problems without doing a proof or an exact calculation by *Sanjoy Mahajan*
- Teaching notes by Oliver Knill
- Differential Geometry
- Introduction to Calculus
- Linear Algebra And Vector Calculus
- Linear Algebra And Vector Calculus I
- Linear Algebra And Vector Calculus II
- Multivariable Calculus
- Probability Theory
- Teaching Mathematics with a Historical Perspective
- Texts, exercises, problems and lecture notes by John Erdman
- Exercises and Problems in Calculus
- A ProblemText in Advanced Calculus
- Exercises and Problems in Linear Algebra
- Companion to Real Analysis
- Functional Analysis and Operator Algebras: An Introduction
- The Lost Art of Logarithms
- The Mathematics in Toys and Games
- The Matrix Cookbook
- The Tensor Cookbook
- Trigonometry
- Visual Complex Analysis
-
Calculus
- Calculus Made Easy
- Introduction to Calculus
- Calculus Made Easy
- Advanced Multivariable Calculus
- Calculus
- Calculus 1 for Honours Mathematics
- Calculus with Julia
- CLP Calculus Textbooks
- Complex Analysis
- Problems and Solutions
- Derivatives, Gradients, Jacobians and Hessians
- Elementary Calculus
- Harmonic Function Theory
- Integration Theory
- Multivariable Calculus Lectures
- Principles of Mathematical Analysis
- Real Analysis
- Lectures on Vector Calculus
- Vector and Complex Calculus for the Physical Sciences
- Vector Calculus
- Vector Calculus
- Vector Calculus
-
Measure Theory
-
Probability and Statistics
- Stochastic Processes
- Probability and Statistics Cookbook
- Bayes Rules! An Introduction to Applied Bayesian Modeling
- Digital textbook on probability and statistics
- Introduction to Probability for Data Science
- Introduction to Modern Statistics (2nd Ed) - Rundel and Johanna Hardin*
- Probability 101, the intuition behind martingales and solving problems with them
- Statistics Handbook
- Advanced Data Analysis from an Elementary Point of View
- Advanced Probability - Nielsen* **[pdf]**
- All of Statistics: A concise Course in Statistical Inference
- AnyDice
- Bayesian Data Analysis, Third Edition
- Digital textbook on probability and statistics
- Elementary Probability for Applications
- Fundamentals of Probability
- High-Dimensional Probability: An Introduction with Applications in Data Science
- High-Dimensional Statistics - Christian Hütter*
- Introduction to Modern Statistics (2nd Ed) - Rundel and Johanna Hardin*
- Lecture Notes on Probability
- Lecture Notes on Probability Statistics and Linear Algebra
- Markov Chains for programmers
- Modern Discrete Probability: An Essential Toolkit
- Notes on Counting and Rapidly Mixing Markov Chains
- Notes on Probability
- One Thousand Exercises in Probability
- OpenIntro Statistics, Fourth Edition - Rundel*, and *Christopher D Barr* **[pdf]**
- Probability and Statistics: The Science of Uncertainty, Second Edition
- Probability and Statistics for Data Science - Granda* **[pdf]**
- Probability for Computer Scientists
- Probability for Computer Scientists
- Probability in High Dimension
- Probability in High Dimensions
- Probability Theory
- Other course materials
- Probability Theory & Computational Mathematics
- Probability with Engineering Applications
- Probability: Theory and Examples
- Seeing Theory - a book about statistics with interactive visualizations by *Daniel Kunin, Jingru Guo, Tyler Dae Devlin, and Daniel Xiang*
- Statistical Inference, Second Edition
- The Truth About Linear Regression
-
Category Theory
- Category Theory for Programming
- Category Theory: Lecture Notes and Online Books - collection by *Peter Smith*
- Seven Sketches in Compositionality: An Invitation to Applied Category Theory
- Category Theory for Programmers
- Category Theory Illustrated
- Category Theory in Programming
- Pragmatic Category Theory
- Seven Sketches in Compositionality: An Invitation to Applied Category Theory
-
Topology
-
Geometry
- Planes in 3D space
- Euclidean and Non-Euclidean Geometries: Development and History
- Geometry: Euclid and Beyond
- The Foundations of Geometry
- The Four Pillars of Geometry
- Differential Geometry: A First Course in Curves and Surfaces
- Functional Differential Geometry
- Introduction to Smooth Manifolds
- Lecture Notes on Differential Geometry
- Manifolds and Differential Forms
- Open Problems In Geometry Of Curves And Surfaces
- What is differential geometry: curves and surfaces
-
Differential Equations
-
Game Theory
-
General problem solving
-
Graph Theory
-
Mathematical Finance
-
Mathematical Logic
-
Number theory
-
Operations Research
-
Proofs
-
-
Operating Systems
-
Topology
- Operating Systems: Three Easy Pieces - Dusseau* and *Andrea C Arpaci-Dusseau*
- Making our own executable packer
- Linux Insides
- A Journey in Creating an Operating System Kernel
- Systems Programming: Lecture Notes
- The Art of Unix Programming
- Unix as IDE
- Writing an OS in Nim
- Advanced Linux Programming
- A Commentary On The Sixth Edition Unix Operating System
- Exploring Operating Systems
- How to write Rust in the kernel
- Part 1
- Part 2
- Part 3
- My Own Private Binary: An Idiosyncratic Introduction to Linux Kernel Modules
- Notes on Operating Systems
- Systems Programming: Lecture Notes
- The Art of Unix Programming
- The Linux Documentation Project
- The Linux Kernel Module Programming Guide
- The UNIX-HATERS Handbook
- Unix as IDE
-
Operating Systems Development
- Writing a Simple Operating System — from Scratch
- OSDev.org
- Part 1 - Project Setup
- Part 2 - Kernel in virtual addresses
- Part 3 - Managing free memory
- Operating System development tutorials in Rust on the Raspberry Pi
- Operating System in 1,000 Lines
- A Journey in Creating an Operating System Kernel
- Baking Pi – Operating Systems Development
- Making a RISC-V Operating System using Rust
- Operating Systems: From 0 to 1
- The little book about OS development
- Writing a Simple Operating System — from Scratch
- Writing an OS in Nim
-
-
Algorithms
-
Computer Games AI
- Algorithms
- Competitive Programming Algorithms
- Competitive Programmer's Handbook
- Principles of Algorithmic Problem Solving
- Foundations of Data Science
- Algorithms and Data Structures
- Algorithms for Optimization
- The Arcane Algorithm Archive
- Exact String Matching Algorithms
- How does B-tree make your queries fast?
- Introduction to Algorithms: A Creative Approach
- Planning Algorithms
- Purely Functional Data Structures
- Sequential and Parallel Data Structures and Algorithms: The Basic Toolbox
- Collision Detection
- Data Structures for Data-Intensive Applications: Tradeoffs and Design Guidelines
- Monte-Carlo Graph Search from First Principles
-
Vibe Coding and Spec-Driven Development
- Notes on Randomized Algorithms
- Algorithmic Game Theory
- Introduction to Multi-Armed Bandits
- Problem Solving with Algorithms and Data Structures using Python
- Clever Algorithms: Nature-Inspired Programming Recipes
- A First Course on Data Structures in Python
- Advanced Algorithms
- Advanced Algorithms
- Advanced Algorithms
- Advanced Algorithm Design
- Advanced Algorithm Design
- Advanced Data Structures
- Algorithms - Peled* **[pdf]**
- Algorithms, 4th Edition
- Algorithms Books
- Algorithms for Optimization
- Algorithms for Decision Making
- Algorithms for Validation
- Algorithms Design (in C)
- Algorithms for Inference
- Algorithms for Massive Data
- Algorithms in C
- An Open Guide to Data Structures and Algorithms
- Approximation Algorithms
- Book of All-pairs Shortest Paths
- Collision Detection
- Data Structure Visualizations
- Data Structures & Algorithm Analysis
- Data Structures & Algorithms in C++, Second Edition
- Design and Analysis of Algorithms
- Essential Coding Theory
- Exact String Matching Algorithms
- Kalman Filter from the Ground Up
- Lecture Notes on Quantum Algorithms
- Let's build a Full-Text Search engine
- Matters Computational: Ideas, Algorithms, Source Code
- Notes on Algorithms
- Notes on Data Structures and Programming Techniques
- Planning Algorithms
- The Skyline algorithm for packing 2D rectangles
- Think Data Structures
- Tim Roughgarden's Courses and Lecture Notes
-
Diff Algorithms
-
Bloom Filters
-
-
Personal Websites and Blogs
-
C++ <span id="cpp-blogs">
- null program
- Just Software Solutions' Blog
- Alf on programming (mostly C++)
- Andrzej's C++ Blog
- Asymmetric Transfer
- Bannalia: trivial notes on themes diverse
- Barry's C++ Blog
- Borislav Stanimirov's Website
- Braden Ganetsky's Website
- C++ Metaprogramming
- C++ on a Friday
- C++ Stories
- C++ Truths
- Crascit's Blog
- Cristian Adam's Blog
- Eric Niebler's Blog
- Fluent C++
- foonathan::blog()
- Functional C++
- Lu's blog
- Manu Sanchez's Blog
- Marshall's C++ Musings
- Modernes C++
- Molecular Musings
- Moody Camel
- Nibble Stew's Blog
- Peter Dimov'a Blog
- Preshing on Programming
- Programming Nonsense
- ReachableCode
- Sandor Dargo's Blog
- Simplify C++
- The Old New Thing: Practical development throughout the evolution of Windows
- The Sparkelling Bedangler
- Thinking Asynchronously in C++
- vector-of-bool
- Victor Zverovich's Blog
- Video Cortex
- Vishal Chovatiya's Blog
- Vittorio Romeo's Blog
- Vorbrodt's C++ Blog
-
Mixed Programming <span id="mixed-programming-blogs">
- Understandable RayTracing in 256 lines of bare C++
- Tiny renderer or how OpenGL works: software rendering in 500 lines of code
- KABOOM! in 180 lines of bare C++
- Least squares for programmers
- Austin Z. Henley's Blog
- 0pfs
- A Random Walk Through Geek-Space
- Aaro Luomanen's Blog
- Alberto Ventafridda's Blog
- Amit's Thoughts
- Andreas Herrmann's Blog
- Andrew Gallant's Blog
- Andrew Healey's Blog
- Andrey Listopadov's Blog
- Anton Zhiyanov's Blog
- Arjun Sreedharan's Blog
- Artem Krylysov's Blog
- Bartosz Milewski's Programming Cafe
- Beej's Home Page
- Bradley Chatha's D Blog
- Chris Loy's Blog
- Chris Penner's Blog
- Chris Warbo's Blog
- Chuniversiteit
- Considerations on Codecrafting
- Dan Hollick's Blog
- Daniel Fedorin's Blog
- Daniel Hooper's Blog
- Daniel Lemire's Blog
- Dayvi Schuster's Blog
- Digital Grove
- Dissecting the Code
- Edoardo Putti's Blog
- Educated Guesswork
- Eli Bendersky's website
- Entropic Thoughts
- Evan Ovadia's Blog
- Fernando Borretti's Website
- Francesco Mazzoli's Blog
- Games by Mason
- Gerneral Protection Fault
- Giles' blog
- glfmn.io
- Interjected Future
- IT Hare on Soft.ware
- James Oswald's Blog
- Jan Wedekind's Blog
- Jamie Brandon's Blog
- Jari Komppa's Website
- Jaz's Blog
- Jens Gustedt's Blog
- Joe Mckay's Blog
- Jonathan Marler's Blog
- Julia Evans
- Karl Seguin's Blog
- Karl Zylinski'a Website
- KC Sivaramakrishnan's Blog
- Lei Xia's Blog
- Loris Cro's Personal Website
- Mario's Lab
- Martin Uecker's Blog
- MALTSEV.SPACE
- mcyoung
- Melatoni's Blog
- Mikael Zayenz Lagerkvist's Personal Website
- MonoidMusicianʼs Blog
- Nicholas Nethercote's Blog
- Nicolas Rinaudo's Blog
- Niko Matsakis's Blog
- NULL BITMAP
- NULL on error - Flipping bits whilst updating pixels by *Rodrigo Delduca*
- Omar Aflak's Blog
- Owen Shepherd's Blog
- Paul Smith's Blog
- Phil Eaton's Website
- Playing with code
- TinyRenderer: Software rendering in 500 lines of bare C++
- TinyCompiler: a compiler in a week-end
- TinyOptimizer: an optimizing compiler challenge
- Cursed fire or #define black magic
- author's GitHub
- Probably Dance
- protty
- purplesyringa
- Racey Chan's Blog
- Rahman Sibahi's Blog
- Rahul Gopinath's Blog
- RasterGrid
- Reasonably Polymorphic
- Sam Rose's Blog
- Serge Skoredin's Blog
- Squadrick
- Stephen Diehl's Blog
- stuffwithstuff
- Syed Jafar Naqvi's Blog
- The If Works
- Theia Vogel's Blog
- Thomas Leonard's blog
- Vectorized
- Vladimir Makarov's Blog
- xnacly - blog
- Zaid Humayun's Blog
-
Math and Physics <span id="math-and-physics-blogs">
-
AI <span id="ai-blogs">
-
Game and Graphics Programming <span id="game-and-graphics-programming-blogs">
- 30fps.net: Computer Graphics & Programming with Pekka Väänänen
- A small freedom area
- Adam Sawicki's Blog
- Alan Zucconi's Website - Game Development, Shader Coding & Artificial Intelligence.
- Anton Schreiner's Blog
- Aras Pranckevičius's Website
- Bits, pixels, cycles and more
- Bumbershoot Software Blog
- c0de517e's weblore
- Chema Guerra's Blog
- Cyanilux Game Dev Blog & Tutorials
- DirectX Developer Blog
- Eric Arnebäck's Blog
- Eurographics Digital Library
- Evolve Benchmark
- Fabien Sanglard's Website
- Forward Scattering
- Frozen Fractal
- Graphics Programming weekly
- Ignacio Castaño's Blog
- imad's website
- Interplay of Light
- Irradiance Blog
- Jacco Bikker's Blog
- Jason Mcghee's Blog
- JMS55's Blog
- John Novak's Website
- lisyarus blog
- Martin Fuller's Graphics Ramblings
- Maister's Graphics Adventures - Kristian Arntzen*
- Matt Pharr’s blog
- Max Slater's Blog: Computer Graphics, Programming, and Math
- Maxime Heckel's Blog
- Moments in Graphics
- Nikolaos Papadopoulos' Blog
- Of Shaders & Triangles
- Pikuma's Blog
- Randy Gaul's Game Programming Blog
- RayLib Help
- Red Blob Games - Interactive visual explanations of math and algorithms, using motivating examples from computer games by *Amit Patel*
- Rendering Engine Architecture Conference - A conference about the craft of real-time rendering systems.
- Rubén Osorio's Blog
- Self Shadow
- Stephen Sherratt's Blog
- The Brain Dump
- The Code Corsair
- The Danger Zone
- The Journal of Computer Graphics Techniques
- The ryg blog
- wassimulato
- hexaquo
- Zero Radiance
-
Performance and Optimization <span id="performance-and-optimization-blogs">
-
Web Development <span id="web-development-blogs">
- nullpt-rs blog
- Hugo Daniel's Blog
- JSLegendDev’s Substack - Web development, game development and their intersection.
-
Other Blogs
-
-
Low Level Stuff
-
Game Engines
-
Lists of programming projects to try to implement
- Performance Analysis and Tunning on Modern CPUs
- A gentle introduction to two's complement
- Computer Science from the Bottom Up
- CPU performance optimization guide - Preface
- Part 1
- Floating Point Visually Explained
- Group Borrowing: Zero-Cost Memory Safety with Fewer Restrictions
- Memory Management Reference
- Pointer Tagging in C++: The Art of Packing Bits Into a Pointer
- Stack frame layout on x86-64
- Part 1: C
- Part 2: C++ and RAII
- Part 3: C++ Smart Pointers
- Part 4: Rust Ownership and Borrowing
- Part 5: Fighting with Rust
- Part 6: Basic Garbage Collection
- Part 7: Advanced Garbage Collection
- What Every Computer Scientist Should Know About Floating-Point Arithmetic
- Matrix Multiplication Optimization Article Series
- Advanced Matrix Multiplication Optimization on Modern Multi-Core Processors
- Advanced Matrix Multiplication Optimization on NVIDIA GPUs
- Matrix Core Programming on AMD CDNA3 and CDNA4 architecture
-
GPU and TPU Programming
-
SIMD programming
-
-
Other lists
-
CSS
- GPU Optimization for GameDev
- Build Your Own X
- Free Computer Books
- Free Tech Books
- Project Based Learning
- Electronic References - a loosely-categorized collection of links to CS textbooks in a variety of areas that are freely available online.
-
Other Blogs
-
-
Competitions and Interview Preparation Websites
-
Programming <span id="programming-competitions">
- Daily Programmer
- Hacker Earth
- LeetCode
- CodeChef
- Code Golf - A site for recreational programming competitions.
- Sphere Online Judge
- Rosalind - A platform for learning bioinformatics through problem solving.
- CodeForces
- Coderbyte
- CodingBat - A free site of live coding problems to build coding skill in Java and Python.
- Edabit
- Exercism
- Kaggle - ML specific.
- LabEx - Learn Linux, DevOps & Cybersecurity with Hands-on Labs.
- Learn OCaml
- Skilled.dev
- SQLPad
- takeUforward
- Top Coder
- Algorithms for Competitive Programming
- Competetive Programming
- Competitive Programming in Python: 128 Algorithms to Develop your Coding Skills - Jênn Vie*
-
Math <span id="math-competitions">
-
Physics <span id="physics-competitions">
-
-
AI
-
Machine Learning
- Speech and Language Processing, 3rd edition
- Deep Learning
- Probabilistic Machine Learning: An Introduction
- Statistical Learning Theory
- Mathematics for Machine Learning
- Concise Machine Learning
- Neural Networks: Zero to Hero - A course by *Andrej Karpathy*
- Dive into Deep Learning Compiler
- Data-Driven Science and Engineering: Machine Learning, Dynamical Systems, and Control
- Deep Learning Course
- Deep Learning: Foundations and Concepts
- Information Theory, Inference, and Learning Algorithms
- Mathematical Introduction to Deep Learning: Methods, Implementations, and Theory
- Physics-based Deep Learning
- Probabilistic Machine Learning: Advanced Topics
- The Little Book of Deep Learning
- The Principles of Deep Learning Theory
- Mathematics for Machine Learning
- Learning Theory from First Principles
- The Elements of Differentiable Programming
- Alice’s Adventures in a differentiable wonderland
- Crash Course in Deep Learning (for Computer Graphics)
- The Engineer's Guide To Deep Learning
- Applied Machine Learning for Tabular Data
- Deep Learning Interviews
- Machine Learning Engineering Open Book
- A Course in Machine Learning
- Deep Reinforcement Learning: Zero to Hero!
- Machine Learning Engineering Book
- Mathematical Foundations of Reinforcement Learning
- A Visual Guide to Quantization: Demystifying the Compression of Large Language Models
- GitHub repository
- Foundations of Large Language Models
- A Comprehensive Guide to Machine Learning
- Reinforcement Learning: An Overview
- Reinforcement Learning: An Introduction, Second Edition
- Tutorial on Diffusion Models for Imaging and Vision
- A Course in Machine Learning
- A Gentle Introduction to Graph Neural Networks - Lengeling*, *Emily Reif*, *Adam Pearce* and *Alexander B. Wiltschko*
- Algorithmic Aspects of Machine Learning
- Algorithms for Artificial Intelligence
- Alice’s Adventures in a differentiable wonderland
- An Illustrated Guide to Automatic Sparse Differentiation
- An Introduction to Statistical Learning
- Applied Machine Learning for Tabular Data
- The Hundred Page Machine Learning Book
- Machine Learning Engineering Book
- Computer Vision: Algorithms and Applications, 2nd Edition
- Data Science and Machine Learning: Mathematical and Statistical Methods
- Deep Learning Course
- Deep Learning: Foundations and Concepts
- Deep Learning on Graphs
- Deep Learning with Python, Second Edition
- Dive into Deep Learning
- Dummy's Guide to Modern LLM Sampling
- Foundations of Computer Vision
- Foundations of Machine Learning
- Harvard's undergraduate course in Machine Learning
- Introduction to Flow Matching and Diffusion Models
- Introduction to ggml
- Introduction to Machine Learning
- Introduction to Machine Learning
- Introduction to Machine Learning
- Introduction to Machine Learning Interviews
- Lecture Notes for Machine Learning and Data Science Courses Information School, University of Washington
- Lecture Notes for Machine Learning Theory
- Machine Learning Lecture Notes
- Machine Learning Systems
- Machine learning with neural networks
- Neural Networks and Deep Learning
- Notes on AutoGrad
- Patterns, Predictions, and Actions: A story about machine learning
- Probabilistic Artificial Intelligence
- The Elements of Statistical Learning
- The Engineer's Guide To Deep Learning
- The Little Book of Deep Learning
- The Most Important Machine Learning Equations: A Comprehensive Guide
- The Principles of Diffusion Models: From Origins to Advances - Hsin Lai*, *Yang Song*, *Dongjun Kim*, *Yuki Mitsufuji*, *Stefano Ermon*
- Theory of Deep Learning
- Understanding Deep Learning
- Understanding Machine Learning: From Theory to Algorithms - Shwartz* and *Shai Ben-David*
- How to Scale Your Model: A Systems View of LLMs on TPUs
- How to run LLMs on PC at home using Llama.cpp
- Google Machine Learning Education
- Linear Algebra for Computer Vision, Robotics, and Machine Learning
- Mathematical Analysis of Machine Learning Algorithms
- Mathematical Foundations of Machine Learning
- Mathematics for Artificial Intelligence Lecure Notes
- Mathematics for Inference and Machine Learning
- Mathematics of Machine Learning
- Mathematics of Machine Learning
- Mathematics of Neural Networks
- Matrix Calculus (for Machine Learning and Beyond)
- MIT course
- Optimization for Data Science
- Pen and Paper Exercises in Machine Learning
- The Matrix Calculus You Need For Deep Learning
- A Little Bit of Reinforcement Learning from Human Feedback
- Deep Reinforcement Learning
- Distributional Reinforcement Learning
- Multi-Agent Reinforcement Learning: Foundations and Modern Approaches
-
Computer Games AI
-
Vibe Coding and Spec-Driven Development
- Disciplined AI Software Development
- Basic Claude Code
- Diving Into Spec-Driven Development With GitHub Spec Kit
- How I program with Agents
- How I program with LLMs
- How I Use Every Claude Code Feature
- My LLM codegen workflow atm
- Spec-driven development with AI: Get started with a new open source toolkit
- Vibe Coding Terminal Editor
-
-
Web programming
-
Vim
- The Flask Mega-Tutorial
- Let's build a browser engine!
- A book about using Node.js
- FastCGI — The Forgotten Treasure
- Single page apps in depth
- FastCGI — The Forgotten Treasure
- What happens when you type google.com into your browser's address box and press enter?
- The Odin Project - An open-source curriculum for learning full-stack web development.
- Implementing React From Scratch
- A book about using Node.js
- A masochist’s guide to web development
- Intro to Web Dev
- Part 1
- Part 2
- Tania Rascia'a Web Development Deep Dives
- A Complete Guide to CSS Concepts and Fundamentals
- An Introduction to GraphQL
- Design for Developers: Specific Steps to Improve Your Website Design
- Everything I Know as a Software Developer Without a Degree
- How to Set up a Mac for Development
- How to Set Up webpack 5 From Scratch
- How to Structure and Organize a React Application
- How to Use React, the JavaScript Framework
- How to Use Redux and React
- How to Use Vue, the JavaScript Framework
- Setting Up Virtual Hosts
- The Event Loop, Callbacks, Promises, and Async/Await in JavaScript
- The Copenhagen Book - A general guideline on implementing auth in web applications.
- Web Browser Engineering
- WebDev - Guidance to build modern web experiences that work on any browser.
-
CSS
-
Django
-
HTML
-
-
Other
-
CSS
- Software Technical Writing: A Guidebook
- Agner Fog's Website
- Beej's Guides
- Explained from First Principles
- How These Things Work - a book about abstraction
- Rocket and Space Technology
- The Fundamentals of Control Theory
- The Scientist and Engineer's Guide to Digital Signal Processing
- Project Oberon: The Design of an Operating System, a Compiler, and a Computer
-
Other Blogs
- Explained from First Principles
- Improve Your Social Skills
- Project Oberon: The Design of an Operating System, a Compiler, and a Computer
- Rocket and Space Technology
- Teach Yourself Computer Science
- The Art of HPC
- The Art of Insight in Science and Engineering: Mastering Complexity
- The Missing Semester of Your CS Education
- Vjeux Blog
-
-
Hardware
-
Game Engines
-
Lists of programming projects to try to implement
-
-
Command Line and Tools
-
Computer Games AI
-
Linux command line
-
Curl
-
Diff Algorithms
-
Nix
- NixOS & Flakes Book - An unofficial book for beginners by *Ryan Yin*
- Wombat’s Book of Nix
-
-
Multithreading and Concurrency
-
Topology
- Is Parallel Programming Hard, And, If So, What Can You Do About It?
- A C++17 Thread Pool for High-Performance Scientific Computing
- A Science of Concurrent Programs
- Introduction to Parallel Computing Tutorial
- Lockfree Programming: A Mental Model
- A Science of Concurrent Programs
- Implementing simple cooperative threads in C
- POSIX Threads Programming
- Reading and writing - Article series on race conditions by *James Coglan*
- The Deadlock Empire
- The Little Book of Semaphores
- What every systems programmer should know about concurrency
-
-
Electronics
-
Databases
-
WebGPU
-
Databases Development
- Part 1: Listing tables
- B-trees and database indexes
- Build Your Own Database From Scratch in Go
- Part 2: Scanning large tables
- Part 3: SQL parsing 101
- Part 4: reading tables metadata
- Part 5: Evaluating queries
- Concurrency Control and Recovery in Database Systems
- Jacob's blog: On database building blocks
- A B+Tree Node Underflows: Merge or Borrow?
- Cache-Friendly B+Tree Nodes With Dynamic Fanout
- Let's Build a Simple Database
-
NoSQL
-
SQL
- Mode's SQL Tutorial
- SQL Tutorial - Master SQL quickly and effectively with clear concepts, hands-on examples, and interactive quizzes.
- SQL for the Weary
- SQLBolt - Learn SQL with simple, interactive exercises.
- SQLZap - Learn SQL with for Free.
- MySQL for Developers
- The Internals of PostgreSQL
- Oracle Tutorial
-
-
SIMD programming
-
DOS
-
Books by Fabien Sanglard
-
-
Reverse engineering
-
DOS
-
Books by Fabien Sanglard
-
ZX Spectrum and Z80 CPU
-
-
Fluids Simulation
-
Art
-
Computer Games AI
-
Diff Algorithms
-
-
Biology
-
Computer Games AI
-
Diff Algorithms
-
-
Command line and tools
-
Computer Games AI
- Driving Compilers
- Getting started with tmux
- NixOS & Flakes Book - An unofficial book for beginners by *Ryan Yin*
-
Curl
-
-
Compilers and Interpreters
-
Linux command line
- Part 1
- Part 2: Building a baseline JIT for Lua automatically
- Creating the Bolt Compiler
- How Clang Compiles a Function
- How LLVM Optimizes a Function
- Part 1
- Part 2
- Part 3
- Part 1: Introduction, selecting a language, and doing some planning
- Part 2: A lexer
- Part 3: A parser
- Part 4: Testing
- Part 5: A code generator
- Part 6: Input and output
- Part 7: Arrays
- Part 8: Strings, forward references, and conclusion
-
Programming <span id="programming-competitions">
- A Compiler Writing Journey
- A practical introduction to parsing
- Build Your Own Lisp
- Part 1
- Part 2
- Part 1
- Part 2: Building a baseline JIT for Lua automatically
- Compiler Design in C
- Compiling to Assembly from Scratch
- Crafting Interpreters
- Creating the Bolt Compiler
- Essentials of Compilation: An Incremental Approach
- Graal Truffle tutorial
- Part 1
- Part 2: Precedence and associativity in recursive descent
- Part 3: Packrat parsing: a top-down performance improvement
- Let's Build a Compiler
- Low-Level Software Security for Compiler Developers
- Make A Language - A series about making a programming language called *Eldiro* using the *Rust* programming language.
- Strategies for very fast Lexers
- Threaded code
- Writing a C compiler in 500 lines of Python
- Writing a C Compiler, in Zig
-
-
Computer Networks and Network Programming
-
WebGPU
- HTTP/3 explained
- Networking 101
- Concurrent Servers
- Computer Network Tutorials
- Mediocre Engineer’s guide to HTTPS
- Computer Network Tutorials
- A comprehensive guide for Linux Network (Socket) programming
- An Introduction to Computer Networks
- Computer Networks: A Systems Approach
- HTTP2 Explained
- HTTP/3 explained
- Implementing fast TCP fingerprinting with eBPF
- Implementing TCP In Rust
- Part 1: Ethernet & ARP
- Part 2: IPv4 & ICMPv4
- Part 3: TCP Basics & Handshake
- Part 4: TCP Data Flow & Socket API
- Part 5: TCP Retransmission
- Networking 101
- Visual guide to SSH tunneling and port forwarding
-
-
Cryptography
-
Debuggers
-
WebGPU
- How Does a C Debugger Work?
- Part 1 - Attaching to a Process
- Part 2 - Register State and Stepping
- Part 3 - Reading Memory
- Part 4 - Exports and Private Symbols
- Part 5 - Breakpoints
- Part 6 - Stacks
- Part 7 - Disassembly
- Part 8 - Source and Symbols
- Debugging with GDB
- How Does a C Debugger Work?
- Writing a Linux Debugger
- Part 1 - Attaching to a Process
- Part 2 - Register State and Stepping
- Part 3 - Reading Memory
- Part 4 - Exports and Private Symbols
- Part 5 - Breakpoints
- Part 6 - Stacks
- Part 7 - Disassembly
- Part 8 - Source and Symbols
-
-
Design Patterns
-
WebGPU
-
SQL
- Building abstractions using higher-order functions
- Data Engineering Design Patterns (DEDP)
- Data-Oriented Design
- Design Patterns & Refactoring
- Decorators and Functional programming
- Design Patterns You Should Unlearn in Python: Part1
- Design Patterns You Should Unlearn in Python: Part2
- Most Design Patterns Are Just Dependency Injection in Disguise
- Part 1
- Part 2
- Part 3
- The expression problem and Rust
- From design patterns to category theory
- Game Programming Patterns
- Indices, not Pointers
- Multiple Dispatch Series
- Plugins Series
-
-
Distributed systems
-
WebGPU
-
SQL
- Distributed systems for fun and profit
- Implementing Raft
- Linearizability in distributed systems
- Notes on Theory of Distributed Systems
- Patterns of Distributed Systems
- Principles of Blockchains
- Rewriting Kafka in Rust Async: Insights and Lessons Learned in Rust
- Testing Distributed Systems - Curated list of resources on testing distributed systems by *Andrey Satarin*.
-
-
Emulators and Virtual Machines
-
WebGPU
-
SQL
-
-
Game Programming
-
WebGPU
-
Game Engines
-
SQL
- Retro Rampage - A tutorial series in which you will learn how to build a Wolfenstein-like game from scratch, in Swift by *Nick Lockwood*
- CSCI 181G PO: Game Engine Programming Course
- Game Engineering
- How to program a text adventure in C
- Isometric Projection in Game Development
- Isometric Tutorials
- Procedural Content Generation in Games
- Part 1
- Part 2
- Part 3
- Part 4
- Part 5
- Part 6
- Programming Vehicles in Games
- Roguelike Tutorial - In Rust
- Terrain programmig
- The guide to implementing 2D platformers
- A First-Person Game in 2KB
-
Game Physics
- 2D Cloth Simulation in Odin with raylib
- iforce2d - A collection of programming resources, mainly focusing on 2D games development with Box2D.
- Ten Minute Physics
-
-
GUI Programming
-
Game Engines
-
Lists of programming projects to try to implement
-
-
Logical Games
-
Game Engines
-
Lists of programming projects to try to implement
-
-
Photography
-
Topology
-
Operating Systems Development
-
-
Physics
-
Topology
- Motion Mountain - A free physics textbook
- Physics for Mathematicians
- Relativity: A Modern Primer
-
Simulations
-
Operating Systems Development
- An Intuitive Guide to Maxwell’s Equations
- Structure and Interpretation of Classical Mechanics
- Quantum Mechanics
- A free introduction to quantum computing and quantum mechanics
- An introduction to Lagrangian and Hamiltonian mechanics
- Applications of Classical Physics
- IBM Quantum Learning - Learn the basics of quantum computing.
- Introduction to Special Relativity, Quantum Mechanics and Nuclear Physics for Nuclear Engineers
- Motion Mountain - A free physics textbook in 5 volumes.
- Open textbooks for undergraduate physics
- Orbital Mechanics
- Percolation Theory
- Physics for Mathematicians
- Quantum Computation Lecture Notes
- Quantum Mechanics for Engineers
- Relativity: A Modern Primer
- Structure and Interpretation of Classical Mechanics
- The Feynman Lectures on Physics
- Physics-Based Simulation
-
-
Robotics
-
Books by Fabien Sanglard
-
DOS
-
ZX Spectrum and Z80 CPU
-
-
Text editors
-
Books by Fabien Sanglard
-
DOS
-
Emacs
- Part 1: Foundations
- Part 2: Projects and Keybindings
- How to learn Emacs
- Use GNU Emacs: The Plain Text Computing Environment
- Part 3: LSP & Tree-sitter
- A Beginner's Guide to Extending Emacs
- Part 1: Foundations
- Part 2: Projects and Keybindings
- System Crafters Emacs Guides
- Emacs Lisp Elements
- Part 1: The Basics
- Part 2: Lisp Primer - Why Parentheses Matter
- Part 3: Customizing and Extending Emacs
- C/C++ Development Environment for Emacs
- How I am deeply integrating emacs
- Use GNU Emacs: The Plain Text Computing Environment
-
Vim
-
ZX Spectrum and Z80 CPU
-
-
Unicode
-
Vim
- Programming with Unicode
- The Absolute Minimum Every Software Developer Must Know About Unicode in 2023
- Unicode programming, with examples
- Programming with Unicode
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets
- The Absolute Minimum Every Software Developer Must Know About Unicode in 2023
-
-
Version control tools
-
Data Science
-
WebGPU
- Advanced Data Science: Statistics and Prediction Algorithms Through Case Studies
- Introduction to Data Science: Data Wrangling and Visualization with R
- Towards Data Science - The world’s leading publication for data science, AI, and ML professionals.
- Advanced Data Science: Statistics and Prediction Algorithms Through Case Studies
- Data Science at the Command Line
- Hands-On Data Visualization
- Introduction to Data Science: Data Wrangling and Visualization with R
- Mathematical Methods in Data Science (with Python)
- Mining Social Media
- Topics in Mathematics of Data Science
-
-
Technical Writing
-
Optimization
-
DevOps
-
General Programming
-
Lists of programming projects to try to implement
-
Game Physics
-
-
Demoscene
-
SQL
- Graphics Tricks from Boomers - Technical details about a 4096 bytes Atari-STE intro, by *Arnaud Carré*.
- Part 1: A dive into the making of Immersion
- Part 2: Texturing in a 64kB intro
- Part 3: Procedural 3D mesh generation in a 64kB intro
-
-
Digital Signal Processing
-
SQL
- Online Textbooks and Course Materials by Julius Orion Smith III
- AI Audio Signal Processing Reading List
- Audio Signal Processing in FAUST
- Intoroduction to Digital Filters
- Physical Audio Signal Processing
- Spectral Audio Signal Processing
- PySDR: A Guide to SDR and DSP using Python
- Software-Defined Radio for Engineers
- The Scientist and Engineer's Guide to Digital Signal Processing
-
-
Geographic Information Systems
-
Lists of programming projects to try to implement
-
-
Information TheoryDiscovering observers
-
Lists of programming projects to try to implement
-
-
IQ Tests
-
Lists of programming projects to try to implement
-
-
Music Theory
-
Topology
-
-
System programming
-
ZX Spectrum and Z80 CPU
-
-
Testing
-
ZX Spectrum and Z80 CPU
-
Programming Languages
Categories
Math
358
Programming languages
280
Personal Websites and Blogs
222
Computer Graphics
211
AI
117
Retrocomputing
74
Algorithms
73
Web programming
41
Compilers and Interpreters
39
Low Level Stuff
37
Operating Systems
37
Game Programming
31
Databases
30
Text editors
26
Competitions and Interview Preparation Websites
25
Command Line and Tools
23
Physics
23
Design Patterns
20
Debuggers
20
Computer Networks and Network Programming
20
Other
18
Other lists
15
Emulators and Virtual Machines
13
Multithreading and Concurrency
12
Distributed systems
10
Data Science
10
Digital Signal Processing
9
Robotics
9
Hardware
9
GUI Programming
9
General Programming
7
Reverse engineering
7
Cryptography
6
Unicode
6
Command line and tools
5
Logical Games
4
Demoscene
4
SIMD programming
3
System programming
3
Electronics
3
DevOps
3
Geographic Information Systems
3
Technical Writing
3
Biology
3
IQ Tests
2
Version control tools
2
Information TheoryDiscovering observers
2
Fluids Simulation
2
Optimization
2
Art
2
Photography
2
Testing
1
Music Theory
1
Sub Categories
SIMD programming
166
Mixed Programming <span id="mixed-programming-blogs">
102
Machine Learning
101
WebGPU
89
Programming <span id="programming-competitions">
88
SQL
77
Ray Tracing
77
Python
54
Game and Graphics Programming <span id="game-and-graphics-programming-blogs">
52
Vibe Coding and Spec-Driven Development
51
Topology
49
Linux command line
48
C++ <span id="cpp">
48
Lists of programming projects to try to implement
46
Operating Systems Development
43
Vim
43
Probability and Statistics
41
C++ <span id="cpp-blogs">
41
Zig
39
Game Engines
34
Computer Games AI
31
Theoretical Computer Science
29
Rust
24
ZX Spectrum and Z80 CPU
24
Algebra
23
Shaders
23
Diff Algorithms
22
CSS
22
Lisp dialects
22
Calculus
22
Assembly
21
Other Blogs
19
C
17
Emacs
16
Go
15
Math and Physics <span id="math-and-physics-blogs">
13
DOS
13
Databases Development
12
Geometry
12
Vulkan
9
Books by Fabien Sanglard
9
Proofs
8
Category Theory
8
Mathematical Finance
7
Graph Theory
7
Image Processing
6
Operations Research
6
JavaScript
6
Regular expressions
6
DirectX 12
6
Curl
5
Game Physics
5
OpenGL
5
Haskell
5
AI <span id="ai-blogs">
5
Forth
5
Mathematical Logic
5
Performance and Optimization <span id="performance-and-optimization-blogs">
5
Game Boy
4
Adevent of code on retro machines
4
Demoscene
4
GPU and TPU Programming
4
Jai
4
Odin
4
Commodore 64
4
Prolog
4
Apple II
3
R
3
Erlang
3
Web Development <span id="web-development-blogs">
3
Ada
3
Bloom Filters
3
CP/M <span id="cpm">
3
Creative Coding
2
Django
2
OCaml
2
Game Theory
2
Curves and Surfaces
2
Nix
2
Pascal
2
Smalltalk
2
Ruby
2
Measure Theory
2
Math <span id="math-competitions">
2
Number theory
2
NES
2
Java
2
Simulations
2
PostScript
2
Pyret
2
Metal
2
HTML
2
Lean
1
NoSQL
1
Oberon-2
1
Cuda
1
General problem solving
1
Mega 65
1
Bash
1
Datalog
1
Basic
1
Differential Equations
1
Nim
1
C# <span id="c-sharp">
1
Ya
1
CMake
1
Physics <span id="physics-competitions">
1
D
1
Keywords
book
3
machine-learning
3
c
2
tutorial
2
reinforcement-learning
2
python
2
opengl
2
graphics-programming
2
matplotlib
2
numpy
2
graphics
2
book-series
1
code-editor
1
editor
1
education
1
intermediate
1
indiedev
1
hlsl
1
learning
1
learning-to-code
1
linux
1
programming
1
training-materials
1
training-providers
1
unix
1
vim
1
3d
1
godot
1
3d-graphics
1
game-development
1
gamedev
1
glsl
1
glsl-shader
1
glsl-shaders
1
30-days-of-python
1
flask
1
github
1
heroku
1
mongodb
1
pandas
1
python3
1
aarch64
1
arm64
1
armv8
1
bare-metal
1
embedded-rust
1
kernel
1
operating-system
1
os
1
raspberry
1