An Introduction to Symbolic Dynamics and Coding