Solo-Group: Molecular Programming and Unconventional Computing

Hiring

  • Seeking talented graduate students and postdocs with an interest in one or both of the following: (1) CS theory/discrete math/algorithms, or (2) (wet lab) molecular biology. Postdoc job posting (pdf)
  • Also seeking laboratory technician: Workday job posting

Recent News

Spring 2024: Welcome to Tony and Hamidreza who have joined our research group!

October 2023: David is named Schmidt Science Polymath.

January 2023: Congratulations to Boya and Cameron on starting new postdoctoral positions in Caltech!

All news...

Research: Chemical and Unconventional Computation

There are currently only three kinds of computing hardware prevalent on Earth: electronic computers, living brains, and chemical regulatory networks, the last occurring within every cell in every living organism. Computer Science has traditionally focused on the first, with recent advances on the second, but the algorithmic principles of the third have remained largely unexplored.

  • Molecular programming: engineering smart molecules

    Using DNA hybridization and strand displacement cascades we build molecular interactions for synthetic biology, nanotechnology, and bioengineering in our wet-lab. We use chemical kinetics and thermodynamics as programming languages.

    How is molecular programming different from synthetic biology? While synthetic biology typically adapts complex evolved and ill-understood biological parts (e.g. enzymes), molecular programming aims to build functionality completely from first principles.

    [Molecular Programming Community: organizations, conferences, podcasts]

  • Unconventional computing: models of chemical, reversible, and quantum computation

    We use formal models to discover the potential and limits of chemical information processing. Many of our these results generalize beyond chemistry to "extreme" distributed computing, where computation is an emergent phenomenon.

    For low energy computation and for quantum computing, computation must "look similar" both forward and backward in time (reversible computation). We also study such computation and develop tricks to optimize it.