Course Details

CS 364: Molecular Programming and Nanoscale Self-Assembly

Algorithms are ubiquitous in nature and are even present in biological and chemical processes. For example, cells receive molecular signals, execute procedures, and send signals of their own, and chemical reactions compute functions by transforming reactants into products according to molecular rules. In this course, we will investigate various mathematical models of chemistry, biology, and nanoscale self-assembly. We will use each model as a programming language to compute molecular algorithms, verify their correctness, and analyze their complexity and robustness. We will also discover that many of these models are algorithmically universal and are equivalent in power to modern programming languages. Prerequisite: Computer Science 200 or 201 and Computer Science 202 (Mathematics 236 will be accepted in lieu of Computer Science 202). No background in biology or chemistry is required, but it may be helpful
6 credits; FSR, QRE; Not offered 2020-2021