The field of nanotechnology aims to understand and control matter at the molecular level. This includes the self-assembly of small inorganic structures such as carbon nanotubes, or synthetic biochemical structures such as artificially synthesized proteins or DNA origami, as well as engineering dynamic systems such as nanoscale motors or circuits.
Since it is very expensive or impossible to directly observe such tiny structures, computational simulations based on the laws of chemistry and physics are key to understanding and predicting these systems. These simulations usually require the use of large supercomputers and benefit from the latest advances in numerical algorithms. Computer science also contributes to nanotechnology by using the software engineering principle of abstraction to develop conceptual tools for reasoning about nanoscale systems as doing computation themselves, also known as molecular computing.