Course Materials


Collaboration policy


Optional textbook (also available for free online through the Brown Library)

Late Policy

All assignments must be turned in by 11:59 PM on the day they are due. Each student has three late days to use during the semester. Late days may be used on homeworks or programming projects, but no more than two late days may be used on a single assignment. Once your late days are exhausted, you will incur a 20% penalty per day after the deadline.

Frequently Asked Questions

Who takes the course?

As an interdisciplinary course, CS181 attracts a diverse group of students. Past students have ranged from sophomores concentrating in Computer Science and Computational Biology through Ph.D. students in Computer Science, Applied Mathematics, and Biology. The course staff will do its best to ensure that all students have a chance to succeed. Please do not hesitate to talk to a member of the course staff if you have trouble deciding whether CS181 is a good fit for you.

What biology background is needed?

There are no biology prerequisites, and no prior biology knowledge is assumed; the material that you need to know will be covered in class. Students whose backgrounds are in the life sciences, however, will be expected to dig deeper into the biology.

What computer science and mathematics background is needed?

Officially, one of CS16, CS18, or CS19 (i.e. a yearlong introduction to computer science). This can be waived by the instructor (especially for life science students). Students in the course generally have some prior exposure to basic concepts of discrete math (graphs, recurrence relations), discrete probability (random variables, independence), and algorithms (big-O notation, pseudocode).

What programming background is needed?

This is not a programming-heavy course, although there will be programming assignments. The goal of these assignments is to gain a deeper understanding of the algorithms by implementing them and testing them on real data. Thus, some rudimentary programming skills (arrays, loops, functions, etc.) are required. In recent years, we have been experimenting with a new language for scientific computing called Julia (see above) for the programming assignments, although we also allow students to do programming assignments in other languages.

I am experienced in molecular biology, but do not have any formal mathematical or computational training. Can I take the course?

This year, we are attempting to make the course genuinely accessible for students without a computer science background (there will be separate homework questions for biology students, for example). At the same time, all students in the class should be prepared to complete medium-scale programming assignments, learn some new mathematical concepts, and reason about algorithms in a rigorous manner. Please reach out to a member of the course staff if you are unsure of your background.

I am interested in learning how to analyze *-Seq data from my (advisor's) lab. Will this course help me?

Possibly, but perhaps not in the way that you expect. The goals of CS181 are to teach the algorithmic concepts that underlie a wide variety of software that is used to analyze biological data, particularly in genetics, genomics, and proteomics. The course will not teach you how to use any particular biological software package. Rather, you will learn how this software works, and more importantly for the long-term, how to think about biological problems in a computational way. Thus, when the latest and greatest technology for measuring DNA/RNA/protein is released in 5 or 10 years' time, you will have some algorithmic skills to work with this data, without waiting for the rest of the community to develop tools. If your interests are more narrowly focused on a particular, near-term application, another course might be more appropriate.