Nonequilibrium Molecular Dynamics Theory, Algorithms and Applications