My research focuses on two interrelated areas, graph polynomials and DNA self-assembly, which draw on combinatorics, algebra, and topology. Polynomial graph invariants associate a polynomial to each graph that algebraically encodes structural information about the graph, and algebraic frameworks ranging from modules to Hopf algebras provide tools I use to extract combinatorial information from the polynomials. Graph polynomials, and the underlying networks of their domains, encode a wide range of information relevant to various applications, for example: phase transitions in nearest-neighbor complex systems; reliability of electrical and transportation networks; biomolecular computing, DNA sequencing, and self-assembly; epidemiology; and macro-scale behaviors in social networks. Additionally, I have worked for many years developing graph-theoretical optimal design strategies for DNA self-assembly. Carefully designed synthetic DNA molecules can assemble into pre-programmed nanostructures, with applications ranging from controlled drug delivery within the body to nano-scale circuitry and self-assembling robotics. For all DNA self-assembly methods, provably optimal design strategies generally involve linear algebra, geometric and topological graph theory, knot theory, algorithms, and computational complexity analysis. See Self-Assembly Design Strategies Website for further details of this work.