In this chapter, we describe a mixed quantum-classical approach for simulating the dynamics of quantum mechanical phenomena occurring in nanoscale systems. This approach is based on the quantum-classical Liouville equation (QCLE), which prescribes the dynamics of a quantum subsystem coupled to a classical environment. We explain how the QCLE can be solved using a stochastic surface-hopping algorithm and how expectation values of observables can be computed. Schemes for reducing the number of trajectories required in these computations and for ensuring the continuous evolution of the quantum subsystem states along the trajectories are also outlined. To demonstrate the utility of these techniques, we describe two recent applications: vibrational energy transfer in an alpha-helical polypeptide and the field-driven dynamics of a plasmonic metamolecule.