An introduction to the fundamental data structures and algorithms underlying many parts of Bioinformatics. Standard data structures for efficient indexing and sequence search will be covered, including the suffix array and the FM-index, as will alignment-free methods for sequence comparison. This course will also introduce the fundamental algorithms in computational phylogenomics and biological network analysis. Finally, bioinformatics oriented applications of classic unsupervised learning algorithms (e.g., clustering and dimensionality reduction) and database techniques (e.g., sorting, selection, joining) will be examined. The focus will be both on formal understanding of computational efficiency as well as the practical applications of these concepts.