In contrast to adiabatic dynamics, in most photochemical processes, the wavefunction of the entire system spans several PESs. A well-known example of this is fluorescence (i.e., the decay of a system from an excited (Ex) to the ground state (GS) by emitting radiation), and the wavefunction of the entire system cannot be solely described as either the ground or excited state, but can only be expressed as a superposition of these states. These processes, where the electronic amplitudes of the wavefunction evolve over many PESs, are known as nonadiabatic processes (right panel of Fig. ). Furthermore, the nuclear motion that is described by several adiabatic PESs is known as nonadiabatic molecular dynamics (NAMD). Compared to adiabatic dynam-ics, only a few software packages such as Q-Chem 58 and Octopus 33 have implemented direct on-the-fly nonadiabatic molecular dynamics (i.e., the entire NAMD simulation can be performed within the same package). Although direct on-the-fly implementations are scarce, many software packages such as PYXAID, NEWTON-X, 60 SHARC, QMFlows, and LIBRA have implemented various NAMD methods. Also, most of these packages have an interface with traditional electronic structure packages such as Quantum Espresso and others, enabling us to perform NAMD calculations on both molecular and periodic systems. In this review, we present a tutorial and example of the Fewest-Switches Surface Hopping method (a NAMD method), which we implemented in the DFTB+ software package.