I'm trying to explain linear algebra to some programmers with computer science backgrounds. They took a course on it long ago, but don't seem to remember much. They can follow basic formalism, but none of it seems to stick when they don't see anything in "real life" to relate the concepts to. Do people know any good examples of applications in computer science using basic linear algebra concepts? Some things I was thinking of include:


* Eigenvalues and eigenspaces
* Image and kernel
* Determinants
* Dual space
* Transpose
* Inner products
* Singular value decomposition



Applications of basic linear algebra concepts to computer science?
For eigenvalues and eigenvectors, Google's original PageRank algorithm is a good example. The idea is to build a matrix $A$ where $A\_{ij}$ is the probability that you would end up at page $i$ by following a randomly chosen hyperlink on page $j$. An eigenvector with eigenvalue $1$ of this matrix is a stable probability distribution over web pages. Generally a page which is linked to by many sites which are themselves linked to by many sites will have a high page rank. 


Singular value decomposition is widely used for image processing. You can represent a black-and-white image by the matrix of values for its pixels. The $k$ largest singular values represent the most significant contributions to the image. You can then compress an image by replacing $A = UDV^T$ with $U'D'(V')^T$, where $D'$ is the $k \times k$ matrix submatrix of $D$ of the largest singular values, $U'$ is the $n \times k$ submatrix of $U$ consisting of the corresponding $k$ columns of $U$, and $(V')^T$ is the submatrix of $V^T$ consisting of the corresponding $k$ rows of $V^T$. 


Computer graphics is another area where linear algebra plays a huge role. Consider the problem of finding the shadow of triangle onto some plane from a light source infinitely far away. This is just a projection map. 


