πOpen Library
If you're interested in joining or starting a project at Exohood Labs, we have links to resources on coding, math and science.
AI
Machine Learning
A Course in Machine Learning by Hal DaumΓ© III
Algorithms for Decision Making by Mykel J. Kochenderfer, Tim A. Wheeler, and Kyle H. Wray
Deep Learning by Ian Goodfellow, Yoshua Bengio and Aaron Courville
Deep Learning Interviews Second Edition by Shlomo Kashani
Machine Learning Engineering Book by Andriy Burkov
Mathematics for Machine Learning by Marc Peter Deisenroth, A. Aldo Faisal, and Cheng Soon Ong
Physics-based Deep Learning by N. Thuerey, P. Holl, M. Mueller, P. Schnell, F. Trost, K. Um
The Hundred Page Machine Learning Book by Andriy Burkov
Computer Games AI
Game AI Pro by Steve Rabin
Programming Starcraft AI by Peter Kis
Algorithms
Algorithms by Jeff Erickson
Algorithms for Optimization by Mykel J. Kochenderfer and Tim A. Wheeler
Algorithms for Modern Hardware by Sergey Slotin
Competitive Programmer's Handbook by Antti Laaksonen
Exact String Matching Algorithms by Christian Charras and Thierry Lecroq
Introduction to High Performance Scientific Computing by Victor Eijkhout with Edmond Chow and Robert van de Geijn
Principles of Algorithmic Problem Solving by Johan Sannemo
Problem Solving with Algorithms and Data Structures using Python by Brad Miller and David Ranum
Command line and tools
Curl Exercises by Julia Evans
How I'm still not using GUIs: A guide to the terminal by Lucas Fernandes da Costa
The Linux Command Handbook by Flavio Copes
Compilers and Interpreters
Build Your Own Lisp by Daniel Holden
Crafting Interpreters by Robert Nystrom
Creating the Bolt Compiler by Mukul Rathi
How Clang Compiles a Function by John Regehr
How LLVM Optimizes a Function by John Regehr
Let's Build a Compiler by Jack Crenshaw
Make A Language - A series about making a programming language called Eldiro using the Rust programming language.
Computer Graphics
3D Math Primer for Graphics and Game Development by Fletcher Dunn and Ian Parberry
Computer Graphics from Scratch by Gabriel Gambetta
Curves and Surfaces by Bartosz Ciechanowski
GPU Gems Books Series
GPU Performance for Game Artists by Keith OβConor
I Am Graphics And So Can You - a series of blog posts about implementing a Vulkan renderer for Doom 3 by Dustin H. Land
Learn OpenGL by Joey de Vries
The Book of Shaders by Patricio Gonzalez Vivo and Jen Lowe
Vulkan Tutorial by Alexander Overvoorde
Ray Tracing
How to build a BVH by Jacco Bikker
Physically Based Rendering: From Theory To Implementation by Matt Pharr, Wenzel Jakob, and Greg Humphreys
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
Computer Networks and Network Programming
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
Networking 101 by Internal Pointers
REST Servers in Go by Ely Bendersky
Cryptography
A Graduate Course in Applied Cryptography by Dan Boneh and Victor Shoup
Practical Cryptography for Developers by Svetlin Nakov
Databases
The Theory of Relational Databases by David Maier
Design Patterns
Data-Oriented Design by Richard Fabian
Design Patterns & Refactoring SourceMaking
From design patterns to category theory by Mark Seemann
Game Programming Patterns by Robert Nystrom
Distributed systems
Testing Distributed Systems - Curated list of resources on testing distributed systems by Andrey Satarin.
Game Programming
2D Game Development: From Zero To Hero by Daniele Penazzo
Retro Rampage a tutorial series in which you will learn how to build a Wolfenstein-like game from scratch, in Swift by Nick Lockwood
GUI Programming
Hardware
Modern Microprocessors: A 90-Minute Guide! by Jason Robert Carey Patterson
Logical Games
Hex: A Strategy Guide by Matthew Seymour
Math
A Gentle Introduction to Tensors by Boaz Porat
A Programmer's Introduction to Mathematics by Jeremy Kun
An Infinitely Large Napkin by Evan Chen
Book of Proof, Third Edition by Richard Hammack
Paul's Online Math Notes by Paul Dawkins
Algebra
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
Category Theory
Category Theory for Programmers by Bartosz Milewski
Category Theory Illustrated by Boris Marinov
Category Theory: Lecture Notes and Online Books - collection by Peter Smith
Probability and Statistics
Digital textbook on probability and statistics by Marco Taboga
Introduction to Probability for Data Science by Stanley H. Chan
Markov Chains for programmers by Ricardo M. Czekster
Seeing Theory - a book about statistics with interactive visualizations by Daniel Kunin, Jingru Guo, Tyler Dae Devlin, and Daniel Xiang
Theoretical Computer Science
Multithreading and Concurrency
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
Operating Systems
Linux Insides by 0xAD
Making our own executable packer by Amos
Operating Systems: Three Easy Pieces by Remzi H Arpaci-Dusseau and Andrea C Arpaci-Dusseau
Systems Programming: Lecture Notes by Jian Huang
Writing a Simple Operating System β from Scratch by Nick Blundell
Writing an OS in Rust by Philipp Oppermann
Physics
A free introduction to quantum computing and quantum mechanics by Andy Matuschak and Michael Nielsen
Motion Mountain by Christoph Schiller - A free physics textbook in 5 volumes.
Relativity: A Modern Primer by Kevin Han
Structure and Interpretation of Classical Mechanics, Second Edition by Gerald Jay Sussman and Jack Wisdom
Programming languages
Assembly
Learn Assembly Language - NASM x86 assembly language tutorial on Linux.
Basic
C
Coroutines in C by Simon Tatham
The Lost Art of Structure Packing by Eric S. Raymond
Unicode programming, with examples by Joe Nelson
C++
Beginner's Guide to Linkers by David Drysdale
C++20 Coroutines: sketching a minimal async framework by Jeremy Ong
C++20 Concepts: The Definitive Guide by Rajat Jain
C++ exceptions under the hood by NicolΓ‘s Brailovsky
Performance Analysis and Tunning on Modern CPUs by Denis Bakhvalov
Clojure
Clojure Concurrency Tutorial by Eric Normand
Clojure for the Brave and True by Daniel Higginbotham
Common Lisp
Practical Common Lisp by Peter Seibel
D
Programming in D by Ali Γehreli
Erlang
Learn You Some Erlang for great good! by Fred Hebert
Go
Network Programming with Go by Jan Newmarch
Practical Go Lessons by Maximilien Andile
Haskell
Learn You a Haskell for Great Good! by Miran LipovaΔa
Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen
JavaScript
Eloquent JavaScript by Marijn Haverbeke
The Modern JavaScript Tutorial by Ilya Kantor
Nim
Computer Programming with the Nim Programming Language by Dr. Stefan Salewski
OCaml
Real World OCaml by Yaron Minsky, Anil Madhavapeddy and Jason Hickey
Pascal
Modern Object Pascal Introduction for Programmers by Michalis Kamburelis
Pyret
Python
Automate the Boring Stuff with Python by Al Sweigart
Composing Programs by John DeNero
Scientific Visualization: Python + Matplotlib by Nicolas Rougier
Racket
Beautiful Racket by Matthew Butterick
How to Design Programs, Second Edition by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi
Regular expressions
Implementing Regular Expressions by Russ Cox
Regular-Expressions.info by Jan Goyvaerts
Rust
A Gentle Introduction to Rust by Steve Donovan
Exploring ways to make async Rust easier by Carl Lerche
Scheme
Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman with Julie Sussman
Retrocomputing
An Afterlife User's Guide to the C64 by Gregorio Naçu
Famicom Party: Making NES Games in Assembly by Kevin Zurawel
First Steps in Z80 Assembly Language by Darryl Sloan
How to Write ZX Spectrum Games by Jonathan Cauldwell
Learn Multiplatform Assembly Programming by ChibiAkumas
The Lost Ways of Programming: Commodore 64 BASIC by Tomas Petricek
Reverse engineering
Reverse Engineering for Beginners by Dennis Yurichev
Reversing for dummies - x86 assembly and C code by Sami Alaoui
Robotics
Modern Robotics: Mechanics, Planning, and Control by Kevin M. Lynch and Frank C. Park
Underactuated Robotics by Russ Tedrake
Text editors
Learn Vim (the Smart Way) by Igor Irianto
The Vi/Ex Editor by Walter Alan Zintz
Vim Reference Guide by Sundeep Agarwal
Version control tools
Git from the Bottom Up by John Wiegley
Learn the workings of Git, not just the commands by Andre Fachat
Emulators and Virtual Machines
Writing NES emulator in Rust by Rafael Bagmanov
Web programming
FastCGI β The Forgotten Treasure by Peter Simons and Ralph Babel
Other
Computer Science from the Bottom Up by Ian Wienand
How These Things Work - a book about abstraction
Last updated