The course introduces rational design and evolutionary methods for engineering functional protein and nucleic acid systems. Rational design topics include molecular modeling, positive and negative design paradigms, simulation and optimization of equilibrium and kinetic properties, design of catalysts, sensors, motors, and circuits. Evolutionary design topics include evolutionary mechanisms and tradeoffs, fitness landscapes, directed evolution of proteins, and metabolic pathways. Recent progress in machine learning for protein design will also be discussed. Assignments require computer programming, with Python being the language of instruction.