This document discusses sparse representations and dictionary learning. It introduces the concepts of sparsity, redundant dictionaries, and sparse coding. The goal of sparse coding is to find the sparsest representation of signals using an overcomplete dictionary. Dictionary learning aims to learn an optimized dictionary from exemplar data by alternately solving sparse coding subproblems and dictionary update steps. Patch-based dictionary learning has applications in image denoising and texture synthesis. In contrast to PCA, learned dictionaries contain non-linear atoms adapted to the data.