Introduction to Languages, Machines, and Logic