ECS 289A: Theory of Molecular Computation
Winter 2018

Course announcement (PDF)


Dave Doty
Office: 2069 Academic Surge
Office hours: Tues 2:10-3:00pm

Course objective

To study the fundamental abilities and limits to the engineering of automated (i.e., computational) molecular systems, in a mathematically rigorous way.


ECS 120 or equivalent (familiarity with Chapters 1,3,4,7 of Introduction to the Theory of Computation by Sipser).

Prior experience with probability theory is useful; in particular, Chapters 1-2 of Probability in Computing: Randomized Algorithms and Probabilistic Analysis, by Mitzenmacher and Upfal.


The Piazza page for the course can be used to ask questions about the course and homework. Use access code "ecs289a" to enroll. Please read this warning about Piazza as well.


lecture notes (note that these are not comprehensive since I often take material straight from a paper)


There is a Canvas page with the homework posted.


Project ideas


Tuesday and Thursday, 12:10-1:30pm, Olson 144

Algorithmic tile self-assembly

  1. Tues, Jan 9, 2018
    Introduction to abstract Tile Assembly Model (aTAM)
    aTAM video introduction
    ISU TAS simulator
    pyTAS (newer version, easier to install, fewer features, likely to have more bugs)
  2. Thurs, Jan 11, 2018
    tile complexity of assembling squares
    O(log n) tile types for assembling an n x n square
    paper: The Program-Size Complexity of Self-Assembled Squares
  3. Tues, Jan 16, 2018
    formal definition of the aTAM
  4. Thurs, Jan 18, 2018
    Brief introduction to Kolmogorov complexity
    Ω(log n / log log n) tile types required to assemble an n x n square
    O(log n / log log n) tile types suffice to assemble an n x n square
    paper: Running Time and Program Size for Self-assembled Squares
  5. Tues, Jan 23, 2018
    assembling scaled-up version of any finite shape from optimal number of tile types
    paper: Complexity of Self-Assembled Shapes