BE/CS/CNS/Bi 191ab: Biomolecular Computation

Professor: Erik Winfree

Winter term teaching assistants: Robert Johnson, Sam Clamons, Andrés Ortiz-Muñoz, and Lily Chen

Description from the course catalog:

BE/CS/CNS/Bi 191 ab. Biomolecular Computation. 9 units (3-0-6) second term; (2-4-3) third term. Prerequisite: none. Recommended: ChE/BE 163, CS 21, CS 129 ab, or equivalent. This course investigates computation by molecular systems, emphasizing models of computation based on the underlying physics, chemistry, and organization of biological cells. We will explore programmability, complexity, simulation of and reasoning about abstract models of chemical reaction networks, molecular folding, molecular self-assembly, and molecular motors, with an emphasis on universal architectures for computation, control, and construction within molecular systems. If time permits, we will also discuss biological example systems such as signal transduction, genetic regulatory networks, and the cytoskeleton; physical limits of computation, reversibility, reliability, and the role of noise, DNA-based computers and DNA nanotechnology. Part a develops fundamental results; part b is a reading and research course: classic and current papers will be discussed, and students will do projects on current research topics. Instructor: Winfree.

**Time & Place:**

BE/CS 191a: Winter 2017, Annenberg 105, Tu & Th 10:30am-11:55am

BE/CS 191b: Spring 2017, Annenberg 314, TBA

**Office hours:**

Please start your homework set early, and come to the first relevant TA session.
The homework will usually be too much to do at the last minute, and planning for this is your responsibility.

TAs (191a only): Mondays 7:30-8:30pm and Tuesdays 4-5pm in Annenberg 107 (Jan 31 & Feb 28 in Annenberg 106)

For simple and quick questions, TAs can also be reached by email at cs191_ta * dna.caltech.edu, but may not be available to answer substantial questions in a timely manner. Non-trivial questions should be deferred to and answered at the office hours. Even if you know them, please do not use the TAs' personal email addresses; it is important that all TAs be kept in the loop on class-related issues.

Professor (Winter term only): Tuesdays 1-2pm in Moore 204. This is only for things that can't be handled by the TAs, such as administrative issues. Email is answered, though often not quickly, at winfree * caltech.edu.

**Textbook:**

None. Please attend class. Everything you need to know should be presented there. The references suggested below are optional further reading, but neither sufficient nor necessary.

**Syllabus for 191a:**

The syllabus as presented gives you a rough idea of what will be in
the class, but it is subject to change in detail. The topics and
references should be considered final only on the day of the lecture,
and after. Prior to that, the topics and links may be revised.

- Introduction and overview -- 1 lecture
- Jan 5: computation in the cell and the promise of molecular programming.

- Chemical reaction networks (CRNs) -- 6 lectures (tools:
Mathematica (download, tutorial) using the
CRN Simulator package.)
- Jan 10: continuous mass action model, kinetics, analog computation.

[example LBS file for analog computation]; [optional refs on mass action, analog computation] - Jan 12: digital circuits using mass action, signal loss and restoration, digital abstraction, logic gates. (part 1)

[optional refs on digital circuits and an alternative design] - Jan 17: digital circuits using mass action, signal loss and restoration, digital abstraction, logic gates. (part 2)

[example LBS file for digital computation] - Jan 19: mass action dynamical systems for oscillators, chaos, and everything.

