About the Course
The sequencing of the human genome fueled a computational revolution in biology. As a result, modern biology produces as many new algorithms as any other fundamental realm of science.
Genome sequencing is just one of hundreds of biological problems that have become inextricable from the computational methods required to solve them. In this course, we will uncover some of the algorithmic ideas that are fundamental to an understanding of modern biology. Computational concepts like dynamic programming and graph theory will help us explore algorithms applied to a wide range of biological topics, from finding regulatory motifs to determining whether the human genome has "fragile" regions. Throughout the process, we will apply bioinformatics algorithms to real genetic data.
Each chapter in the course textbook covers a single biological question and slowly builds the algorithmic knowledge required to address this challenge. Along the way, coding challenges and exercises will be integrated into the text at the exact moment they are needed.
The course will be based around the following biological questions, with the algorithmic ideas that we will use to solve them in parentheses:
- Where Does DNA Replication Begin? (Algorithmic Warm-up)
- How Do We Sequence Antibiotics? (Brute Force Algorithms)
- Which DNA Patterns Act As Cellular Clocks? (Greedy and Randomized Algorithms)
- How Do We Assemble Genomes? (Graph Algorithms)
- How Do We Compare Biological Sequences? (Dynamic Programming Algorithms)
- Are There Fragile Regions in the Human Genome? (Combinatorial Algorithms)
- Which Animal Gave Us SARS? (Evolutionary Trees)
- How Do We Locate Disease-Causing Mutations? (Combinatorial Pattern Matching)
- How Did Yeast Become Such a Good Wine Brewer? (Clustering Algorithms)
Some of these topics will require you to complete coding challenges in order to implement bioinformatics algorithms, followed by a comprehension quiz at the end of the topic. Other topics will carry lighter workloads and consist primarily of lecture videos and short quizzes.
No background is required beyond an enthusiasm for biology and a willingness to immerse oneself in learning how to program. Students who have never programmed before should be able to approach this course, but we recommend that you first take a short programming tutorial that may last up to two weeks. We make the following suggestions for resources to will help you learn programming.
There are many other online resources for learning programming, and we encourage you to seek them out yourself!
If you are an advanced programmer, we recommend that you take the more advanced two-course series, Bioinformatics Algorithms (Part 1)
and Bioinformatics Algorithms (Part 2)
The class will offer two ways of learning the material. In addition to a collection of lecture videos, the primary content for the course is the textbook Bioinformatics Algorithms: An Active-Learning Approach, by Phillip Compeau & Pavel Pevzner. (Purchasing a copy of this textbook is optional.)