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.
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.
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.
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).
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.
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.
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.
Yes! To get it, you will need to do all undergraduate coursework in the class plus a final research project defined in discussions with the professor. Work for the final project consists of (1) a piece of code implementing a new algorithm or analysis or simulation, (2) a short written paper about your project and algorithms/code, and (3) a comprehensive powerpoint and a final project presentation to the class. Please email the professor for more information about this.