**Description**: Study of commonly used bioinformatic algorithms, with an emphasis on string, tree, and graph algorithms. Presentation of probabilistic and clustering methods. Implementation of the studied algorithms and design of applications.

**Objectives**

- Understand how popular bioinformatics algorithms work
- Learn how to design algorithms for solving biological problems
- Be able to implement and use these algorithms in tool development in a context of biological data analysis
- Gain knowledge needed to understand more advanced topics and current research literature in the field of bioinformatics.

**Course Learning Outcomes**: See objectives.

**Program Learning Outcomes**

- a. Students can apply knowledge of computing and mathematics appropriate to the discipline
- b. Students can analyze a problem, and identify and define the computing requirements appropriate to its solution
- c. Students can design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs
- i. Students can use current techniques, skills, and tools necessary for computing practice

**Prerequisites**: 475 or consent.

**Textbook(s)**: Jones, N.C. and Pevzner P.A. An Introduction to Bioinformatics Algorithms MIT Press

**Grading**: Programming assignment: 30%
Class participation: 10%
Midterm exam: 30%
Final Exam : 30%

**Schedule**

- Week 1: Algorithm and Complexity
- Week 2-3: Mapping DNA and Finding Signals: Exhaustive Search
- Week 4: Genome Rearrangement and Signals: Greedy Algorithm
- Week 4-7: Sequence Comparison and Gene Prediction: Dynamic Programming
- Week 8: Midterm Exam
- Week 9: Comparing Sequences: Divide and Conquer Algorithms
- Week 10-12: Sequencing DNA, DNA Arrays: Graph Algorithm
- Week 13-14: Repeat Analysis and Sequence Comparison: Combinatorial Pattern Matching
- Week 15-16 : DNA Arrays and Evolution: Clustering and Trees