Discrete Hamiltonian Systems