Reading short list
(Because I’ll find a book or article series that is important and then life will get in the way)
Sketch algorithms – (Or streaming algorithms) are probabilistic algorithms that can provide answers to certain questions about extremely large sets of data in a short time with known error characteristics. To compute such answers exactly would require a prohibitively large about of time and memory.
Deep learning – Relatively new techniques for training neural networks that have many layers/long credit assignment paths.
Graphical models: Decently paced lecture notes on Bayesian networks.
The long list
Machine learning/statistics
- IPAM video lectures
- Tutorial on Bayesian programming: An interesting experiment for an interactive book. The book is a set of iPython notebooks, so you can run the code as you read. The source is on github, so you can modify it as you go along.
- Random projection. Johnson-Lindenstrauss dimension reduction: If you project data to a lower dimension using a random projection matrix, the pair-wise distances will largely be conserved if the new dimensionality is of the order of the log of the number of points.
Computer science
- SCIP lectures
- Common LISP: a gentle introduction to symbolic computation – an easy to read text, mainly on the concepts behind LISP
- The algorithm design manual – a meaty text that is fun to read because it poses interesting problems and then goes into different ways of solving them – the problems are tough and it is fun to see how solutions to them, starting simply, can be approached.
- Jeff Erickson’s algorithm lecture notes
C++/low level programming details
- Undefined behavior in C/C++ – John Reghr [1] [2] [3]
- A survey of CPU caches (full pdf paper) – Cache lines, size, features, includes testing code.
- Cache Oblivious algorithms – “Cache-oblivious algorithms work by recursively dividing a problem’s dataset into smaller parts and then doing as much computations of each part as possible. Eventually subproblem dataset fits into cache, and we can do significant amount of computations on it without accessing memory”
- A guide to OpenMP – “OpenMP consists of a set of compiler #pragmas that control how the program works. The pragmas are designed so that even if the compiler does not support them, the program will still yield correct behavior, but without any parallelism.”
- Online C++ disassembler – write your code in the left hand pane. The assembly code appears in the right hand side. Magic!
- Xeus/Xeus-cling – C++ Jupyter notebook
Sites I find interesting
- Crowlspace: Thought provoking essays on many topics.
- Map of the observable universe
- Euclidea: Fun interactive geometry puzzles
- https://lobste.rs/ : The place where I go to for interesting articles on programming and tech.
- Bill Hammack (The Engineer Guy) creates informative and humorous short video demonstrations on EVERYTHING.
- Ask a mathematician/Ask a physicist
- I can’t tell you what Hackery is about, but it’s good.
- A real mathematician and programmer
- Lost in recursion
- A good old fashioned hardware hacker.
- Purely in-browser games
- Red Blob Games – learn computer science concepts through games, I mean, interactive demos.
- The online encyclopedia of integer sequences.