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

This course is used for testing and development