Language and Machine: Introduction to Computer Science Theory