Biomedical Informatics 214:
Representations and Algorithms for Computational Molecular Biology
(also listed as Bioengineering 214, Computer Science 274 and Genetics 214)
Description | Staff | Announcements / Discussion | Units | Grading | Code Policy | Exams | Late Policy | Partner Policy | Honor Code | Auditors | Prerequisites | Computer Resources | Accessibility | Textbook | Note on Comp Bio Courses
Professor of Bioengineering, Genetics, & Medicine (and Computer Science by courtesy)
russ.altman at stanford.edu
Sections: A few Fridays, 3:15pm-4:05pm, Gates B3
Week 1 (September 26): Python Tutorial 1 (of 2) - Basic syntax and usage
Week 2 (October 3): Python Tutorial 2 (of 2) - Slightly more advanced topics
Department of Bioengineering
Shriram Center, 443 Via Ortega Room 213
Office Hours: Mondays, 2:30-3:30 PM, Medical School Office Building X237
Office Hours: (starting October 28th)
Tuesdays, 1:30-2:30 PM, Medical School Office Building, X237
Simulcasted using Google Hangouts
Office Hours: Wednesdays, 1-2 PM, Location:
- Oct 1 and Oct 8: Medical School Office Building X138
- Oct 22 and after: Medical School Office Building X237
Change: Friday Oct. 17: 3-4 PM, MSOB X237
Office Hours: Fridays, 3-4 PM, Medical School Office Building X237
Change: Wednesday Oct. 15: 1-2 PM, MSOB X237
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.
Office Hours: Tuesdays, 9:50am-10:50am, MSOB X271
Office Hours: Wednesdays, 10:30am-11:30am, Huang 16
Office Hours: Thursdays, 2:15pm-3:15pm, MSOB X275
Office Hours: Fridays, 9am-10am, MSOB X275
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.
- 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
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)
- Last name A - F: Alway M208Last name G - Z: Alway M114
Late Policy: (top)
The clock runs the same for everyone, even those who join the course late.
Partner Policy: (top)
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 assignments 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)
- 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 :)
- 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 use your SUNet ID. If you don't have a SUNet ID, see http://sunetid.stanford.edu
- Make sure that you are registered for the course on Axess so that you will receive email announcements sent to the course list
- You will need to have access to email, the course website, and the Stanford FarmShare computing resource. All of these resources are available at Stanford computer labs (such as at Sweet Hall) as well as through remote access (SSH or VPN).
corncluster is available for running compute-intensive jobs for the course. To log in to the
corncluster machines, use a secure shell (ssh) client.
corn. Putty will tell you if there was an error.
ssh -X email@example.com
scpyou can transfer a file, assignment.zip with:
$ scp assignment.zip firstname.lastname@example.org:~/
Students with Documented Disabilities: (top)
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: 0521629713'''
Other 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 http://www3.interscience.wiley.com/cgi-bin/homepage/?isbn=0471721204 via the campus network.
Note on courses in computational biology: (top)
- BMI 214 (also listed as CS 274, BioE 214, Genetics 214) 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 molecular 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.
There are several others courses at Stanford that may cover some overlapping material, but every instructor explains things differently and with different emphasis (all opinions are mine, and they may be wrong--I haven't taken any of these classes, just read about them and talked a bit to instructors, so talk to someone who has!)
- BMI 217 (Atul Butte, Translational Bioinformatics): covers some similar topics in RNA expression analysis (clustering/classification) and genome analysis, but links these more to clinical concepts, and also has an independent project at end. Students routinely take this class and BMI 214.
- BMI 215 (Nigam Shah, Data Driven Medicine): covers some Natural Language Processing, but not at the molecular level, also covers ontologies but this is not a focus of our course. Students routinely take this class and BMI 214.
- BMI 258 (Biochemistry 158, Doug Brutlag, Genomics, Bioinformatics, and Medicine) is an introduction to genomics, bioinformatics and applications to medicine, and goes into more detail on the clinical implications of genomics. http://bmi258.stanford.edu/
- BMI 231 (Biochemistry 218, Doug Brutlag, Computational Molecular Biology): (no longer offered, but course videos and lecture slides are available) this is more for tool users, but does cover some similar issues in genomics, sequence and structure analysis, in a complementary way to this class. No programming required. Students who have taken this and BMI 214 report some overlap, but very different perspectives provided. http://bmi231.stanford.edu/
- BMI 262 (CS 262, Serafim Batzoglou, Computational Genomics): covers very similar concepts more deeply in sequence analysis from a computer science perspective (dynamic programming alignment, HMM, Gibbs sampling, context-free grammars, phylogenetics), but does not overlap very much in 3D structure or function analysis. Students who have taken this and BMI 214 say that this is more rigorous in terms of algorithms, complexity, etc...and so somewhat complementary.
- BMI 273A (CS 173, CS 273A, Serafim Batzoglou & Gill Bejerano, Computational Tour of Human Genome): both cover details of genome sequencing, genome organization and informatics analysis. Programming encouraged but not required. I do not have data about overlap of this class and BMI 214.
- Genetics 211 (Mike Cherry & Gavin Sherlock): This is an intro to genomics through Python programming and many genetics students have told me that it is a great warmup for BMI 214 if you are not as strong at programming.