Computer Compilation Principles Lecture Notes