[optional refs on dual-rail linear and general dynamical systems, and Korzuhin's Theorem.] - Jan 24: discrete stochastic model, kinetics and probabilities, computing with counts (part 1).

[optional refs on stochastic, computing, more computing, and even more computing.] - Jan 26: discrete stochastic model, kinetics and probabilities, computing with counts (part 2).

- Jan 10: continuous mass action model, kinetics, analog computation.
- Biochemistry & combinatorial CRNs -- 4 lectures (tools: Visual DSD BETA)
- Jan 31: the central dogma and enzymes of molecular biology, computing with strings.

[optional refs on the central dogma (classic paper), example biochemical computing machines, a general CS formalism for biochemistry.] - Feb 2: engineering synthetic gene regulatory networks (part 1), model, digital abstraction, and feedforward circuits.

- Feb 7: engineering synthetic gene regulatory networks (part 2), iterative sequential circuits, bistable memories, latches, and oscillators.

[optional refs on a genetic bistable switch, a genetic ring oscillator.]

[ Mathematica notebook for this week's lectures. You might need to control-click this to download it rather than view it. It should have the extension ".nb" .] - (not covered in 2016): cell-free transcription-translation (TX-TL) circuits, transcription-degradation (TX) circuits, and polymerase-exonucleate-nickase (PEN) circuits.

[optional refs on the PURE system, TX-TL circuits, bistable TX circuit and oscillatory TX circuits, oscillatory PEN circuit, bistable PEN circuit, a pattern recognition design, and the DACCAD design simulator.] - Feb 9: neural network computation and biochemical networks.

[optional refs on neural networks, genetic regulatory networks, and transcription-degradation circuits.]

- Jan 31: the central dogma and enzymes of molecular biology, computing with strings.
- Nucleic acid circuits -- 4 lectures (tools: Visual DSD BETA and NUPACK)
- Feb 21: DNA reassociation kinetics, biophysics, and DNA strand displacement cascades (part 1).

[optional refs on 3-way and 4-way branch migration including mismatches and toeholds, also secondary structure kinetics and thermodynamics, and finally abstract domain-level programming.] - Feb 23: DNA reassociation kinetics, biophysics, and DNA strand displacement cascades (part 2).

- Feb 28: implementation of arbitrary circuits and CRNs using domain-level DNA strand displacement systems.

[optional refs on small logic cascades, catalytic cycles, large logic cascades, neural networks, and CRN-to-DNA compilation.] - Mar 2: implementing efficient algorithmic behavior: stack machines with DNA strand displacement cascades.

[optional refs on stack machines and even more]

- Feb 21: DNA reassociation kinetics, biophysics, and DNA strand displacement cascades (part 1).
- Passive self-assembly -- 2 lectures (tools: xgrow or ISU TAS)
- Mar 7: Introduction to DNA self-assembly [lecture slides, 71 MB] [optional refs on DNA experiments for Sierpinski patterns and copying and counting from a seed]
- (not covered in 2017): 1D & 2D tile self-assembly, combinatorics, kinetics, and the abstract Tile Assembly Model (aTAM).

[optional refs on DNA computing & linear self-assembly, and self-assembling squares.] - Mar 9: algorithmic patterns and shapes in the abstract Tile Assembly Model (aTAM).

[optional refs on self-assembling arbitrary shapes, and a review paper.] - (not covered in 2017): the kinetic Tile Assembly Model (kTAM): thermodynamics and kinetics, nucleation, error rates and phase diagram.

[optional refs on simulation, nucleation theory, self-healing and proofreading.]

- Active self-assembly and molecular robots -- 0 lecture (tools: TBA)
- (not covered in 2017): Experimental molecular robots and the theoretical NUBOT model. fast algorithmic developmental growth.

[optional refs TBA]

- (not covered in 2017): Experimental molecular robots and the theoretical NUBOT model. fast algorithmic developmental growth.
- Amorphous computing and synthetic biology -- 0 lectures (tools: gro)
- (not covered in 2017) cell growth and genetic regulatory circuits, cell-cell communication, and pattern formation.

[optional refs for simulation, and genetic networks] - (not covered in 2017): developmental programs, reaction-diffusion systems, and amorphous computing.

[optional refs for reaction-diffusion patterns, programming reaction-diffusion patterns, and amorphous computing.]

- (not covered in 2017) cell growth and genetic regulatory circuits, cell-cell communication, and pattern formation.

Homeworks

The expectation is that homework will be handed out in class every other Thursday, and due by email as a single PDF file before 11:59pm on Wednesday 13 days thereafter. I expect to assign five homework sets.

**Grading Policy for 191a:**

There will be roughly one problem per class lecture, with homework sets due roughly every other week.
There is no midterm or final.

__Homeworks:__ Homeworks will be graded on a 0-10 scale for each problem.

__Late policy:__ Late homework will be
penalized by 10% per day, e.g. if turned in 24 hours late, the score will be multiplied by 0.9 after
grading, and if turned in 48 hours late, the penalty will
be 20%. The penalty increases linearly per hour, accumulating 10% per day, until a 9 day late
homework's score is multiplied by 0.1, and a 10 day late homework gets
no credit.
*The homework sets are hard, but ample time is given. Start as soon as they are handed out.*

__Extension policy:__ Extensions may be granted by the professor only, at his discretion, for
interfering situations that cannot be planned for, e.g. a health problem with a doctor's note, last-minute
travel for interviews, etc. Travel that can be planned well in advance (e.g. a sports competition) is less likely
to merit an extension, since starting and completing homework early should be an option.

__Grade composition:__ Your class grade will be based on homeworks only.

__Collaboration policy:__ For all problem sets, you may discuss
problems with other students prior to writing anything down, but what
you turn in must be entirely written by you, by yourself, including
any program code. That is to say, the "50 foot rule" applies here explicitly for both program code and
mathematical derivations, and in spirit applies to other aspects of your
class work.
For more detail and discussion, see
the nice write-up for CS11 or this more recent
flier
.

**Accompanying Files for Homework:**

For homework 1: AnnotatedExamples.nb provides some useful hints for how
to use the CRN Simulator package in Mathematica. Note that some
browsers will download the package as AnnotatedExamples.nb.txt, in
which case you will need to rename it after download. A worked out
example for how to build complex CRNs from modular components is also
available: DigitalCircuits.nb.
Feel free to use any of this code while answering the homework, or
feel free to develop your solutions from scratch.

For homework 2: The notebooks for homework 1 have been slightly
updated to correct oversights; if you are reviewing them, it wouldn't
hurt to re-download them. New for homework 2, question 1, you will need to understand and explain
DynamicalSystemsNoNotes.nb.
For question 2, AnnotatedExamplesSSA.nb
provides some useful hints for how to use the CRN Simulator package
for stochastic simulations.

For homework 3: For homework 3, problem 1, please also note that the initial condition #C = 1 is also required.
For question 3, you will need to understand and augment
GeneticRegulatoryNetworksNoLTU.nb.

For homework 4, problem 2: stack_machine.dna, stack_species.pdf, stack_machine.pdf. It is suggested that you download and annotate stack_species.pdf, and include that in your homework solution.

For homework 4, problem 3: Here's why we recommend using ISU TAS.
Our own xgrow
used to be a breeze to install and run. It still is, on Linux. On Mac OS X, it is a breeze if you have installed
XQuartz and
XCode and are comfortable with the command-line compiler. If that's you, just download the xgrow tarball, unpack, compile, and run. (You may need to reboot your computer after installing XCode and Xquartz.)

Otherwise, it may be easiest to use a pre-compiled version of xgrow on a virtual machine. For this, you still need to do some work, for which a fast internet connection is an absolute necessity. You will need the following:
compressed VirtualBox disk image (1.3 GB!!! could take an hour to download),
software such as
7-zip or
Keka that is capabale of unpacking the compressed image,
and
VirtualBox itself.
After you unpack the disk image, you will get a directory "be191-xgrow" that will contain the 4.5GB file "be191-xgrow.vdi".
To use that disk image, you must start VirtualBox.app, click on "new"
to create a new virtual machine, use any name you want, Microsoft
Windows / Windows XP (64 bit), and other defaults until you get to the
choice of "hard drive", at which point you should select
"be191-xgrow.vdi". Then create the machine and power it up. The password is "xgrow".
There is a README on the Desktop, and xgrow is pre-compiled in a subdirectory of the same name.
Click on the menu in the upper left to start a Terminal Emulator. To verify that xgrow runs, type "cd xgrow", hit return, then type "./xgrow tilesets/BinaryTree.tiles", and hit return. A simulation should run, and you can hit "quit" in that window when it's done. Other example commands can be found in the text file "example-runs". Please look at "BusyBeaver3Square.tiles" for examples of using names, rather than numbers, for bond types.

**Helpful background:**

- Python, Matlab, or Mathematica programming
- Digital AND OR NOT circuits
- Finite State Machines and Regular Languages
- Turing machines & Register machines
- Cellular automata
- Chemical reaction networks; mass-action and stochastic kinetics and thermodynamics
- Basic molecular biology, central dogma enzymes, cytoskeleton
- DNA secondary structure, folding kinetics and thermodynamics, hybridization & dissociation rates, toeholds, 3-way & 4-way branch migration

**Description for 191b:**

In the spring term, we will begin by reading and discussing classic
and contemporary research papers on biomolecular computation.