Computer science#
The computer science notes come mostly from undergraduate courses at UVA, plus later additions on GPUs and parallel training. Data structures and algorithms come first, since every other chapter assumes them. Then the machine itself: how numbers and instructions are stored and executed (architecture) and how the operating system shares processors, memory and disks between programs.
The remaining chapters stand alone. Languages is a quick reference for python, c/c++, java and R. Information retrieval covers how a search engine is built and how it differs from a database. Theory of computation asks which problems machines can solve at all and which they can solve fast, and the short quantum computing note asks whether physics changes those answers.
Linked lists and stacks, balanced search trees, heaps and Huffman codes, hash tables, and the standard graph algorithms.
Big-O notation, a catalog of sorting algorithms, lower bounds for finding the min and the median, and convex hulls and Voronoi diagrams.
Syntax references for python, c/c++, java and R, and the collective operations behind multi-GPU training.
Integers and floats in bits, assembly and calling conventions, a pipelined processor, caches, exceptions and virtual memory.
Processes and threads, synchronization and deadlock, CPU scheduling, paging and virtual memory, and file systems.
How a search engine is put together, how retrieval differs from exact database lookup, and the main kinds of databases.
Finite automata, context-free grammars and pushdown automata, Turing machines, undecidability, and NP-completeness.
Qubits and amplitudes, which problems quantum computers might speed up, Maxwell’s demon, and a matrix view of probability.