This document discusses various clustering algorithms. It begins by defining clustering as assigning objects into groups so that objects in the same cluster are more similar to each other than objects in other clusters. It then discusses hierarchical and partitional clustering algorithms. Hierarchical algorithms produce nested clusters and can be agglomerative (bottom-up) or divisive (top-down). Partitional algorithms create all clusters in one step by optimizing a criterion function like squared error. Popular algorithms discussed include K-means, single and complete link hierarchical clustering, and squared error clustering.