Biology has transitioned from a descriptive enterprise to a quantitative science. This transition has been driven by a combination of low cost sequencing technology and radical reductions in the cost of computing. Indeed, modern biology relies heavily on computational artifacts, both code and data, to produce scientific results (e.g., genomic data sets and computational tools for biochemical pathways).

This course is intended for biology students who want to create reproducible and extensible computational artifacts for the quantitative analysis of biological systems. The course focuses on applications drawn from molecular and cell biology (MCB).

The course teaches skills in biochemical modeling and software engineering that are needed to work in biological sciences in the 21st century. The software skills include: programming basics, databases, and software process (e.g., design, testing, software packaging). No prior exposure to programming is required (although students who lack programming experience will find the course more challenging).

The course is more software intensive than AMATH 301, but the course does not cover the breadth of numerical techniques taught in AMATH 301. The course does not include the breadth of concepts and techniques covered in a computer science introduction to programming, such as CSE 142CSE 160, and CSE 190PRather, the course focuses on practical skills for building software that operates efficiently and can be used and extended by others.

The course is open to undergraduates and graduates.


The course will teach the following technical skills.

Biological modeling

  • Apply statistical approaches to answer questions in molecular and cell biology (MCB).
  • Construct commonly used data visualizations in MCB.
  • Model dynamics in biochemical systems using differential equations.

Software engineering

  • Learn to program in MATLAB.
  • Learn to program in python.
  • Apply object oriented design to writing python programs.
  • Understand and use test driven development, code reviews, and other elements of software engineering process.
  • Design and develop a biochemical database that is accessed using the Structured Query Language (SQL).
  • Understand tools for working in teams: GitHub, build systems, virtualization, and open source projects.


  • Introductory molecular biology (or equivalent knowledge of cell structure, DNA replication, transcription, and translation) (e.g., BIOEN 315).
  • Differential calculus (and preferably some exposure to differential equations).
  • Introductory statistics, especially univariate statistics, distributions, and linear regression.