A Language Design Proposal for Bio-Programming
The future is here! Researchers in biology and bio-engineering are currently working very hard on a new strand of computational devices that are based on biochemistry or biomechanics instead of semiconductor technology. “Program bacteria to make them perform computations” would be the slogan.
For example, the Russian group of MIPT has published an article in Nature (http://www.nature.com/nnano/journal/v9/n9/full/nnano.2014.156.html ) in which they describe their design of nanoparticles that are supposed to be injected into the body. What makes the particles special is that they are “programmed” (with boolean logic!) to “fit” particular cells of the body. Obvious applications are a very precise delivery of molecular payloads such as drugs that will only affect tumor cells and leave the good cells untouched.
The computer science aspect of this research is rather limited. However, recently a Science article written by a group at MIT describes an approach where the existing processor-design language VeriLog was used to describe computational circuits (in logic terms, this is what VeriLog is about) which are subsequently compiled into genetic material that can be used to reprogram bacteria. (http://news.mit.edu/2016/programming-language-living-cells-bacteria-0331). The result is that these bacteria are turned into biological devices that execute the envisioned circuits. Notice that this result is already much more interesting from a computer science perspective because of the fact that VeriLog is an actual (low level) language!
This means that what has happened in the 40ies and 50ies of the previous century is happening all over again but with living material instead of silicon technology. We can start fantasising about high level programming languages to describe bio-computations. But how will these look like?
The goal of this topic is to evaluate the work done in this field so far from a programming language point of view. What kind of language features of existing programming languages will be (re)usable to program bio-computers? For example, it is unclear whether there is such a thing as “assignable memory” in the current state of the art. Can we express recursion with bio-computers? Students interested int his topic are not afraid of a challenge. E.g. some interdisciplinary reading will need to be done (possibly without understanding all the details) in order to understand the “hardware" we are talking about. The thesis could result in a concrete mini-language that is compiled into a bio-virtual machine that simulates the bio-hardware.