This document provides an overview of unsupervised learning and clustering algorithms. It begins with definitions of supervised vs. unsupervised learning. Clustering is introduced as an unsupervised learning technique that groups similar data points together without predefined labels. The k-means algorithm is described in detail, including its steps, strengths, and weaknesses. Hierarchical clustering is also covered at a high level. Various distance functions and approaches to representing clusters are discussed.