Kronecker product
The Kronecker product is what the tensor product of two linear maps looks like once you choose bases and write everything as matrices. It builds a big block matrix by stamping a scaled copy of one matrix into each entry-slot of the other — the concrete, computational face of an otherwise abstract construction.
Given an m × n matrix A and a p × q matrix B, their Kronecker product A ⊗ B is the mp × nq block matrix whose (i, j) block is a_ij·B. If A represents a linear map S: V -> V' and B represents T: W -> W' in chosen bases, then A ⊗ B represents the tensor product map S ⊗ T: V ⊗ W -> V' ⊗ W' in the induced tensor-product basis {e_i ⊗ f_k}. Thus the Kronecker product is exactly the matrix of a tensor-product map.
It obeys clean algebraic rules: (A ⊗ B)(C ⊗ D) = (AC) ⊗ (BD) whenever the products are defined, (A ⊗ B)^T = A^T ⊗ B^T, det(A ⊗ B) = det(A)^p · det(B)^m for square A (n × n) and B (p × p), trace(A ⊗ B) = trace(A)·trace(B), and the eigenvalues of A ⊗ B are all products λ_i μ_j of eigenvalues. It also linearizes the matrix equation AXB = C via the vec operator: vec(AXB) = (B^T ⊗ A) vec(X).
With A = [1, 2; 3, 4] and B = [0, 1; 1, 0], A ⊗ B = [0, 1, 0, 2; 1, 0, 2, 0; 0, 3, 0, 4; 3, 0, 4, 0], a 4 × 4 matrix whose (1,1) block is 1·B and (1,2) block is 2·B, and so on.
Each entry a_ij of A becomes the block a_ij·B in the Kronecker product.