There is great potential for adapting biopolymer molecules such as RNA and DNA to meaningful computational tasks and purposes. Having the ability to program molecules at many orders of magnitude larger scale than at present using new algorithms and software analogues has the potential to change the way we analyze, understand and manipulate molecular systems. It can lead to practical applications of significant benefit to society across a wide range of national initiatives in materials, nano-biotechnology, tissue engineering, regenerative medicine, and many other emerging areas. This ambitious Expedition addresses the exciting challenge of developing initial foundational steps toward creating large-scale molecular programs. This experimental technology Expedition aims to develop a functional abstraction hierarchy to create molecular programming languages, compilers, tools and models; a theoretical framework for the analysis and design of molecular programs; validation of the above utilizing molecular programs with orders of magnitude higher scale of components than at present; and testing of the developed molecular programming technologies on real-world applications. This high-risk/high-payoff research will increase our understanding of the relationship between computation and the physical world, how information can be stored and processed by molecules, and the possibilities and limits of what can be computed and fabricated. Outreach includes summer undergraduate and minority student research fellowships, K-12 visiting days, boot camps, workshops and many other efforts to create a broader molecular programming research community.
The goal of this project was to develop molecular programming as a new subdiscipline of computer science that allows us to reason about molecular programs, to write them in high-level languages, and to compile them to executable molecular systems in the lab. We aimed to study molecular programs based on biopolymers, primarily DNA and RNA in vitro and on genetic regulatory networks in vivo. Together with the main MPP team at Caltech, the UW team focused on four subgoals: (1) development of abstractions, languages, and compilers for describing molecular algorithms and programs, (2) creation of a theoretical framework for design and analysis of molecular programs, (3) experimental validation of our compilers, theory, and characterization tools on large scale biomolecular programs, (4) testing molecular programming for real-world applications, and (5) recruitment and training of a diverse collection of molecular programmers. During the course of this project we developed new design frameworks for implementing signal processing systems in molecular circuits; developed new design processes for implementation computation in multicellular systems; developed new ways of tuning synthetic genetic circuits in bacteria to optimize performance; developed new educational resources at the K-12, undergraduate, and graduate level to teach molecular programming; and trained many students at the intersection of engineering and biology.