Please see the latest announcements posted on the Announcements tab.


This course teaches algorithms for the challenges of rational drug design. Some of the most challenging and influential opportunities for computer science arise in developing and applying algorithms to understand molecular interactions in the cell. This course introduces computational structural molecular biology, which is the science that explores the geometry, physics, and 3-dimensional structures of molecules, such as proteins, that are the targets of drugs. The course will teach students about computer systems and algorithms that are useful in structural biology, proteomics, and drug design. We will also learn about computer visualization of molecular structures such as proteins and DNA, and geometric algorithms for analyzing and designing molecular structures.

A wealth of interesting computational problems arise in methods for discovering new pharmaceuticals. Among these problems are: identifying the low-energy conformations of molecules, interpreting protein NMR (nuclear magnetic resonance) and X-ray data, inferring constraints on the shape of active drug molecules based on measurements of activity of related drug molecules, docking candidate drug molecules to known protein targets, and the design of novel proteins.

Computational structural biology is at the core of scientific computation, and both solves real biological problems, and contributes back to computer science. In this course, we will introduce students to computational techniques including statistical methods, approximation algorithms, AI techniques, numerical methods, computer algebra, computational geometry, optimization, branch and bound algorithms, expectation/maximization, graphical models, and graph algorithms. In this field, computational techniques are central, and the applications present intriguing problems to computer scientists who design algorithms and implement systems.

Students should know how to program, typically by having taken a computer science course in programming. Some familiarity with algorithms is helpful. Some knowledge of basic molecular biology, either through a course, or at least at the level of AP Biology, will be necessary to understand the course material. I also welcome students from a life sciences background, provided they have some experience in programming and are willing to do some extra reading about algorithms.