This is a talk in two parts. The first part is on evolution of a system under a Hamiltonian. First, a general method for implementing evolution under a Hamiltonian using entanglement and classical communication is presented. This method improves on previous methods by requiring less entanglement and communication, as well as allowing more general Hamiltonians to be implemented. Next, a method for simulating evolution under a sparse Hamiltonian using a quantum computer is presented. When H acts on n qubits, and has at most a constant number of nonzero entries in each row/column, we may select any positive integer k such that the simulation requires O((log*n)t^(1+1/2k)) accesses to matrix entries of H. The second part of the talk is on adaptive measurements of optical phase. Standard measurement schemes, using each resource independently, lead to a phase uncertainty that scales as 1/sqrt(N). It has long been conjectured that it should be possible to achieve a precision limited only by the Heisenberg uncertainty principle, dramatically improving the scaling to 1/N. I present a Heisenberg-limited phase estimation procedure which has been demonstrated experimentally. We use multiple applications of the phase shift on unentangled single-photon states, and generalize Kitaev\\\'s phase estimation algorithm using adaptive measurement theory to achieve a standard deviation scaling at the Heisenberg limit.