Modern biological techniques are generating a variety of large-scale data, and require sophisticated algorithms for their analysis. Tasks include assembling the genomic sequence, predicting the protein-coding regions, their function and the manner in which they are regulated. The course will provide a broad overview of the computational techniques currently used in bioinformatics. Students completing the course will be able to analyze a variety of biological data, a skill they will develop through the hands-on lab component, which will consist of algorithm implementation and biological case studies using those algorithms. Computational techniques covered in the course include dynamic programming for sequence alignment, hidden Markov models for gene finding, and graph algorithms for sequence assembly and motif finding.