Viruses are remarkable examples of order at the nanoscale. The capsids of many viruses, enclosing and protecting their genomes, are organised in lattice-like arrangements with overall icosahedral symmetry. Mathematical techniques from group, graph and tiling theory can therefore be used to characterise their architectures. In this talk, I will introduce our mathematical approach to the modelling of viral capsids and its applications in vaccine design. I will then present our Hamiltonian path approach to the modelling of genome packing and virus assembly that underpins the discovery of an assembly instruction manual in a wide range of viruses, including Picornaviruses, Hepatitis C and Hepatitis B virus. Based on these results, I will then construct fitness landscapes in order to model viral evolution and compare different forms of anti-viral therapy.