Home Page

Biomedical Informatics 214:
Representations and Algorithms for Computational Molecular Biology
(also listed as Computer Science 274 and Genetics 214)

Staff | Announcements / Discussion | Description | Units | Grading | Code Policy | Exams | Late Policy | Partner Policy | Honor Code | Auditors | Prerequisites | Computer Resources | Accessibility | Textbook | Note on Comp Bio Courses


Russ B. Altman
Professor of Bioengineering, Genetics, & Medicine (and Computer Science by courtesy)
russ.altman at


Lectures: Tuesdays and Thursdays, 4:15-5:30, Huang Engineering Center 18

Sections: A few Fridays, 4:15-5:05, NVIDIA Auditorium (Huang Engineering Center)
Week 1 (September 27): Python Tutorial 1 (of 2) - Basic syntax and usage
Week 2 (October 4): Python Tutorial 2 (of 2) - Slightly more advanced topics

Course Coordinator:

Tiffany Murray (tiffany.murray at
Department of Bioengineering
Clark S170, MC: 5444

Teaching Assistants:

David Poznik
Office Hours: Mondays, 4:15-5:15pm, Littlefield 301 (southeast corner)
Note: Littlefield is located near the oval. If 301 is occupied, there will be a note on the door directing you to another room on the third floor.

Collin Melton
Office Hours: Tuesdays, 9:50am-10:50am, MSOB X271

Kun-Hsing Yu
Office Hours: Wednesdays, 10:30am-11:30am, Huang 16
For the week of 12/2-12/6 only: 12/4 (Wednesday) 2:00pm-3:00pm, MSOB X271

Sameer Arya
Office Hours: Thursdays, 2:15pm-3:15pm, MSOB X275

Linda Szabo
Office Hours: Fridays, 9am-10am, MSOB X275

Contacting the TAs: The staff mailing list is biomedin214-aut1314-staff at This list is for personal matters only. The staff will not respond to non-private questions on the mailing list. Please post them to Piazza instead (see below).

Announcements / Discussion:(top)

All announcements will be posted as Instructor Notes on the Piazza forum:
Sign up now.

Please post questions about assignments to the Piazza forum so that all students can benefit from the answers. Students are encouraged to answer each others' questions, and participation points will be awarded accordingly. The TAs will peruse these pages to answer clarification questions and to endorse student answers.

Description: (top)

This course will introduce the basic computational issues and methods used in molecular biology, combining core lectures, programming assignments, with midterm and final. The course will introduce and use biological data sources available on the World Wide Web. Topics will include basic algorithms for alignment of biological sequences and structures, as well as more advanced representational and algorithmic issues in structure and sequence computation. These include, for example, dynamic programming algorithms for alignment, structural superposition algorithms, computing with distance information, 3D motif definition and computation, hidden Markov models, phylogenetic trees, statistical feature detection, genetic algorithms, design of data resources, automated analysis of biological literature, database integration, and collaborative environments for supporting biology.


Biomedin 214

  • This course is normally taken for 4 units.
  • It can be taken for 3 units by arrangement with instructor ONLY.

Biomedin 216 [by arrangement with instructor only]
Students must attend all lectures; absences must be approved by the instructor.

  • 1 unit: lectures only
  • 2 units: lectures, assignments, midterm, final

Grading: (top)

The course will be graded by performance on 3 short homework assignments (15%), 4 programming projects (60%), a midterm (10%), a final (10%), and participation (5%).

Participation is based on:

  • attending class. to receive credit for attendance, you must physically sign the sheet. please do not email later to request a retroactive sign-in.
  • asking questions in class. please identify yourself to Dr. Altman.
  • contributing to the Piazza newsgroup by asking and/or answering good questions

Code / Language Policy: (top)

Familiarize yourself with the Code/Language Policy before starting the first programming assignment.

Exams: (top)

Both exams are open-notes. No internet.
Midterm: 6:00-8:00 pm, Monday, November 4 (Week 7) @ LK130.
Final: 12:15-3:15 pm, Wednesday, December 11 @ Alway
Last name A - F: Alway M208
Last name G - Z: Alway M114

Late Policy: (top)

Each student is granted 168 "free" late hours that can be used as extensions for any project or assignment. This is a total of 168 hours for the entire quarter, not per assignment. Late time will be measured with no distinction for weekends or holidays, and will be rounded UP to the nearest integer (thus, 10 minutes late = 1 hour late). After you use up all your free hours, your grade on late projects/assignments will be reduced by 0.5 percentage points for each late hour. So if your project is graded as 85 (of 100) but was turned in 24 hours late (beyond the free 168), we record a 73.
The clock runs the same for everyone, even those who join the course late.

Partner Policy: (top)

For assignments:
Students may discuss and work on problems in groups but must write up their own solutions. When writing up the solutions, students must write the names of people with whom they discussed the assignment.

For programming projects:
Students may discuss ideas with others. However, programs are to be completed independently and should be original work. Code may not be shared. Names of students with whom programming ideas were discussed should be included with assignment and explicitly indicated in the header comments of all source code files.

If you do not list a particular student, this will be interpreted as an attestation that you did not speak with this student about the assignment or project.

Honor Code: (top)

Students must abide by the terms of the Stanford Honor Code.

Auditors: (top)

Auditors for the course should take it for one unit as BMI 216. This course requires attendance (and sign-in) at each lecture, but does not require completion of homeworks or exams. Auditors who want to sit-in on the course but not be officially signed up for 1 unit of credit should get approval from Dr. Altman, and will also be asked to attend all lectures and sign-in.

Prerequisites: (top)

  1. Programming skills are required at the level of CS106B or CS106X. This course has a significant programming component, so students should enter it with the ability to create moderately complex data structures and implement algorithms using them. CS161 and CS108 would also be great, but you should be OK without them. Students who have attempted to take BMI214 with just CS106A under their belts have struggled, so caveat emptor. In particular, we highly recommend a good understanding of recursion for the first programming project, and the better a feel you have for classes, functions, and standard data structures (lists, dictionaries/maps, sets, etc), the easier a time you'll have. Acceptable languages are outlined in the code policy. If you're comfortable with the material of CS106B, but have never used Python, you'll be fine. However, we strongly advise that you learn it as soon as possible so that when you're working on the projects, you can focus on the algorithms rather than the syntax. Treat learning Python as your homework for the first week of class! Project 1 can be tricky to debug, and the more comfortable you are with Python, the fewer bugs you'll have to find :)
  2. Biology 40 or equivalent is recommended, since we will quickly move through many biology topics. We recommend that all students page through the Biology Tutorial on the sidebar of this site. For many students, this will be a quick review, but it might take an hour or two for those who do not think about biology very much.

Computer Resources: (top)

You will need to have access to email (be sure you're registered on Axess so that you get email announcements sent to the course list), the course website, and the Stanford cardinal machines. All of these resources are available to Stanford students at Sweet Hall and elsewhere as well as through remote (ssh) access. To log in, you will need to use your SUNet ID. If you don't have a SUNet ID, see ASAP. To log in to the "cardinal" cluster machines, use a secure shell (ssh).
On Windows: You will have to download a terminal emulation that allows ssh. Stanford offers a few free ones here; a popular one is PuTTY. Directions for using Putty to connect to cardinal:
1. Under "Host Name", enter
2. Under "Protocol", choose SSH
3. Press the "open" button.
A terminal window should appear, connected to cardinal. Putty will tell you if there was an error.
On Mac OS X, Unix, Linux:
1. Open a terminal window
2. Type "ssh"
For more information on the various campus computers you can access:
Some course material will be placed on the course website in *.pdf (Adobe Acrobat) format, which allows the documents to be read on multiple platforms. Readers are available for free for Windows, Macintosh and many Unix platforms at the Adobe website.
You will also need to be able to transfer files to the cardinal machines using SFTP. If you are on a computer with command line scp you can transfer a file, with:
$ scp
NOTE: If you are unfamiliar with unix commandline, this is a helpful list of basic commands:
Unix Reference

Or there are GUI sftp clients files available:
For Mac OS X:
There are also other options available from the stanford IT web sites:

Accessibility: (top)

Students who may need an academic accommodation based on the impact of a disability must initiate the request with the Office of Accessible Education (OAE). Professional staff will evaluate the request with required documentation, recommend reasonable accommodations, and prepare an Accommodation Letter for faculty dated in the current quarter in which the request is being made. Students should contact the OAE as soon as possible since timely notice is needed to coordinate accommodations. The OAE is located at 563 Salvatierra Walk; phone: 723-1066; web site

Optional Course Textbook: (top)

Durbin, R., Eddy, S.R., Krogh, A., Mitchison, G., Biological Sequence Analysis : Probabilistic Models of Proteins and Nucleic Acids. 1999, Cambridge Univ Pr. ISBN: 0521629713Other Recommended books:Beazley, David M., Python Essential Reference, 3rd ed., SAMS Publishers, 2006. Chapter 1 is an excellent tutorial and introduction to Python, and overall, this can be a valuable reference when coding.Kohane, I.S., Kho, A., Butte, A.J., Microarrays for an Integrative Genomics (Computational Molecular Biology). 2002, MIT Press. ISBN: 026211271X. Mount, D.W., Bioinformatics : sequence and genome analysis. 2nd edition (July, 2004), Cold Spring Harbor Laboratory Press. ISBN: 0879696877.Bourne, P.E., Weissig, H. (editors), Structural Bioinformatics. 2004, John Wiley & Sons. ISBN: 0471201995. This book is also available from the Wiley Interscience website at via the campus network.

Note on courses in computational biology: (top)

BMI 214 (also listed as CS 274) is this course. It has been taught since 1996 and is an introduction to representations and algorithms for analysis of sequence, structure and function. It requires programming skills and aims to give an understanding of the biological problems that arise, and how algorithms are developed to address them. It does not train students to be expert users of tools, but gives them an in-depth knowledge of some tools and a broad introduction to the technical issues in analysis of biological data. It is taught live on Tuesdays/Thursdays and is also on Stanford Online. Section is taught on select Friday afternoons. Biochem 218 (also listed as BMI 231) is Doug Brutlag's course introducing computational molecular biology, also a number of years old. It is more geared towards gaining an expert understanding of existing tools and databases, and as such complements BMI 214 very nicely. There is no programming required. Most students take both eventually and learn a lot--even the areas where there is overlap are presented differently enough to round out one's understanding. For logistical reasons this course is also being taught on Tuesday/Thursday, and is on Stanford Online.CS 262 (Computational Genomics) is Serafim Batzoglou's course. It focuses principally on algorithms for sequence assembly, analysis and comparison. It will have a strong CS algorithms and data structures component, probably with an element of software engineering as well. It is likely to complement both courses, although in the future, about 1/3 of BMI 214 may overlap sufficiently to require coordination--the part about sequence and string analysis. The coordination has not been done as of now, however. It does not contain much on 3D structure computation and functional computing, judging from the syllabus. The course will be taught live. You should ask Prof. Batzoglou about his plans to offer it via Stanford Online.