Computer science and photography, made clear.

Friendly, practical guides and interactive tools for students. Explore Data Structures, Algorithms, Mathematics, Computer Networks, Photography with illustrated explanations and hands-on experiments.

Explore by subject

  • Data Structures — Choose the right way to organize information, from arrays and hash maps to trees and graphs.
  • Algorithms — Learn the strategies that make programs faster, clearer, and more efficient.
  • Mathematics — Build intuition for the logic, probability, and algebra that power computer science.
  • Computer Networks — Understand how the internet moves information from one computer to another.
  • Photography — Learn practical photography fundamentals—from exposure and focus to composition and color—with clear visual guides.

Interactive tools

Search and explore interactive visualizations alongside their related guides.

  • Fourier Lab Mathematics

    Build periodic signals from sine and cosine harmonics. Explore 54 waveforms, motion, and the frequency spectrum.

    Open interactive tool · Read the guide
  • Binary Search Playground Algorithms

    Step through comparisons on a sorted list and watch the search interval shrink.

    Open interactive tool · Read the guide
  • Sorting Playground Algorithms

    Compare adjacent values and watch bubble sort move the largest remaining value into place.

    Open interactive tool · Read the guide
  • Min-Heap Playground Data Structures

    Insert values and remove the minimum while seeing the heap property restored.

    Open interactive tool · Read the guide
  • Dijkstra Shortest Path Playground Algorithms

    Settle vertices one at a time and follow tentative shortest-path distances across a weighted graph.

    Open interactive tool · Read the guide
  • HTTP Cache and CDN Playground Computer Networks

    Simulate browser and edge-cache hits, expiration, and ETag revalidation.

    Open interactive tool · Read the guide
  • Dynamic Arrays Explorer Data Structures

    A dynamic array stores items contiguously and grows its backing storage when capacity is exhausted. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Singly Linked Lists and Pointer Traversal Explorer Data Structures

    A singly linked list stores each value with a pointer to the next node, allowing local insertions without shifting later values. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Circular Buffers for Bounded Streams Explorer Data Structures

    A circular buffer reuses a fixed array by wrapping its read and write positions to the beginning. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Hash Collisions: Chaining and Open Addressing Explorer Data Structures

    A collision occurs when distinct keys map to the same hash-table slot, so a table needs a collision-resolution strategy. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Designing Hash Functions for Data Structures Explorer Data Structures

    A hash function distributes keys across a table's integer range so common key patterns do not cluster. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Red-Black Trees: Balanced Search with Color Rules Explorer Data Structures

    A red-black tree uses coloring invariants and rotations to keep its height logarithmic as keys are inserted or removed. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Radix Trees: Compressing Paths in a Trie Explorer Data Structures

    A radix tree merges chains of single-child trie nodes into labeled edges to reduce pointer and node overhead. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Union-Find: Tracking Connected Components Explorer Data Structures

    Disjoint-set union maintains groups under merge and connectivity-query operations using parent pointers. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Segment Trees for Range Queries Explorer Data Structures

    A segment tree stores summaries over intervals, combining child intervals to answer range queries and point updates. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Skip Lists: Probabilistic Ordered Search Explorer Data Structures

    A skip list adds randomized express links over a sorted linked list to reduce expected search steps. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • LRU Caches: Evicting the Least Recently Used Explorer Data Structures

    An LRU cache combines a key lookup table with an ordered list so reads and writes can refresh recency efficiently. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Persistent Data Structures and Shared Versions Explorer Data Structures

    A persistent structure preserves older versions after updates, often by copying only the nodes on a changed path. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Skip-Block Lists and Ordered Range Navigation Explorer Data Structures

    Block-based ordered lists group neighboring values so searches skip blocks before scanning a small local range. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Recurrence Relations for Algorithm Analysis Explorer Algorithms

    A recurrence describes an algorithm's cost using the costs of smaller input sizes plus the work done at the current level. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Insertion Sort and Nearly Sorted Data Explorer Algorithms

    Insertion sort builds a sorted prefix by shifting larger prefix values to make room for each next value. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Counting Sort for Bounded Integer Ranges Explorer Algorithms

    Counting sort counts how often each key occurs and uses cumulative counts to place values without comparisons. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Tail Recursion and Explicit Stacks Explorer Algorithms

    Tail recursion makes the recursive call the final action, while an explicit stack stores pending work in an ordinary loop. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • N-Queens: Constraint Search on a Chessboard Explorer Algorithms

    The N-Queens problem places one queen per row while excluding shared columns and diagonals. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Interval Scheduling and Earliest-Finish Selection Explorer Algorithms

    Selecting compatible intervals by increasing finish time maximizes the number of non-overlapping intervals for the standard unweighted problem. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • 0/1 Knapsack and State Design Explorer Algorithms

    The 0/1 knapsack dynamic program tracks the best value achievable for item prefixes and capacity limits. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Edit Distance and Minimum String Repairs Explorer Algorithms

    Edit distance finds the minimum number of insertions, deletions, and substitutions needed to transform one string into another. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Minimum Spanning Trees: Connect at Minimum Cost Explorer Algorithms

    A minimum spanning tree connects every vertex of a connected weighted undirected graph with minimum total edge weight. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • KMP String Search and Prefix Information Explorer Algorithms

    Knuth-Morris-Pratt search reuses matched-prefix information so a mismatch does not restart comparison at the next text character. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Two Pointers for Ordered Pair Problems Explorer Algorithms

    Two pointers move through an ordered sequence from opposite ends or in the same direction to avoid checking every pair. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Prefix Sums for Constant-Time Range Totals Explorer Algorithms

    A prefix-sum array stores cumulative totals so a range sum is the difference of two prefix values. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Propositional Logic and Truth Tables Explorer Mathematics

    Propositional logic represents statements as true or false and combines them with operators such as AND, OR, and NOT. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Set Operations: Union, Intersection, and Difference Explorer Mathematics

    Set operations describe which elements belong to combined collections and underpin database and query reasoning. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Permutations and Combinations Explorer Mathematics

    Permutations count ordered selections, while combinations count selections where order does not matter. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Conditional Probability and the Sample Space Explorer Mathematics

    Conditional probability restricts attention to outcomes where a condition is true, then measures the event inside that smaller space. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Expected Value for Randomized Algorithms Explorer Mathematics

    Expected value is the probability-weighted average outcome and helps describe randomized algorithm behavior. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Markov Chains and State Transitions Explorer Mathematics

    A Markov chain models transitions among states where the next-state distribution depends on the current state. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • The Sieve of Eratosthenes for Prime Tables Explorer Mathematics

    The Sieve of Eratosthenes marks multiples of each discovered prime to list all primes up to a bound. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Vector Magnitude and Normalization Explorer Mathematics

    A vector's magnitude is its Euclidean length, and normalization scales a nonzero vector to length one. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Matrix Inverses and Reversible Transformations Explorer Mathematics

    A square matrix has an inverse when it represents a reversible linear transformation with nonzero determinant. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Derivatives as Local Rates of Change Explorer Mathematics

    A derivative measures the limiting rate at which a function changes near an input value. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Logarithms as Inverse Exponents Explorer Mathematics

    A logarithm answers which exponent produces a value, turning multiplicative growth into additive reasoning. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Floating-Point Precision and Rounding Explorer Mathematics

    Floating-point formats approximate many real numbers with finite binary precision, so some decimal fractions cannot be represented exactly. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Coordinate Transforms and Change of Basis Explorer Mathematics

    A coordinate transform changes how a vector is represented, while the underlying geometric vector can remain the same. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • The TCP/IP Layers and Encapsulation Explorer Computer Networks

    Network layers divide communication responsibilities, and each layer wraps data with metadata needed by the next one. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Subnet Masks and Address Capacity Explorer Computer Networks

    A subnet mask marks which IP address bits identify a network and which identify hosts. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • DHCP and Automatic Network Configuration Explorer Computer Networks

    Dynamic Host Configuration Protocol leases network settings such as an address, gateway, and DNS resolver to a client. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • TCP Sequence and Acknowledgment Numbers Explorer Computer Networks

    TCP sequence numbers identify byte positions in a stream, while acknowledgments report the next expected byte. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • UDP Datagrams and Application-Level Reliability Explorer Computer Networks

    UDP sends independent datagrams without TCP's built-in delivery, ordering, or retransmission guarantees. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • TLS Certificates and Domain Validation Explorer Computer Networks

    TLS certificates bind a public key to a domain identity through a chain that clients validate against trusted roots. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • HTTP Status Codes and Response Categories Explorer Computer Networks

    HTTP status codes summarize whether a request succeeded, needs more action, or encountered a client or server problem. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • REST Resources and Stateless Request Design Explorer Computer Networks

    REST-style APIs expose resources through consistent identifiers and HTTP operations while keeping each request self-contained. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Load Balancing Across Application Instances Explorer Computer Networks

    A load balancer distributes requests across healthy service instances using a routing policy. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Eventual Consistency Across Replicas Explorer Computer Networks

    Eventual consistency permits replicas to temporarily disagree while promising convergence after updates stop propagating. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • HTTP/3 and QUIC Connection Setup Explorer Computer Networks

    HTTP/3 carries HTTP semantics over QUIC, which uses UDP while implementing transport features including encryption and stream multiplexing. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide
  • Polling, Server-Sent Events, and WebSockets Explorer Computer Networks

    Applications can receive updates by periodic polling, one-way server-sent events, or bidirectional WebSocket messaging. Experiment with a small example and see each step update.

    Open interactive tool · Read the guide

