Curated Computer Science and Programming Resource Guide
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
See also the general topics below: especially computer graphics, data structures, and algorithms.
Game Programming Patterns (free book on some design patterns possibly useful in games)
Invent Your Own Computer Games with Python, Making Games with Python & Pygame (free books)
Fix Your Timestep! (or, how to do timesteps right. Read it.)
Red Blob Games (good visual resource on algorithms like A*, hexagonal grids, etc.)
Catmull-Rom splines (splines that pass through all control points; good for games)
Game AI
Collision / Physics
Graphics Pipeline (overview of how computer graphics works)
Constructive Solid Geometry (CSG -- boolean operations on meshes)
Fast Inverse Square Root (famous algorithm for calculating 1 / sqrt(x)
, used heavily for vector normalization (originally for lighting in Quake III Arena))
How OpenGL works: software rendering in 500 lines of code (lessons on creating a software rasterizer)
Sutherland-Hodgman algorithm for polygon clipping
Clip Space Approach – Extracting the Planes (frustum culling in clip space)
(How to Write a (Lisp) Interpreter (in Python)) (follow-up: (An ((Even Better) Lisp) Interpreter (in Python)))
Modern Compiler Implementation in ML (commercial book; variants in C and Java are available, but aren't as good)
Compilers: Principles, Techniques, and Tools (aka The Dragon Book)
Write You A Haskell (currently unfinished)
Official LLVM Tutorial (implements a compiler for a tiny toy language called Kaleidoscope); Haskell and OCaml versions also available.
Pointer Tagging (storing information in unused bits of pointers)
NaN boxing (using bits of IEEE 754 floats for tagging, similar to pointer tagging)
Turbofan wiki (contains technical design docs of V8's new TurboFan compiler)
Continuations
Intermediate Representations
Optimization
Talks
grep
-- see why GNU grep is fast)bzip2
)van Laarhoven lenses (see the Haskell section on lens
)
Purely Functional Data Structures (commercial book; extended from freely available thesis)
Free Monads
Spatial partitioning
Blockchain 101 (a good video tutorial and demonstration of blockchains)
Distributed Hash Table (self-explanatory; notably used in BitTorrent)
XOR linked list (more space-efficient doubly linked list implementation by XORing the previous and next pointers)
Memory Allocation
Eloquent Javascript (free book)
You Don't Know JS (series of free books)
You Might Not Need jQuery (jQuery -> Vanilla JS)
Typed Arrays for manipulating binary data / compact native arrays
Web Storage, IndexedDB -- offline in-browser databases
TextEncoder/TextDecoder APIs for text codecs
asm.js (a subset of JavaScript (statically type inferrable, no GC) targetted at efficient machine translation/compilation)
Web Assembly (a text (S-expression based) and binary IR with goals similar to asm.js)
Emscripten, Cheerp -- C/C++/LLVM to JavaScript/asm.js/webasm compilers
Ramda (a library for functional programming in JavaScript; includes lenses, immutable data structures, etc. and is generally better than lodash)
proxy-fun (list of resources related to the ES6 Proxy
interface)
Transferable Objects: Lightning Fast! (shows new interface for movable zero-copy buffers across Web Workers)
How Browsers Work: Behind the scenes of modern web browsers (original)
How browsers work internally (video talk)
How Browser Works (slides)
Faster HTML and CSS: Layout Engine Internals for Web Developers (video talk)
How browser engines work? (video talk + slides)
How Browsers Work - Part 1 - Architecture (archived)
Gecko
WebKit