We discuss disjoint sets, also known as union-find data structures. Disjoint sets maintain collections of elements partitioned into non-overlapping sets, each with a representative element. Key operations include Make-Set (creating a new set), Find-Set (locating a set's representative), and Union (merging two sets). Different representations are explored, such as arrays, linked lists, and inverted trees, along with their associated time complexities. Heuristics like weighted union and union by rank are introduced to improve efficiency, and path compression is discussed as a way to optimize the Find-Set operation. The notes culminate in discussing the inverse Ackermann function in the context of the time complexity of the union by rank and path compression methods.