Thinking as Computation: A First Course (The MIT Press)