This course is an introduction to the fundamental mathematical models and computational techniques used in bioinformatics. Emphasis will be placed on modeling biological applications as graph-theoretic or mathematical optimization problems, and on designing, analyzing, and implementing efficient algorithms for solving these formulations   Covered algorithmic techniques will include exhaustive search, greedy algorithms, dynamic programming, divide-and-conquer, graph algorithms, combinatorial pattern matching, clustering, and randomized algorithms.  Biological applications will include motif finding, sequence assembly, pairwise and multiple sequence alignment, genome rearrangement analysis, gene expression analysis, evolutionary tree reconstruction, and single-cell sequencing data analysis.

This course is used for testing and development