A programming language for composable DNA circuits
A programming language for composable DNA circuits

Recently, a range of information-processing circuits have been implemented in DNA by using strand displacement as their main computational mechanism. Examples include digital logic circuits and catalytic signal amplification circuits that function as efficient molecular detectors. As new paradigms for DNA computation emerge, the development of corresponding languages and tools for these paradigms will help to facilitate the design of DNA circuits and their compilation to nucleotide sequences.

We present a programming language for designing and simulating DNA circuits in which strand displacement is the main computational mechanism. The language includes basic elements of sequence domains, toeholds and branch migration, and assumes that strands do not possess any secondary structure. The language is used to model and simulate a variety of circuits, including an entropy-driven catalytic gate, a simple gate motif for synthesizing large-scale circuits and a scheme for implementing an arbitrary system of chemical reactions. The language is a first step towards the design of modelling and simulation tools for DNA strand displacement, which complements the emergence of novel implementation strategies for DNA computing. 

DNA Strand Displacement Simulator (2014-0219)



  • DSD was developed by Matthew Lakin, Filippo Polo, Simon Youssef, Kathryn Gray, Rasmus Petersen and Andrew Phillips at Microsoft Research.
  • Luca Cardelli assisted with extensive testing of DSD together with the design of the DSD language. 
  • Neil Dalchau assisted with the development of an ODE solver for DSD.
  • Erik Winfree and his group have provided valuable feedback on DSD, together with Georg Seelig and his group. 
  • The core DSD language was developed in F#.
  • DSD uses Dynamic Data Display for visualising simulation plots.
  • DSD uses Microsoft Automatic Graph Layout for visualising networks.

Publications using DSD

Publications citing DSD