Articles

  • Arrays vs. Linked Lists: Choosing the Right Sequence — Both store ordered data, but their memory layouts make different operations fast. Learn when each structure fits.
  • Stacks and Queues: Two Simple Rules, Many Uses — Explore last-in-first-out and first-in-first-out structures, with real examples from browsers, scheduling, and search.
  • Hash Maps Explained: Fast Lookups from Keys — See how hashing turns a key into a storage location, why collisions happen, and what good hash maps promise.
  • Trees and Binary Search Trees, One Node at a Time — Understand roots, leaves, traversals, and the ordering rule that makes a balanced search tree useful.
  • Graphs: Modeling Connections Between Things — From maps to social networks, learn graph vocabulary and compare adjacency lists with adjacency matrices.
  • Heaps and Priority Queues: Getting the Next Best Item — Learn how a compact tree keeps its smallest or largest value ready, and why schedulers and graph algorithms rely on heaps.
  • Dynamic Arrays — A dynamic array stores items contiguously and grows its backing storage when capacity is exhausted. This guide works through a concrete example and the trade-offs to remember.
  • Amortized Analysis: The Cost Across Many Operations — Amortized analysis bounds a sequence of operations rather than averaging across random inputs. This guide works through a concrete example and the trade-offs to remember.
  • Singly Linked Lists and Pointer Traversal — A singly linked list stores each value with a pointer to the next node, allowing local insertions without shifting later values. This guide works through a concrete example and the trade-offs to remember.
  • Doubly Linked Lists: Forward and Backward Links — A doubly linked list stores both next and previous pointers so a known node can be removed or traversed in either direction. This guide works through a concrete example and the trade-offs to remember.
  • Circular Buffers for Bounded Streams — A circular buffer reuses a fixed array by wrapping its read and write positions to the beginning. This guide works through a concrete example and the trade-offs to remember.
  • Deques: Efficient Operations at Both Ends — A deque supports insertion and removal at both the front and back, often using a circular array or linked blocks. This guide works through a concrete example and the trade-offs to remember.
  • Hash Collisions: Chaining and Open Addressing — A collision occurs when distinct keys map to the same hash-table slot, so a table needs a collision-resolution strategy. This guide works through a concrete example and the trade-offs to remember.
  • Hash-Table Load Factor and Resizing — Load factor is the ratio of stored entries to table capacity and helps estimate collision pressure. This guide works through a concrete example and the trade-offs to remember.
  • Designing Hash Functions for Data Structures — A hash function distributes keys across a table's integer range so common key patterns do not cluster. This guide works through a concrete example and the trade-offs to remember.
  • AVL Trees and Balance Factors — An AVL tree maintains a height difference of at most one between each node's left and right subtrees. This guide works through a concrete example and the trade-offs to remember.
  • Red-Black Trees: Balanced Search with Color Rules — A red-black tree uses coloring invariants and rotations to keep its height logarithmic as keys are inserted or removed. This guide works through a concrete example and the trade-offs to remember.
  • Tries for Prefix Search and Autocomplete — A trie represents keys as paths of characters, sharing common prefixes among stored strings. This guide works through a concrete example and the trade-offs to remember.
  • Radix Trees: Compressing Paths in a Trie — A radix tree merges chains of single-child trie nodes into labeled edges to reduce pointer and node overhead. This guide works through a concrete example and the trade-offs to remember.
  • B-Trees and Database Page Access — A B-tree groups many sorted keys in each node so one node can fit into a disk or database page. This guide works through a concrete example and the trade-offs to remember.
  • Union-Find: Tracking Connected Components — Disjoint-set union maintains groups under merge and connectivity-query operations using parent pointers. This guide works through a concrete example and the trade-offs to remember.
  • Path Compression and Union by Rank — Path compression shortens parent chains during find, while union by rank attaches a shallower tree below a deeper one. This guide works through a concrete example and the trade-offs to remember.
  • Segment Trees for Range Queries — A segment tree stores summaries over intervals, combining child intervals to answer range queries and point updates. This guide works through a concrete example and the trade-offs to remember.
  • Fenwick Trees for Prefix Sums — A Fenwick tree stores partial sums in an array where each index covers a range determined by its least significant set bit. This guide works through a concrete example and the trade-offs to remember.
  • Skip Lists: Probabilistic Ordered Search — A skip list adds randomized express links over a sorted linked list to reduce expected search steps. This guide works through a concrete example and the trade-offs to remember.
  • Bloom Filters for Space-Efficient Membership Tests — A Bloom filter uses several hash functions to set bits and can answer membership queries with possible false positives. This guide works through a concrete example and the trade-offs to remember.
  • LRU Caches: Evicting the Least Recently Used — An LRU cache combines a key lookup table with an ordered list so reads and writes can refresh recency efficiently. This guide works through a concrete example and the trade-offs to remember.
  • Sparse Matrices and Coordinate Storage — A sparse matrix stores only its nonzero values to avoid memory proportional to mostly empty cells. This guide works through a concrete example and the trade-offs to remember.
  • Persistent Data Structures and Shared Versions — A persistent structure preserves older versions after updates, often by copying only the nodes on a changed path. This guide works through a concrete example and the trade-offs to remember.
  • Rope Data Structures for Large Text Editing — A rope stores text in a balanced tree of string chunks so edits avoid repeatedly copying one huge string. This guide works through a concrete example and the trade-offs to remember.
  • Skip-Block Lists and Ordered Range Navigation — Block-based ordered lists group neighboring values so searches skip blocks before scanning a small local range. This guide works through a concrete example and the trade-offs to remember.
  • Big O Notation Without the Mystery — Describe how an algorithm scales as input grows, without getting distracted by machine-specific timing.
  • Binary Search: Halve the Search Space — A sorted collection can answer search questions quickly. Learn the invariant that keeps binary search correct.
  • Merge Sort: Divide, Sort, and Combine — Break a big sorting problem into smaller ones, then combine sorted halves in a predictable number of steps.
  • BFS vs. DFS: Two Ways to Explore a Graph — Use a queue to explore by distance or a stack to follow a path deep. Learn what each search guarantees.
  • Dynamic Programming: Remember Work You Already Did — Turn repeated subproblems into a table or cache, starting with a small recurrence you can reason about.
  • Dijkstra's Algorithm: Finding the Cheapest Route — Use a priority queue and repeated edge relaxation to find shortest paths in a graph with non-negative weights.
  • Recurrence Relations for Algorithm Analysis — A recurrence describes an algorithm's cost using the costs of smaller input sizes plus the work done at the current level. This guide works through a concrete example and the trade-offs to remember.
  • Quicksort and Partitioning Around a Pivot — Quicksort partitions values around a pivot, then recursively sorts the smaller regions. This guide works through a concrete example and the trade-offs to remember.
  • Insertion Sort and Nearly Sorted Data — Insertion sort builds a sorted prefix by shifting larger prefix values to make room for each next value. This guide works through a concrete example and the trade-offs to remember.
  • Heap Sort: Selection with a Heap — Heap sort repeatedly removes the maximum from a heap and places it at the end of the array. This guide works through a concrete example and the trade-offs to remember.
  • Counting Sort for Bounded Integer Ranges — Counting sort counts how often each key occurs and uses cumulative counts to place values without comparisons. This guide works through a concrete example and the trade-offs to remember.
  • Radix Sort: Sorting Digits One Pass at a Time — Radix sort orders fixed-width keys by successive digits, using a stable inner sort for each digit. This guide works through a concrete example and the trade-offs to remember.
  • Linear Search and Early Exit — Linear search checks values in sequence until it finds a target or reaches the end. This guide works through a concrete example and the trade-offs to remember.
  • Tail Recursion and Explicit Stacks — Tail recursion makes the recursive call the final action, while an explicit stack stores pending work in an ordinary loop. This guide works through a concrete example and the trade-offs to remember.
  • Backtracking: Explore and Undo Choices — Backtracking builds a candidate solution one choice at a time and undoes choices that cannot lead to a valid answer. This guide works through a concrete example and the trade-offs to remember.
  • N-Queens: Constraint Search on a Chessboard — The N-Queens problem places one queen per row while excluding shared columns and diagonals. This guide works through a concrete example and the trade-offs to remember.
  • Greedy Algorithms and the Exchange Argument — A greedy algorithm commits to a locally attractive choice and needs a proof that this choice can belong to an optimal solution. This guide works through a concrete example and the trade-offs to remember.
  • Interval Scheduling and Earliest-Finish Selection — Selecting compatible intervals by increasing finish time maximizes the number of non-overlapping intervals for the standard unweighted problem. This guide works through a concrete example and the trade-offs to remember.
  • Memoization vs. Tabulation in Dynamic Programming — Memoization caches recursive subproblem results, while tabulation fills a table in a chosen dependency order. This guide works through a concrete example and the trade-offs to remember.
  • 0/1 Knapsack and State Design — The 0/1 knapsack dynamic program tracks the best value achievable for item prefixes and capacity limits. This guide works through a concrete example and the trade-offs to remember.
  • Longest Increasing Subsequence: Two Useful Approaches — The longest increasing subsequence can be computed with a quadratic dynamic program or a patience-sorting-style tails array. This guide works through a concrete example and the trade-offs to remember.
  • Edit Distance and Minimum String Repairs — Edit distance finds the minimum number of insertions, deletions, and substitutions needed to transform one string into another. This guide works through a concrete example and the trade-offs to remember.
  • Topological Sorting and Dependency Order — A topological ordering places every directed acyclic graph vertex before the vertices that depend on it. This guide works through a concrete example and the trade-offs to remember.
  • Minimum Spanning Trees: Connect at Minimum Cost — A minimum spanning tree connects every vertex of a connected weighted undirected graph with minimum total edge weight. This guide works through a concrete example and the trade-offs to remember.
  • A-Star Search and Admissible Heuristics — A-star ranks frontier states by path cost so far plus a heuristic estimate of remaining cost. This guide works through a concrete example and the trade-offs to remember.
  • Bellman-Ford and Negative Edge Weights — Bellman-Ford relaxes every edge repeatedly and can detect reachable negative-weight cycles. This guide works through a concrete example and the trade-offs to remember.
  • KMP String Search and Prefix Information — Knuth-Morris-Pratt search reuses matched-prefix information so a mismatch does not restart comparison at the next text character. This guide works through a concrete example and the trade-offs to remember.
  • Rolling Hashes for Fast Substring Candidates — A rolling hash updates a window hash as one character leaves and another arrives, making substring candidates cheap to compare. This guide works through a concrete example and the trade-offs to remember.
  • Two Pointers for Ordered Pair Problems — Two pointers move through an ordered sequence from opposite ends or in the same direction to avoid checking every pair. This guide works through a concrete example and the trade-offs to remember.
  • Sliding Windows for Contiguous Subarrays — A sliding window maintains state for a moving contiguous range, adding new values and removing values that leave. This guide works through a concrete example and the trade-offs to remember.
  • Prefix Sums for Constant-Time Range Totals — A prefix-sum array stores cumulative totals so a range sum is the difference of two prefix values. This guide works through a concrete example and the trade-offs to remember.
  • Sets, Functions, and Relations: The Language of CS — A gentle introduction to describing collections, mappings, and relationships precisely.
  • Proof by Induction: Climb an Infinite Ladder — Prove a statement for every natural number by checking one starting step and showing how each step follows.
  • Modular Arithmetic and the Euclidean Algorithm — Work with remainders like clock numbers, then use repeated division to find the greatest common divisor.
  • Probability for Computer Science Beginners — Reason about random outcomes with sample spaces, events, and conditional probability.
  • Vectors and Matrices: Transformations in Disguise — Represent data as vectors and see how matrix multiplication can rotate, scale, and combine it.
  • Fourier Series: Building Signals from Simple Waves — See how sine and cosine waves combine to approximate complex periodic signals, then experiment with an interactive Fourier Lab.
  • Propositional Logic and Truth Tables — Propositional logic represents statements as true or false and combines them with operators such as AND, OR, and NOT. This guide works through a concrete example and the trade-offs to remember.
  • Boolean Algebra and Logic Simplification — Boolean algebra applies identities to simplify expressions while preserving their truth values. This guide works through a concrete example and the trade-offs to remember.
  • Set Operations: Union, Intersection, and Difference — Set operations describe which elements belong to combined collections and underpin database and query reasoning. This guide works through a concrete example and the trade-offs to remember.
  • Combinatorics and the Product Rule — The product rule counts sequences of independent choices by multiplying the number of options at each step. This guide works through a concrete example and the trade-offs to remember.
  • Permutations and Combinations — Permutations count ordered selections, while combinations count selections where order does not matter. This guide works through a concrete example and the trade-offs to remember.
  • The Binomial Theorem and Pascal Structure — The binomial theorem expands powers of two-term sums using coefficients that count how many ways terms are selected. This guide works through a concrete example and the trade-offs to remember.
  • Conditional Probability and the Sample Space — Conditional probability restricts attention to outcomes where a condition is true, then measures the event inside that smaller space. This guide works through a concrete example and the trade-offs to remember.
  • Bayes’ Theorem and Updating Beliefs — Bayes’ theorem reverses a conditional relationship by combining prior probability with how likely the evidence is under each case. This guide works through a concrete example and the trade-offs to remember.
  • Expected Value for Randomized Algorithms — Expected value is the probability-weighted average outcome and helps describe randomized algorithm behavior. This guide works through a concrete example and the trade-offs to remember.
  • Variance and Measuring Spread — Variance measures the average squared distance from a distribution's mean, emphasizing outcomes far from the center. This guide works through a concrete example and the trade-offs to remember.
  • Markov Chains and State Transitions — A Markov chain models transitions among states where the next-state distribution depends on the current state. This guide works through a concrete example and the trade-offs to remember.
  • Modular Inverses and Solving Congruences — A modular inverse of a modulo m is a value x for which ax leaves remainder one when divided by m. This guide works through a concrete example and the trade-offs to remember.
  • The Sieve of Eratosthenes for Prime Tables — The Sieve of Eratosthenes marks multiples of each discovered prime to list all primes up to a bound. This guide works through a concrete example and the trade-offs to remember.
  • Complex Numbers on the Plane — A complex number a+bi corresponds to point (a,b), where multiplication combines scaling and rotation. This guide works through a concrete example and the trade-offs to remember.
  • Vector Magnitude and Normalization — A vector's magnitude is its Euclidean length, and normalization scales a nonzero vector to length one. This guide works through a concrete example and the trade-offs to remember.
  • The Dot Product and Angle Between Vectors — The dot product combines corresponding vector components and relates direction alignment to the cosine of their angle. This guide works through a concrete example and the trade-offs to remember.
  • Matrix Inverses and Reversible Transformations — A square matrix has an inverse when it represents a reversible linear transformation with nonzero determinant. This guide works through a concrete example and the trade-offs to remember.
  • Eigenvectors and Stable Directions — An eigenvector keeps its direction under a matrix transformation and is scaled by its associated eigenvalue. This guide works through a concrete example and the trade-offs to remember.
  • Derivatives as Local Rates of Change — A derivative measures the limiting rate at which a function changes near an input value. This guide works through a concrete example and the trade-offs to remember.
  • Limits and Continuity at a Point — A limit describes the value a function approaches as its input gets close to a point, even when the function value differs or is undefined there. This guide works through a concrete example and the trade-offs to remember.
  • Logarithms as Inverse Exponents — A logarithm answers which exponent produces a value, turning multiplicative growth into additive reasoning. This guide works through a concrete example and the trade-offs to remember.
  • Linear Recurrences and Characteristic Roots — A linear recurrence defines each sequence value as a weighted combination of earlier values and can often be solved using characteristic roots. This guide works through a concrete example and the trade-offs to remember.
  • Entropy and Information Content — Entropy measures uncertainty in a probability distribution and is largest when outcomes are evenly likely. This guide works through a concrete example and the trade-offs to remember.
  • Floating-Point Precision and Rounding — Floating-point formats approximate many real numbers with finite binary precision, so some decimal fractions cannot be represented exactly. This guide works through a concrete example and the trade-offs to remember.
  • Coordinate Transforms and Change of Basis — A coordinate transform changes how a vector is represented, while the underlying geometric vector can remain the same. This guide works through a concrete example and the trade-offs to remember.
  • What Happens When You Type a URL? — Follow a web request from the address bar through DNS, the network, and the browser as a page appears on your screen.
  • DNS: The Internet's Address Book — Learn how domain names become IP addresses and how DNS resolvers find answers efficiently.
  • HTTP Requests and Responses, Explained — Understand methods, status codes, headers, and the request-response cycle behind websites and APIs.
  • TCP vs. UDP: Choosing How Data Travels — Compare reliable, ordered delivery with lightweight datagrams and see where each transport fits.
  • TLS and HTTPS: Securing a Web Connection — See how certificates and encryption help browsers communicate privately with the right server.
  • HTTP Caching and CDNs: Serving Pages Closer and Faster — Understand browser and shared caches, freshness rules, validators, and how a CDN reduces latency without serving stale content.
  • The TCP/IP Layers and Encapsulation — Network layers divide communication responsibilities, and each layer wraps data with metadata needed by the next one. This guide works through a concrete example and the trade-offs to remember.
  • IPv4 Addresses and Network Prefixes — An IPv4 prefix separates network bits from host bits so routers can group destinations by shared address ranges. This guide works through a concrete example and the trade-offs to remember.
  • Subnet Masks and Address Capacity — A subnet mask marks which IP address bits identify a network and which identify hosts. This guide works through a concrete example and the trade-offs to remember.
  • ARP and Finding a Neighbor on a Local Network — Address Resolution Protocol maps a local IPv4 address to a link-layer address needed to send a frame on the local network. This guide works through a concrete example and the trade-offs to remember.
  • DHCP and Automatic Network Configuration — Dynamic Host Configuration Protocol leases network settings such as an address, gateway, and DNS resolver to a client. This guide works through a concrete example and the trade-offs to remember.
  • Routing Tables and Next-Hop Decisions — A routing table maps destination prefixes to next hops or interfaces, allowing each router to forward one packet at a time. This guide works through a concrete example and the trade-offs to remember.
  • The TCP Three-Way Handshake — TCP establishes a connection by exchanging SYN, SYN-ACK, and ACK segments that synchronize sequence state in both directions. This guide works through a concrete example and the trade-offs to remember.
  • TCP Sequence and Acknowledgment Numbers — TCP sequence numbers identify byte positions in a stream, while acknowledgments report the next expected byte. This guide works through a concrete example and the trade-offs to remember.
  • TCP Congestion Control and the Sending Window — TCP adjusts its sending rate in response to network feedback to avoid overwhelming shared paths. This guide works through a concrete example and the trade-offs to remember.
  • UDP Datagrams and Application-Level Reliability — UDP sends independent datagrams without TCP's built-in delivery, ordering, or retransmission guarantees. This guide works through a concrete example and the trade-offs to remember.
  • DNS Caching, TTLs, and Resolver Behavior — DNS resolvers cache records for their time-to-live so repeated name lookups can avoid another full hierarchy traversal. This guide works through a concrete example and the trade-offs to remember.
  • TLS Certificates and Domain Validation — TLS certificates bind a public key to a domain identity through a chain that clients validate against trusted roots. This guide works through a concrete example and the trade-offs to remember.
  • HTTP Methods and Their Intended Semantics — HTTP methods communicate the intended operation, such as retrieving a representation or submitting a change. This guide works through a concrete example and the trade-offs to remember.
  • HTTP Status Codes and Response Categories — HTTP status codes summarize whether a request succeeded, needs more action, or encountered a client or server problem. This guide works through a concrete example and the trade-offs to remember.
  • HTTP Headers and Negotiating Representations — HTTP headers carry metadata about requests and responses, including content type, caching policy, and accepted formats. This guide works through a concrete example and the trade-offs to remember.
  • REST Resources and Stateless Request Design — REST-style APIs expose resources through consistent identifiers and HTTP operations while keeping each request self-contained. This guide works through a concrete example and the trade-offs to remember.
  • WebSockets and Persistent Bidirectional Messages — WebSockets upgrade an HTTP connection into a persistent channel that supports messages in both directions. This guide works through a concrete example and the trade-offs to remember.
  • Load Balancing Across Application Instances — A load balancer distributes requests across healthy service instances using a routing policy. This guide works through a concrete example and the trade-offs to remember.
  • Rate Limiting and Token-Bucket Behavior — Rate limiting constrains request volume, and a token bucket allows short bursts while limiting the long-term average. This guide works through a concrete example and the trade-offs to remember.
  • Exponential Backoff and Jitter for Retries — Exponential backoff increases delay between retries, while jitter randomizes timing to avoid clients retrying in lockstep. This guide works through a concrete example and the trade-offs to remember.
  • Eventual Consistency Across Replicas — Eventual consistency permits replicas to temporarily disagree while promising convergence after updates stop propagating. This guide works through a concrete example and the trade-offs to remember.
  • Content Delivery Networks and Edge Caching — A CDN serves cacheable content from edge locations closer to users, reducing origin work and network distance. This guide works through a concrete example and the trade-offs to remember.
  • HTTP/3 and QUIC Connection Setup — HTTP/3 carries HTTP semantics over QUIC, which uses UDP while implementing transport features including encryption and stream multiplexing. This guide works through a concrete example and the trade-offs to remember.
  • Cookies, Sessions, and Browser Request State — Cookies let a server ask a browser to send small pieces of state with matching future requests. This guide works through a concrete example and the trade-offs to remember.
  • Polling, Server-Sent Events, and WebSockets — Applications can receive updates by periodic polling, one-way server-sent events, or bidirectional WebSocket messaging. This guide works through a concrete example and the trade-offs to remember.
  • The Exposure Triangle: Aperture, Shutter Speed, and ISO — Understand how aperture, shutter speed, and ISO work together to control brightness, motion, and depth of field.
  • Aperture and Depth of Field — See why a smaller f-number means a wider opening and how aperture changes background blur and the amount of a scene in focus.
  • Shutter Speed: Freeze or Show Motion — Learn how exposure time affects moving subjects, intentional blur, and camera shake, with practical starting points for common scenes.
  • Rule of Thirds and Stronger Composition — Use a simple grid to place a subject, create visual balance, and guide attention without treating composition rules as strict laws.
  • White Balance and Natural-Looking Color — Discover how white balance compensates for warm and cool light, and when to choose automatic, preset, or custom color temperature.