Carnegie Mellon University

Fundamentals of Bioinformatics

Course Number: 02-604

How do we find potentially harmful mutations in your genome? How can we reconstruct the Tree of Life? How do we compare similar genes from different species? These are just three of the many central questions of modern biology that can only be answered using computational approaches.

This 12-unit course will delve into some of the fundamental computational ideas used in biology and let students apply existing resources that are used in practice every day by thousands of biologists. The course offers an opportunity for students who possess an introductory programming background to become more experienced coders within a biological setting. As such, it presents a natural next course for students who have completed 02-601.

Key Topics:

Identifying replication origins in bacterial genomesRandomized algorithms for motif finding in DNA sequences

Graph-based algorithms for genome assembly

Brute-force algorithms for antibiotic analysis

Dynamic programming algorithms for sequence alignment

Combinatorial algorithms for genome rearrangement analyses

Evolutionary tree construction algorithms

Clustering algorithms for gene expression analyses

Combinatorial pattern matching algorithms applied to DNA read mapping

Hidden Markov models for comparing rapidly mutating genetic sequences

Statistical analysis for computational proteomics

Semester(s): Spring
Units: 12
Prerequisite(s): A solid background in introductory programming (such as that provided by 02-601) is essential. Some knowledge of basic algorithms and data structures is also helpful. Background biology knowledge is not needed.

Textbook(s):

Course Companion

Sample Lecture Recordings

Learning Objectives

This course has two primary goals:

1. Hack a large selection of algorithms that are fundamental to an understanding of modern
computational biology.
2. Obtain a practical "toolkit" for computational biology by learning how these algorithms are
applied in existing software resources.

Along the way, the course offers a setting for students to take the next steps to become much
stronger programmers.

Assessment Structure:

  • Comprehension quizzes. (10% of grade)
  • Weekly write up and participation (10% of grade)
  • Programming assignments. (40% of grade)
  • Bioinformatics Software challenges. (10% of grade)
  • Midterm. (10% of grade)
  • Final exam (20% of grade)